Expect objects to match OpenAPI documents
yarn add -D @nrk/expect-openapi
# or
npm add --dev @nrk/expect-openapi
jest.setup.ts
:
import { toMatchApiResponse, toMatchRef$ } from "@nrk/expect-openapi";
import expect from "expect";
expect.extend({ toMatchApiResponse, toMatchRef$ });
update the jest config:
setupFiles: ["<rootDir>/jest.setup.ts"],
import superagent from "superagent";
import openapi from "./openapi.json"; // OpenAPI 3 schema
describe("my api", () => {
it("should have valid /fantastic response, according to spec", async () => {
const url = `https://paspi.nrk.no/some/fantastic/path`;
const response = await superagent.get(url).accept("application/json");
// Asserts that:
// - mime-type matches
// - response code exists (or default)
// - the schema matches the response body (assumes it is JSON)
await expect(response).toMatchApiResponse(openapi, "get", "/fantastic");
});
});
import openapi from "./openapi.json"; // OpenAPI 3 schema
describe("my complex api", () => {
it("should match SimpleLink", async () => {
const myLink = { href: "/my/fantastic/link" };
// Asserts that:
// - the reference can be resolved
// - the resolved schema matches expected value
await expect(myLink).toMatchRef$(
openapi,
"#/components/schemas/SimpleLink"
);
});
});