Skip to content

Commit 2101304

Browse files
author
Pavle
committed
Version 3.6.2
1 parent 4681398 commit 2101304

5 files changed

Lines changed: 181 additions & 67 deletions

Handlers/KnownUserApacheHandler.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ local function handle(customerId, secretKey, config, isIntegrationConfig, reques
135135

136136
if (validationResult:doRedirect()) then
137137
--Adding no cache headers to prevent browsers to cache requests
138-
request_rec.err_headers_out["Cache-Control"] = "no-cache, no-store, must-revalidate"
138+
request_rec.err_headers_out["Cache-Control"] = "no-cache, no-store, must-revalidate, max-age=0"
139139
request_rec.err_headers_out["Pragma"] = "no-cache"
140140
request_rec.err_headers_out["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
141141
--end

SDK/Tests/UserInQueueServiceTest.lua

Lines changed: 80 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ function UserInQueueServiceTest()
4949

5050
local function test_validateQueueRequest_ValidState_ExtendableCookie_NoCookieExtensionFromConfig_DoNotRedirectDoNotStoreCookieWithExtension()
5151
userInQueueStateCookieRepositoryMock.reset()
52-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, "queueId", nil, "idle")
52+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, true, "queueId", nil, "idle")
5353

5454
local eventConfig = models.QueueEventConfig.create()
5555
eventConfig.eventId = "e1"
@@ -76,7 +76,7 @@ function UserInQueueServiceTest()
7676

7777
local function test_validateQueueRequest_ValidState_ExtendableCookie_CookieExtensionFromConfig_DoNotRedirectDoStoreCookieWithExtension()
7878
userInQueueStateCookieRepositoryMock.reset()
79-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, "queueId", nil, "disabled")
79+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, true, "queueId", nil, "disabled")
8080

8181
local eventConfig = models.QueueEventConfig.create()
8282
eventConfig.eventId = "e1"
@@ -106,7 +106,7 @@ function UserInQueueServiceTest()
106106

107107
local function test_validateQueueRequest_ValidState_NoExtendableCookie_DoNotRedirectDoNotStoreCookieWithExtension()
108108
userInQueueStateCookieRepositoryMock.reset()
109-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, "queueId", 3, "idle")
109+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, true, "queueId", 3, "idle")
110110

111111
local eventConfig = models.QueueEventConfig.create()
112112
eventConfig.eventId = "e1"
@@ -128,7 +128,7 @@ function UserInQueueServiceTest()
128128

129129
local function test_validateQueueRequest_NoCookie_TampredToken_RedirectToErrorPageWithHashError_DoNotStoreCookie()
130130
userInQueueStateCookieRepositoryMock.reset()
131-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, nil, nil, nil)
131+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, false, nil, nil, nil)
132132

133133
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
134134
local eventConfig = models.QueueEventConfig.create()
@@ -162,13 +162,13 @@ function UserInQueueServiceTest()
162162
assert( os.time() - timestamp < 100 )
163163
local urlWithoutTimeStamp = result.redirectUrl:gsub(tsPart, "")
164164
assert( urlWithoutTimeStamp == expectedErrorUrl )
165-
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) ~= nil )
165+
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) == nil )
166166
end
167167
test_validateQueueRequest_NoCookie_TampredToken_RedirectToErrorPageWithHashError_DoNotStoreCookie()
168168

169169
local function test_validateQueueRequest_NoCookie_ExpiredTimeStampInToken_RedirectToErrorPageWithTimeStampError_DoNotStoreCookie()
170170
userInQueueStateCookieRepositoryMock.reset()
171-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, nil, nil, nil)
171+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, false, nil, nil, nil)
172172

173173
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
174174
local eventConfig = models.QueueEventConfig.create()
@@ -201,13 +201,13 @@ function UserInQueueServiceTest()
201201
assert( os.time() - timestamp < 100 )
202202
local urlWithoutTimeStamp = result.redirectUrl:gsub(tsPart, "")
203203
assert( urlWithoutTimeStamp == expectedErrorUrl )
204-
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) ~= nil )
204+
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) == nil )
205205
end
206206
test_validateQueueRequest_NoCookie_ExpiredTimeStampInToken_RedirectToErrorPageWithTimeStampError_DoNotStoreCookie()
207207

208208
local function test_validateQueueRequest_NoCookie_EventIdMismatch_RedirectToErrorPageWithEventIdMissMatchError_DoNotStoreCookie()
209209
userInQueueStateCookieRepositoryMock.reset()
210-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, nil, nil, nil)
210+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, false, nil, nil, nil)
211211

212212
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
213213
local eventConfig = models.QueueEventConfig.create()
@@ -240,13 +240,13 @@ function UserInQueueServiceTest()
240240
assert( os.time() - timestamp < 100 )
241241
local urlWithoutTimeStamp = result.redirectUrl:gsub(tsPart, "")
242242
assert( urlWithoutTimeStamp == expectedErrorUrl )
243-
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) ~= nil )
243+
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) == nil )
244244
end
245245
test_validateQueueRequest_NoCookie_EventIdMismatch_RedirectToErrorPageWithEventIdMissMatchError_DoNotStoreCookie()
246246

