Skip to content

Commit

Permalink
chore: add with authorization reporting tests
Browse files Browse the repository at this point in the history
  • Loading branch information
marcellmueller committed Jul 2, 2024
1 parent 738efec commit 601e587
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ export const withAuthorizationRegistration: MiddlewareFactory = (
return NextResponse.rewrite(request.nextUrl);
} else {
// Handle unauthenticated requests
return NextResponse.redirect(new URL(`/`, request.url));
return NextResponse.redirect(new URL(`/onboarding`, request.url));
}
};
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import { NextURL } from "next/dist/server/web/next-url";
import { NextFetchEvent, NextRequest, NextResponse } from "next/server";
import { instance, mock, reset, when } from "ts-mockito";
import middleware from "../middleware";
import { getToken } from "@bciers/testConfig/mocks";
import { mockCasUserToken } from "@bciers/testConfig/data/tokens";

const domain = "https://localhost:3000";
const mockedRequest: NextRequest = mock(NextRequest);

vi.spyOn(NextResponse, "redirect");
vi.spyOn(NextResponse, "rewrite");

const mockNextFetchEvent: NextFetchEvent = mock(NextFetchEvent);

describe("withAuthorizationReporting middleware", () => {
beforeEach(() => {
vi.clearAllMocks();
});
afterEach(() => {
reset(mockedRequest);
});

it("redirects to the onboarding page if the user is not authenticated", async () => {
const nextUrl = new NextURL(`${domain}/reporting/report`);

when(mockedRequest.nextUrl).thenReturn(nextUrl);
when(mockedRequest.url).thenReturn(domain);

const result = await middleware(
instance(mockedRequest),
mockNextFetchEvent,
);
expect(NextResponse.redirect).toHaveBeenCalledOnce();
expect(NextResponse.redirect).toHaveBeenCalledWith(
new URL("/onboarding", domain),
);
expect(result?.status).toBe(307);
});

it("builds the correct URL for authenticated users", async () => {
getToken.mockResolvedValue(mockCasUserToken);
const nextUrl = new NextURL(`${domain}/reporting/report`);

when(mockedRequest.nextUrl).thenReturn(nextUrl);
when(mockedRequest.url).thenReturn(domain);

const result = await middleware(
instance(mockedRequest),
mockNextFetchEvent,
);
const responseUrl = new NextURL(
`${domain}/${mockCasUserToken.identity_provider}/${mockCasUserToken.app_role}/report`,
);
expect(NextResponse.rewrite).toHaveBeenCalledOnce();
expect(NextResponse.rewrite).toHaveBeenCalledWith(responseUrl);
expect(result?.status).toBe(200);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export const withAuthorizationReporting: MiddlewareFactory = (
return NextResponse.rewrite(request.nextUrl);
} else {
// Handle unauthenticated requests
return NextResponse.redirect(new URL(`/dashboard`, request.url));
return NextResponse.redirect(new URL(`/onboarding`, request.url));
}
};
};

0 comments on commit 601e587

Please sign in to comment.