@nrk/expect-openapi
    TypeScript icon, indicating that this package has built-in type declarations

    2.5.0 • Public • Published

    expect-openapi npm

    Expect objects to match OpenAPI documents

    Setup

    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"],

    Expect response to match OpenAPI path

    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 = `http://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");
      });
    });

    Expect object to match a part of a OpenAPI document

    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"
        );
      });
    });

    Keywords

    none

    Install

    npm i @nrk/expect-openapi

    DownloadsWeekly Downloads

    50

    Version

    2.5.0

    License

    MIT

    Unpacked Size

    18.4 kB

    Total Files

    17

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar