@@ -79,13 +79,17 @@ describe('SelectProviderRequest', () => {
7979 let res = HttpMocks . createResponse ( )
8080 let serverUri = 'https://example.com'
8181
82+ // 'https%3A%2F%2Foriginal.com%2Fpath%23hash'
83+ const returnToUrl = encodeURIComponent ( 'https://original.com/path#hash' )
84+
8285 it ( 'should initialize a SelectProviderRequest instance' , ( ) => {
8386 let aliceWebId = 'https://alice.example.com'
8487 let oidcManager = { }
8588 let session = { }
8689 let req = {
8790 session,
8891 body : { webid : aliceWebId } ,
92+ query : { returnToUrl } ,
8993 app : { locals : { oidc : oidcManager , host : { serverUri } } }
9094 }
9195
@@ -95,6 +99,7 @@ describe('SelectProviderRequest', () => {
9599 expect ( request . oidcManager ) . to . equal ( oidcManager )
96100 expect ( request . session ) . to . equal ( session )
97101 expect ( request . serverUri ) . to . equal ( serverUri )
102+ expect ( request . returnToUrl ) . to . equal ( returnToUrl )
98103 } )
99104
100105 it ( 'should attempt to normalize an invalid webid uri' , ( ) => {
@@ -126,6 +131,19 @@ describe('SelectProviderRequest', () => {
126131 } )
127132 } )
128133
134+ describe ( 'saveReturnToUrl()' , ( ) => {
135+ it ( 'should save the returnToUrl in session' , ( ) => {
136+ let response = HttpMocks . createResponse ( )
137+ let session = { }
138+ let returnToUrl = encodeURIComponent ( 'https://example.com/path#hash' )
139+ let request = new SelectProviderRequest ( { response, session, returnToUrl } )
140+
141+ request . saveReturnToUrl ( )
142+
143+ expect ( request . session . returnToUrl ) . to . equal ( returnToUrl )
144+ } )
145+ } )
146+
129147 describe ( 'selectProvider()' , ( ) => {
130148 it ( 'should fetch the provider uri and redirect user to its /authorize endpoint' , ( ) => {
131149 let webId = 'https://example.com/#me'
@@ -178,11 +196,13 @@ describe('SelectProviderRequest', () => {
178196
179197 request . validate = sinon . stub ( ) . resolves ( )
180198 request . selectProvider = sinon . stub ( ) . resolves ( )
199+ request . saveReturnToUrl = sinon . stub ( )
181200
182201 return SelectProviderRequest . handlePost ( request )
183202 . then ( ( ) => {
184203 expect ( request . validate ) . to . have . been . called ( )
185204 expect ( request . selectProvider ) . to . have . been . called ( )
205+ expect ( request . saveReturnToUrl ) . to . have . been . called ( )
186206 } )
187207 } )
188208
0 commit comments