247247
local function test_validateQueueRequest_NoCookie_ValidToken_ExtendableCookie_DoNotRedirect_StoreExtendableCookie()
248248
userInQueueStateCookieRepositoryMock.reset()
249-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, nil, nil, nil)
249+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, false, nil, nil, nil)
250250

251251
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
252252
local eventConfig = models.QueueEventConfig.create()
@@ -281,7 +281,7 @@ function UserInQueueServiceTest()
281281

282282
local function test_validateQueueRequest_NoCookie_ValidToken_CookieValidityMinuteFromToken_DoNotRedirect_StoreNonExtendableCookie()
283283
userInQueueStateCookieRepositoryMock.reset()
284-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, nil, nil, nil)
284+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, false, nil, nil, nil)
285285

286286
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
287287
local eventConfig = models.QueueEventConfig.create()
@@ -316,7 +316,7 @@ function UserInQueueServiceTest()
316316

317317
local function test_NoCookie_NoValidToken_WithoutToken_RedirectToQueue()
318318
userInQueueStateCookieRepositoryMock.reset()
319-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, nil, nil, nil)
319+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, false, nil, nil, nil)
320320

321321
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
322322
local eventConfig = models.QueueEventConfig.create()
@@ -348,13 +348,13 @@ function UserInQueueServiceTest()
348348
assert( result.eventId == 'e1' )
349349
assert( result.queueId == nil )
350350
assert( result.redirectUrl == expectedRedirectUrl )
351-
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) ~= nil )
351+
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) == nil )
352352
end
353353
test_NoCookie_NoValidToken_WithoutToken_RedirectToQueue()
354354

355355
local function test_ValidateRequest_NoCookie_WithoutToken_RedirectToQueue_NotargetUrl()
356356
userInQueueStateCookieRepositoryMock.reset()
357-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, nil, nil, nil)
357+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, false, nil, nil, nil)
358358

359359
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
360360
local eventConfig = models.QueueEventConfig.create()
@@ -384,13 +384,73 @@ function UserInQueueServiceTest()
384384
assert( result.eventId == 'e1' )
385385
assert( result.queueId == nil )
386386
assert( result.redirectUrl == expectedRedirectUrl )
387-
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) ~= nil )
387+
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) == nil )
388388
end
389-
test_ValidateRequest_NoCookie_WithoutToken_RedirectToQueue_NotargetUrl()
389+
test_ValidateRequest_NoCookie_WithoutToken_RedirectToQueue_NotargetUrl()
390+
391+
local function test_validateQueueRequest_InvalidCookie_InvalidToken_CancelCookie()
392+
userInQueueStateCookieRepositoryMock.reset()
393+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, false, nil, nil, nil)
394+
395+
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
396+
local eventConfig = models.QueueEventConfig.create()
397+
eventConfig.eventId = "e1"
398+
eventConfig.queueDomain = "testDomain.com"
399+
eventConfig.cookieValidityMinute = 10
400+
eventConfig.extendCookieValidity = true
401+
eventConfig.version = 11
402+
eventConfig.culture = 'en-US'
403+
eventConfig.layoutName = 'testlayout'
404+
eventConfig.actionName = "QueueAction"
405+
local url = "http://test.test.com?b=h"
406+
407+
local token = ""
408+
409+
local result = userInQueueService.validateQueueRequest(url, "ts_sasa~cv_adsasa~ce_falwwwse~q_944c1f44-60dd-4e37-aabc-f3e4bb1c8895", eventConfig, "testCustomer", key)
410+
411+
assert( next(userInQueueStateCookieRepositoryMock.storeCall) == nil )
412+
assert( result:doRedirect() )
413+
assert( result.eventId == 'e1' )
414+
assert( result.queueId == nil )
415+
assert( result.actionName == eventConfig.actionName )
416+
assert( utils.startsWith(result.redirectUrl, "https://testDomain.com/error/hash/?c=testCustomer&e=e1") )
417+
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) ~= nil )
418+
end
419+
test_validateQueueRequest_InvalidCookie_InvalidToken_CancelCookie()
420+
421+
local function test_validateQueueRequest_NoCookie_InvalidToken()
422+
userInQueueStateCookieRepositoryMock.reset()
423+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, false, nil, nil, nil)
424+
425+
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
426+
local eventConfig = models.QueueEventConfig.create()
427+
eventConfig.eventId = "e1"
428+
eventConfig.queueDomain = "testDomain.com"
429+
eventConfig.cookieValidityMinute = 10
430+
eventConfig.extendCookieValidity = true
431+
eventConfig.version = 11
432+
eventConfig.culture = 'en-US'
433+
eventConfig.layoutName = 'testlayout'
434+
eventConfig.actionName = "QueueAction"
435+
local url = "http://test.test.com?b=h"
436+
437+
local token = ""
438+
439+
local result = userInQueueService.validateQueueRequest(url, "ts_sasa~cv_adsasa~ce_falwwwse~q_944c1f44-60dd-4e37-aabc-f3e4bb1c8895", eventConfig, "testCustomer", key)
440+
441+
assert( next(userInQueueStateCookieRepositoryMock.storeCall) == nil )
442+
assert( result:doRedirect() )
443+
assert( result.eventId == 'e1' )
444+
assert( result.queueId == nil )
445+
assert( result.actionName == eventConfig.actionName )
446+
assert( utils.startsWith(result.redirectUrl, "https://testDomain.com/error/hash/?c=testCustomer&e=e1") )
447+
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) == nil )
448+
end
449+
test_validateQueueRequest_NoCookie_InvalidToken()
390450

