@@ -61,14 +61,18 @@ function makeEvent(
6161describe ( 'download authorizer handler' , ( ) => {
6262 test ( 'returns request, when request is valid' , async ( ) => {
6363 const subject = 'F3FE88F4-4E9E-41EB-BF1E-DC299911968B' ;
64+ const userName = 'CIS2_555555555555' ;
6465
6566 lambdaCognitoAuthorizer . authorize . mockResolvedValue ( {
6667 success : true ,
6768 subject,
6869 } ) ;
6970
7071 const uri = `/${ subject } /template-id/proof1.pdf` ;
71- const cookie = `CognitoIdentityServiceProvider.${ userPoolClientId } .${ subject } .accessToken=jwt` ;
72+ const cookie = [
73+ `CognitoIdentityServiceProvider.${ userPoolClientId } .${ userName } .accessToken=jwt` ,
74+ `CognitoIdentityServiceProvider.${ userPoolClientId } .LastAuthUser=${ userName } ` ,
75+ ] . join ( '; ' ) ;
7276
7377 const event = mock < CloudFrontRequestEvent > ( makeEvent ( uri , cookie ) ) ;
7478
@@ -86,10 +90,35 @@ describe('download authorizer handler', () => {
8690 ) ;
8791 } ) ;
8892
93+ test ( 'returns denial if no access token is available for the LastAuthUser' , async ( ) => {
94+ const subject = 'F3FE88F4-4E9E-41EB-BF1E-DC299911968B' ;
95+ const userName = 'CIS2_555555555555' ;
96+
97+ lambdaCognitoAuthorizer . authorize . mockResolvedValue ( {
98+ success : true ,
99+ subject,
100+ } ) ;
101+
102+ const uri = `/${ subject } /template-id/proof1.pdf` ;
103+ const cookie = [
104+ `CognitoIdentityServiceProvider.${ userPoolClientId } .anotheruser.accessToken=jwt` ,
105+ `CognitoIdentityServiceProvider.${ userPoolClientId } .LastAuthUser=${ userName } ` ,
106+ ] . join ( '; ' ) ;
107+
108+ const event = mock < CloudFrontRequestEvent > ( makeEvent ( uri , cookie ) ) ;
109+
110+ const res = await handler ( event ) ;
111+
112+ expect ( res ) . toEqual ( denial ) ;
113+ expect ( mockLogger . warn ) . toHaveBeenCalledWith ( 'Cookie is missing' ) ;
114+
115+ expect ( lambdaCognitoAuthorizer . authorize ) . not . toHaveBeenCalled ( ) ;
116+ } ) ;
117+
89118 test ( 'returns denial if cognito configuration is not present in custom headers' , async ( ) => {
90119 const uri = '/subject/template-id/proof1.pdf' ;
91120 const cookie =
92- 'CognitoIdentityServiceProvider.user- pool-client-id.subject .accessToken=jwt' ;
121+ 'CognitoIdentityServiceProvider.pool.username .accessToken=jwt; CognitoIdentityServiceProvider.pool.LastAuthUser=username; ' ;
93122
94123 const event = mock < CloudFrontRequestEvent > (
95124 makeEvent ( uri , cookie , {
@@ -122,7 +151,12 @@ describe('download authorizer handler', () => {
122151
123152 test ( 'returns denial if authorization fails' , async ( ) => {
124153 const uri = '/subject/template-id/proof1.pdf' ;
125- const cookie = `CognitoIdentityServiceProvider.${ userPoolClientId } .subject.accessToken=jwt` ;
154+ const userName = 'CIS2-int_555555555555' ;
155+
156+ const cookie = [
157+ `CognitoIdentityServiceProvider.${ userPoolClientId } .${ userName } .accessToken=jwt` ,
158+ `CognitoIdentityServiceProvider.${ userPoolClientId } .LastAuthUser=${ userName } ` ,
159+ ] . join ( '; ' ) ;
126160
127161 lambdaCognitoAuthorizer . authorize . mockResolvedValue ( {
128162 success : false ,
@@ -151,6 +185,6 @@ describe('parseRequest', () => {
151185 makeEvent ( '/subject/file.txt' , undefined ) . Records [ 0 ] . cf . request
152186 ) ;
153187
154- expect ( parseRequest ( request ) . authorizationToken ) . toBe ( undefined ) ;
188+ expect ( parseRequest ( request ) . accessToken ) . toBe ( undefined ) ;
155189 } ) ;
156190} ) ;
0 commit comments