1
- import { newMockCognitoService } from "../__tests__/mockCognitoService" ;
2
- import { newMockTokenGenerator } from "../__tests__/mockTokenGenerator" ;
3
- import { newMockTriggers } from "../__tests__/mockTriggers" ;
4
- import { newMockUserPoolService } from "../__tests__/mockUserPoolService" ;
5
- import { TestContext } from "../__tests__/testContext" ;
1
+ import { newMockCognitoService } from "../__tests__/mockCognitoService" ;
2
+ import { newMockTokenGenerator } from "../__tests__/mockTokenGenerator" ;
3
+ import { newMockTriggers } from "../__tests__/mockTriggers" ;
4
+ import { newMockUserPoolService } from "../__tests__/mockUserPoolService" ;
5
+ import { TestContext } from "../__tests__/testContext" ;
6
6
import * as TDB from "../__tests__/testDataBuilder" ;
7
- import { CognitoService , Triggers , UserPoolService } from "../services" ;
8
- import { TokenGenerator } from "../services/tokenGenerator" ;
7
+ import { CognitoService , Triggers , UserPoolService } from "../services" ;
8
+ import { TokenGenerator } from "../services/tokenGenerator" ;
9
9
10
- import {
11
- GetToken ,
12
- GetTokenTarget ,
13
- } from "./getToken" ;
10
+ import { GetToken , GetTokenTarget } from "./getToken" ;
14
11
15
12
describe ( "GetToken target" , ( ) => {
16
- let target : GetTokenTarget ;
17
-
13
+ let getToken : GetTokenTarget ;
18
14
let mockCognitoService : jest . Mocked < CognitoService > ;
19
15
let mockTokenGenerator : jest . Mocked < TokenGenerator > ;
20
16
let mockTriggers : jest . Mocked < Triggers > ;
@@ -23,42 +19,84 @@ describe("GetToken target", () => {
23
19
24
20
beforeEach ( ( ) => {
25
21
mockUserPoolService = newMockUserPoolService ( {
26
- Id : userPoolClient . UserPoolId ,
22
+ Id : userPoolClient . UserPoolId ,
27
23
} ) ;
28
24
mockCognitoService = newMockCognitoService ( mockUserPoolService ) ;
29
25
mockCognitoService . getAppClient . mockResolvedValue ( userPoolClient ) ;
30
26
mockTriggers = newMockTriggers ( ) ;
31
27
mockTokenGenerator = newMockTokenGenerator ( ) ;
32
28
getToken = GetToken ( {
33
- triggers : mockTriggers ,
34
- cognito : mockCognitoService ,
35
- tokenGenerator : mockTokenGenerator ,
29
+ cognito : mockCognitoService ,
30
+ tokenGenerator : mockTokenGenerator ,
36
31
} ) ;
37
32
} ) ;
38
33
39
34
it ( "issues access tokens via refresh tokens" , async ( ) => {
40
35
mockTokenGenerator . generate . mockResolvedValue ( {
41
- AccessToken : "access" ,
42
- IdToken : "id" ,
43
- RefreshToken : "refresh" ,
36
+ AccessToken : "access" ,
37
+ IdToken : "id" ,
38
+ RefreshToken : "refresh" ,
44
39
} ) ;
45
40
46
41
const existingUser = TDB . user ( {
47
- RefreshTokens : [ "refresh-orig" ] ,
42
+ RefreshTokens : [ "refresh-orig" ] ,
48
43
} ) ;
49
44
mockUserPoolService . getUserByRefreshToken . mockResolvedValue ( existingUser ) ;
50
45
mockUserPoolService . listUserGroupMembership . mockResolvedValue ( [ ] ) ;
51
46
52
47
const response = await getToken (
53
- TestContext ,
54
- new URLSearchParams ( `client_id=${
55
- userPoolClient
56
- . ClientId } &grant_type=refresh_token&refresh_token=refresh-orig`) ) ;
57
- expect ( mockUserPoolService . getUserByRefreshToken )
58
- . toHaveBeenCalledWith ( TestContext , "refresh-orig" ) ;
48
+ TestContext ,
49
+ new URLSearchParams (
50
+ `client_id=${ userPoolClient . ClientId } &grant_type=refresh_token&refresh_token=refresh-orig`
51
+ )
52
+ ) ;
53
+ expect ( mockUserPoolService . getUserByRefreshToken ) . toHaveBeenCalledWith (
54
+ TestContext ,
55
+ "refresh-orig"
56
+ ) ;
59
57
expect ( mockUserPoolService . storeRefreshToken ) . not . toHaveBeenCalled ( ) ;
60
58
61
59
expect ( response . access_token ) . toEqual ( "access" ) ;
62
60
expect ( response . refresh_token ) . toEqual ( "refresh" ) ;
63
61
} ) ;
64
62
} ) ;
63
+
64
+ describe ( "GetToken target - Client Creds" , ( ) => {
65
+ let getToken : GetTokenTarget ;
66
+ let mockCognitoService : jest . Mocked < CognitoService > ;
67
+ let mockTokenGenerator : jest . Mocked < TokenGenerator > ;
68
+ let mockUserPoolService : jest . Mocked < UserPoolService > ;
69
+ const userPoolClient = TDB . appClient ( {
70
+ ClientSecret : "secret" ,
71
+ ClientId : "id" ,
72
+ } ) ;
73
+
74
+ beforeEach ( ( ) => {
75
+ mockUserPoolService = newMockUserPoolService ( {
76
+ Id : userPoolClient . UserPoolId ,
77
+ } ) ;
78
+ mockCognitoService = newMockCognitoService ( mockUserPoolService ) ;
79
+ mockCognitoService . getAppClient . mockResolvedValue ( userPoolClient ) ;
80
+ mockTokenGenerator = newMockTokenGenerator ( ) ;
81
+ getToken = GetToken ( {
82
+ cognito : mockCognitoService ,
83
+ tokenGenerator : mockTokenGenerator ,
84
+ } ) ;
85
+ } ) ;
86
+
87
+ it ( "issues access tokens via client credentials" , async ( ) => {
88
+ mockTokenGenerator . generateWithClientCreds . mockResolvedValue ( {
89
+ AccessToken : "access" ,
90
+ RefreshToken : null ,
91
+ IdToken : null ,
92
+ } ) ;
93
+
94
+ const response = await getToken (
95
+ TestContext ,
96
+ new URLSearchParams (
97
+ `client_id=${ userPoolClient . ClientId } &client_secret=${ userPoolClient . ClientSecret } &grant_type=client_credentials`
98
+ )
99
+ ) ;
100
+ expect ( response . access_token ) . toEqual ( "access" ) ;
101
+ } ) ;
102
+ } ) ;
0 commit comments