391-
local function test_validateQueueRequest_NoCookie_InValidToken()
451+
local function test_validateQueueRequest_InvalidCookie_InvalidToken_CancelCookie()
392452
userInQueueStateCookieRepositoryMock.reset()
393-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(false, nil, nil, nil)
453+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, false, nil, nil, nil)
394454

395455
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
396456
local eventConfig = models.QueueEventConfig.create()
@@ -416,11 +476,11 @@ function UserInQueueServiceTest()
416476
assert( utils.startsWith(result.redirectUrl, "https://testDomain.com/error/hash/?c=testCustomer&e=e1") )
417477
assert( next(userInQueueStateCookieRepositoryMock.cancelQueueCookieCall) ~= nil )
418478
end
419-
test_validateQueueRequest_NoCookie_InValidToken()
479+
test_validateQueueRequest_InvalidCookie_InvalidToken_CancelCookie()
420480

421481
local function test_validateCancelRequest()
422482
userInQueueStateCookieRepositoryMock.reset()
423-
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, "queueid", 3, "idle")
483+
userInQueueStateCookieRepositoryMock.returnThisState = userInQueueStateCookieRepositoryMock.StateInfo.create(true, true, "queueid", 3, "idle")
424484

425485
local key = "4e1db821-a825-49da-acd0-5d376f2068db"
426486
local eventConfig = models.CancelEventConfig.create()

SDK/Tests/UserInQueueStateCookieRepositoryTest.lua

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,8 @@ function UserInQueueStateCookieRepositoryTest()
260260
state = userInQueueStateCookieRepository.getState(eventId, 10, secretKey, true)
261261

262262
assert( state:isStateExtendable() )
263-
assert( state.isValid )
263+
assert( state.isValid )
264+
assert( state.isFound )
264265
assert( state.queueId == queueId )
265266
assert( state.redirectType == "queue" )
266267
end
@@ -278,7 +279,8 @@ function UserInQueueStateCookieRepositoryTest()
278279
iHelpers.response.setCookie(cookieKey, "EventId=" .. eventId .. "&QueueId=" .. queueId .. "&RedirectType=queue&IssueTime=" .. issueTime .. "&Hash=" .. hash, os.time() + (24*60*60), cookieDomain)
279280
state = userInQueueStateCookieRepository.getState(eventId, 10, secretKey, true)
280281

281-
assert(state.isValid == false )
282+
assert(state.isValid == false )
283+
assert(state.isFound )
282284
end
283285
test_getState_oldCookie_invalid_expiredCookie_extendable()
284286

@@ -294,7 +296,8 @@ function UserInQueueStateCookieRepositoryTest()
294296
iHelpers.response.setCookie(cookieKey, "EventId=" .. eventId .. "&QueueId=" .. queueId .. "&FixedValidityMins=3&RedirectType=idle&IssueTime=" .. issueTime .. "&Hash=" .. hash, os.time() + (24*60*60), cookieDomain)
295297
state = userInQueueStateCookieRepository.getState(eventId, 10, secretKey, true)
296298

297-
assert( state.isValid == false )
299+
assert( state.isValid == false )
300+
assert( state.isFound )
298301
end
299302
test_getState_oldCookie_invalid_expiredCookie_nonExtendable()
300303

@@ -311,10 +314,24 @@ function UserInQueueStateCookieRepositoryTest()
311314
state = userInQueueStateCookieRepository.getState(eventId, 10, secretKey, true)
312315

313316
assert( state:isStateExtendable() == false )
314-
assert( state.isValid )
317+
assert( state.isValid )
318+
assert( state.isFound )
315319
assert( state.queueId == queueId )
316320
assert( state.redirectType == "idle" )
317321
end
318-
test_getState_validCookieFormat_nonExtendable()
322+
test_getState_validCookieFormat_nonExtendable()
323+
324+
local function test_getState_noCookie()
325+
mockCookies = { } -- reset
326+
327+
eventId = "event1"
328+
secretKey = "4e1deweb821-a82ew5-49da-acdqq0-5d3476f2068db"
329+
330+
state = userInQueueStateCookieRepository.getState(eventId, 10, secretKey, true)
331+
332+
assert( state.isFound == false )
333+
assert( state.isValid == false )
334+
end
335+
test_getState_noCookie()
319336
end
320337
UserInQueueStateCookieRepositoryTest()

0 commit comments

Comments
 (0)