Skip to content

Commit 01ad65d

Browse files
TASK Sonar fix: reduce duplication in is-valid-signin callback test
1 parent c8010ec commit 01ad65d

File tree

1 file changed

+16
-30
lines changed

1 file changed

+16
-30
lines changed

src/utils/auth/callbacks/is-valid-signin.test.ts

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { isValidSignIn } from "@src/utils/auth/callbacks/is-valid-signin";
2+
import type { DecodedIdToken } from "@src/utils/auth/types";
23
import { AppConfig } from "@src/utils/config";
34
import { appConfigBuilder } from "@test-data/config/builders";
5+
import { createTypeBuilder } from "@test-data/meta-builder";
46
import { jwtDecode } from "jwt-decode";
57
import { Account } from "next-auth";
68

@@ -13,6 +15,15 @@ describe("isValidSignIn", () => {
1315
.andNHS_LOGIN_CLIENT_ID("mock-client-id")
1416
.build();
1517

18+
const decodedIdTokenBuilder = () => {
19+
return createTypeBuilder<DecodedIdToken>({
20+
iss: mockConfig.NHS_LOGIN_URL,
21+
aud: mockConfig.NHS_LOGIN_CLIENT_ID,
22+
identity_proofing_level: "P9",
23+
vot: "P9.Cp.Ck",
24+
});
25+
};
26+
1627
beforeEach(() => {
1728
jest.clearAllMocks();
1829
});
@@ -32,12 +43,7 @@ describe("isValidSignIn", () => {
3243
it("should return true if token is valid", () => {
3344
const mockAccount = { id_token: "valid-token" } as Account;
3445

35-
(jwtDecode as jest.Mock).mockReturnValue({
36-
iss: mockConfig.NHS_LOGIN_URL,
37-
aud: mockConfig.NHS_LOGIN_CLIENT_ID,
38-
identity_proofing_level: "P9",
39-
vot: "P9.Cp.Ck",
40-
});
46+
(jwtDecode as jest.Mock).mockReturnValue(decodedIdTokenBuilder().build());
4147

4248
const result = isValidSignIn(mockAccount, mockConfig);
4349
expect(result).toBe(true);
@@ -46,12 +52,7 @@ describe("isValidSignIn", () => {
4652
it("should return false and logs if iss is invalid", () => {
4753
const mockAccount = { id_token: "invalid-token" } as Account;
4854

49-
(jwtDecode as jest.Mock).mockReturnValue({
50-
iss: "incorrect-issuer",
51-
aud: mockConfig.NHS_LOGIN_CLIENT_ID,
52-
identity_proofing_level: "P9",
53-
vot: "P9.Cp.Ck",
54-
});
55+
(jwtDecode as jest.Mock).mockReturnValue(decodedIdTokenBuilder().withIss("incorrect-issuer").build());
5556

5657
const result = isValidSignIn(mockAccount, mockConfig);
5758
expect(result).toBe(false);
@@ -60,12 +61,7 @@ describe("isValidSignIn", () => {
6061
it("should return false and logs if aud is invalid", () => {
6162
const mockAccount = { id_token: "invalid-token" } as Account;
6263

63-
(jwtDecode as jest.Mock).mockReturnValue({
64-
iss: mockConfig.NHS_LOGIN_URL,
65-
aud: "incorrect-audience",
66-
identity_proofing_level: "P9",
67-
vot: "P9.Cp.Ck",
68-
});
64+
(jwtDecode as jest.Mock).mockReturnValue(decodedIdTokenBuilder().withAud("incorrect-audience").build());
6965

7066
const result = isValidSignIn(mockAccount, mockConfig);
7167
expect(result).toBe(false);
@@ -74,12 +70,7 @@ describe("isValidSignIn", () => {
7470
it("should return false and logs if identity_proofing_level is invalid", () => {
7571
const mockAccount = { id_token: "invalid-token" } as Account;
7672

77-
(jwtDecode as jest.Mock).mockReturnValue({
78-
iss: mockConfig.NHS_LOGIN_URL,
79-
aud: mockConfig.NHS_LOGIN_CLIENT_ID,
80-
identity_proofing_level: "P0",
81-
vot: "P9.Cp.Ck",
82-
});
73+
(jwtDecode as jest.Mock).mockReturnValue(decodedIdTokenBuilder().withIdentity_proofing_level("P0").build());
8374

8475
const result = isValidSignIn(mockAccount, mockConfig);
8576
expect(result).toBe(false);
@@ -88,12 +79,7 @@ describe("isValidSignIn", () => {
8879
it("should return false and logs if vot is invalid", () => {
8980
const mockAccount = { id_token: "invalid-token" } as Account;
9081

91-
(jwtDecode as jest.Mock).mockReturnValue({
92-
iss: mockConfig.NHS_LOGIN_URL,
93-
aud: mockConfig.NHS_LOGIN_CLIENT_ID,
94-
identity_proofing_level: "P9",
95-
vot: "P9.Sausages",
96-
});
82+
(jwtDecode as jest.Mock).mockReturnValue(decodedIdTokenBuilder().withVot("P9.Sausages").build());
9783

9884
const result = isValidSignIn(mockAccount, mockConfig);
9985
expect(result).toBe(false);

0 commit comments

Comments
 (0)