psn-api
Version:
A well-tested library that lets you get trophy, user, and game data from the PlayStation Network.
53 lines (42 loc) • 1.47 kB
text/typescript
import { rest } from "msw";
import { setupServer } from "msw/node";
import { AUTH_BASE_URL } from "./AUTH_BASE_URL";
import { exchangeNpssoForAccessCode } from "./exchangeNpssoForAccessCode";
const server = setupServer();
describe("Function: exchangeNpssoForAccessCode", () => {
// MSW Setup
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
it("is defined #sanity", () => {
// ASSERT
expect(exchangeNpssoForAccessCode).toBeDefined();
});
it("can make a call to exchange an NPSSO token for an access code", async () => {
// ARRANGE
const mockCode = "v3.ABCDEF";
const mockLocationHeaderResponse = `com.playstation.PlayStationApp://redirect/?code=${mockCode}&cid=36e3823a-8049-4c36-9021-b154315ae2ad`;
server.use(
rest.get(`${AUTH_BASE_URL}/authorize`, (_, res, ctx) => {
return res(
ctx.status(302),
ctx.set("Location", mockLocationHeaderResponse)
);
})
);
// ACT
const code = await exchangeNpssoForAccessCode("mockNpsso");
// ASSERT
expect(code).toEqual(mockCode);
});
it("throws an error if we receive an unexpected response", async () => {
// ARRANGE
server.use(
rest.get(`${AUTH_BASE_URL}/authorize`, (_, res, ctx) => {
return res(ctx.json({}));
})
);
// ASSERT
await expect(exchangeNpssoForAccessCode("mockNpsso")).rejects.toThrow();
});
});