UNPKG

fastify-openapi-glue

Version:

generate a fastify configuration from an openapi specification

80 lines (68 loc) 2.44 kB
import { createRequire } from "node:module"; import { test } from "node:test"; import { Generator } from "../lib/generator.js"; import { templateTypes } from "../lib/templates/templateTypes.js"; const importJSON = createRequire(import.meta.url); const localFile = (fileName) => new URL(fileName, import.meta.url).pathname; const specPath = localFile("./petstore-swagger.v2.json"); const specPath3 = localFile("./petstore-openapi.v3.json"); const projectName = `generated-${templateTypes[0]}-project`; const dir = localFile("../examples"); const nonExistentDir = localFile("./non-existent-directory"); const spec301 = await importJSON(specPath3); const checksumOnly = false; const localPlugin = true; const noLocalPlugin = false; const localGenerator = new Generator(checksumOnly, localPlugin); const generator = new Generator(checksumOnly, noLocalPlugin); test("generator generates V3.0.0 project without error", async (t) => { try { await generator.parse(specPath3); await generator.generateProject(dir, projectName); t.assert.ok(true, "no error occurred"); } catch (e) { t.assert.fail(e.message); } }); test("generator generates V3.0.1 project without error", async (t) => { spec301["openapi"] = "3.0.1"; try { await generator.parse(spec301); await generator.generateProject(dir, projectName); t.assert.ok(true, "no error occurred"); } catch (e) { t.assert.fail(e.message); } }); test("generator generates project with local plugin without error", async (t) => { try { await localGenerator.parse(specPath); await localGenerator.generateProject(dir, projectName); t.assert.ok(true, "no error occurred"); } catch (e) { t.assert.fail(e.message); } }); test("generator throws error on non-existent basedir", async (t) => { try { await generator.parse(specPath); await generator.generateProject(nonExistentDir, projectName); t.assert.fail("no error occurred"); } catch (e) { t.assert.equal(e.code, "ENOENT", "got expected error"); } }); // this one needs to be last for (const type of templateTypes) { const project = `generated-${type}-project`; const generator = new Generator(checksumOnly, localPlugin); await test(`generator generates ${type} project without error`, async (t) => { try { await generator.parse(specPath); await generator.generateProject(dir, project, type); t.assert.ok(true, "no error occurred"); } catch (e) { t.assert.fail(e.message); } }); }