Skip to content

Commit b860887

Browse files
committed
Refactorings to
-content of debug cookies, e.g. variable names, separators and values (url encoded) -error pages redirect urls
1 parent 4a28770 commit b860887

File tree

10 files changed

+228
-176
lines changed

10 files changed

+228
-176
lines changed

QueueIT.KnownUserV3.SDK.Tests/KnownUserTest.cs

Lines changed: 32 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Web;
55
using Xunit;
66
using System.Collections.Specialized;
7+
using System.Linq;
78

89
namespace QueueIT.KnownUserV3.SDK.Tests
910
{
@@ -846,20 +847,15 @@ public void ValidateRequestByIntegrationConfig_Debug()
846847
.ValidateRequestByIntegrationConfig($"http://test.com?event1=true",
847848
queueitToken, customerIntegration, "customerId", "secretKey");
848849

849-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["pureUrl"]==
850-
"http://test.com?event1=true");
851-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["queueitToken"] ==
852-
queueitToken);
853-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["configVersion"] ==
854-
"3");
855-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["OriginalUrl"] ==
856-
"http://test.com/?event1=true&queueittoken=queueittokenvalue");
857-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["matchedConfig"] ==
858-
"event1action");
859-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["targetUrl"] ==
860-
"http://test.com?event1=true");
861-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["queueConfig"] ==
862-
"EventId:event1&Version:3&QueueDomain:knownusertest.queue-it.net&CookieDomain:.test.com&ExtendCookieValidity:True&CookieValidityMinute:20&LayoutName:Christmas Layout by Queue-it&Culture:da-DK");
850+
// Assert
851+
var cookieValues = HttpUtility.UrlDecode(httpContextMock.MockResponse.Cookies["queueitdebug"].Value).Split('|');
852+
Assert.True(cookieValues.Any(v => v == $"PureUrl=http://test.com?event1=true"));
853+
Assert.True(cookieValues.Any(v => v == $"ConfigVersion=3"));
854+
Assert.True(cookieValues.Any(v => v == $"MatchedConfig=event1action"));
855+
Assert.True(cookieValues.Any(v => v == $"QueueitToken={queueitToken}"));
856+
Assert.True(cookieValues.Any(v => v == $"OriginalUrl=http://test.com/?event1=true&queueittoken=queueittokenvalue"));
857+
Assert.True(cookieValues.Any(v => v == $"TargetUrl=http://test.com?event1=true"));
858+
Assert.True(cookieValues.Any(v => v == $"QueueConfig=EventId:event1&Version:3&QueueDomain:knownusertest.queue-it.net&CookieDomain:.test.com&ExtendCookieValidity:True&CookieValidityMinute:20&LayoutName:Christmas Layout by Queue-it&Culture:da-DK"));
863859
}
864860

865861
[Fact]
@@ -889,9 +885,8 @@ public void ValidateRequestByIntegrationConfig_Debug_WithoutMatch()
889885
UserInQueueServiceMock mock = new UserInQueueServiceMock();
890886
KnownUser._UserInQueueService = (mock);
891887

892-
893888
CustomerIntegration customerIntegration = new CustomerIntegration();
894-
customerIntegration.Integrations = new IntegrationConfigModel[] { };
889+
customerIntegration.Integrations = new IntegrationConfigModel[] { };
895890
customerIntegration.Version = 10;
896891

897892
var queueitToken = QueueITTokenGenerator.GenerateToken(DateTime.UtcNow, "event1",
@@ -901,17 +896,15 @@ public void ValidateRequestByIntegrationConfig_Debug_WithoutMatch()
901896
.ValidateRequestByIntegrationConfig("http://test.com?event1=true",
902897
queueitToken, customerIntegration, "customerId", "secretKey");
903898

904-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["pureUrl"] ==
905-
"http://test.com?event1=true");
906-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["queueitToken"] ==
907-
queueitToken);
908-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["configVersion"] ==
909-
"10");
910-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["OriginalUrl"] ==
911-
"http://test.com/?event1=true&queueittoken=queueittokenvalue");
912-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["matchedConfig"] ==
913-
"NULL");
914-
}
899+
// Assert
900+
var cookieValues = HttpUtility.UrlDecode(httpContextMock.MockResponse.Cookies["queueitdebug"].Value).Split('|');
901+
Assert.True(cookieValues.Any(v => v == $"PureUrl=http://test.com?event1=true"));
902+
Assert.True(cookieValues.Any(v => v == $"QueueitToken={queueitToken}"));
903+
Assert.True(cookieValues.Any(v => v == $"ConfigVersion=10"));
904+
Assert.True(cookieValues.Any(v => v == $"OriginalUrl=http://test.com/?event1=true&queueittoken=queueittokenvalue"));
905+
Assert.True(cookieValues.Any(v => v == $"MatchedConfig=NULL"));
906+
}
907+
915908
[Fact]
916909
public void ValidateRequestByIntegrationConfig_Debug_WithoutMatch_NotValidHash()
917910
{
@@ -998,15 +991,12 @@ public void ResolveQueueRequestByLocalConfig_Debug()
998991
.ResolveQueueRequestByLocalConfig("http://test.com?event1=true",
999992
queueitToken, eventConfig, "customerId", "secretKey");
1000993

1001-
1002-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["queueitToken"] ==
1003-
queueitToken);
1004-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["OriginalUrl"] ==
1005-
"http://test.com/?event1=true&queueittoken=queueittokenvalue");
1006-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["targetUrl"] ==
1007-
"http://test.com?event1=true");
1008-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["queueConfig"] ==
1009-
"EventId:eventId&Version:12&QueueDomain:queueDomain&CookieDomain:cookieDomain&ExtendCookieValidity:True&CookieValidityMinute:10&LayoutName:layoutName&Culture:culture");
994+
// Assert
995+
var cookieValues = HttpUtility.UrlDecode(httpContextMock.MockResponse.Cookies["queueitdebug"].Value).Split('|');
996+
Assert.True(cookieValues.Any(v => v == $"QueueitToken={queueitToken}"));
997+
Assert.True(cookieValues.Any(v => v == $"OriginalUrl=http://test.com/?event1=true&queueittoken=queueittokenvalue"));
998+
Assert.True(cookieValues.Any(v => v == $"TargetUrl=http://test.com?event1=true"));
999+
Assert.True(cookieValues.Any(v => v == $"QueueConfig=EventId:eventId&Version:12&QueueDomain:queueDomain&CookieDomain:cookieDomain&ExtendCookieValidity:True&CookieValidityMinute:10&LayoutName:layoutName&Culture:culture"));
10101000
}
10111001

10121002
[Fact]
@@ -1051,15 +1041,12 @@ public void CancelRequestByLocalConfig_Debug()
10511041
.CancelRequestByLocalConfig("http://test.com?event1=true",
10521042
queueitToken, eventConfig, "customerId", "secretKey");
10531043

1054-
1055-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["queueitToken"] ==
1056-
queueitToken);
1057-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["OriginalUrl"] ==
1058-
"http://test.com/?event1=true&queueittoken=queueittokenvalue");
1059-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["targetUrl"] ==
1060-
"http://test.com?event1=true");
1061-
Assert.True(httpContextMock.MockResponse.Cookies["queueitdebug"].Values["cancelConfig"] ==
1062-
"EventId:eventId&Version:12&QueueDomain:queueDomain&CookieDomain:cookieDomain");
1044+
// Assert
1045+
var cookieValues = HttpUtility.UrlDecode(httpContextMock.MockResponse.Cookies["queueitdebug"].Value).Split('|');
1046+
Assert.True(cookieValues.Any(v => v == $"QueueitToken={queueitToken}"));
1047+
Assert.True(cookieValues.Any(v => v == $"OriginalUrl=http://test.com/?event1=true&queueittoken=queueittokenvalue"));
1048+
Assert.True(cookieValues.Any(v => v == $"TargetUrl=http://test.com?event1=true"));
1049+
Assert.True(cookieValues.Any(v => v == $"CancelConfig=EventId:eventId&Version:12&QueueDomain:queueDomain&CookieDomain:cookieDomain"));
10631050
}
10641051
}
10651052
}

QueueIT.KnownUserV3.SDK.Tests/UserInQueueServiceTest.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public void ValidateRequest_NoCookie_TampredToken_RedirectToErrorPageWithHashErr
140140
queueitToken = queueitToken.Replace("False", "True");
141141
var targetUrl = "http://test.test.com?b=h";
142142
var knownUserVersion = UserInQueueService.SDK_VERSION;
143-
var expectedErrorUrl = $"https://testDomain.com/error/hash?c=testCustomer&e=e1" +
143+
var expectedErrorUrl = $"https://testDomain.com/error/hash/?c=testCustomer&e=e1" +
144144
$"&ver=v3-aspnet-{knownUserVersion}"
145145
+ $"&cver=100"
146146
+ $"&queueittoken={queueitToken}"
@@ -191,7 +191,7 @@ out hash
191191
);
192192
var targetUrl = "http://test.test.com?b=h";
193193
var knownUserVersion = UserInQueueService.SDK_VERSION;
194-
var expectedErrorUrl = $"https://testDomain.com/error/timestamp?c=testCustomer&e=e1" +
194+
var expectedErrorUrl = $"https://testDomain.com/error/timestamp/?c=testCustomer&e=e1" +
195195
$"&ver=v3-aspnet-{knownUserVersion}"
196196
+ $"&cver=100"
197197
+ $"&queueittoken={queueitToken}"
@@ -242,7 +242,7 @@ out hash
242242

243243
var targetUrl = "http://test.test.com?b=h";
244244
var knownUserVersion = UserInQueueService.SDK_VERSION;
245-
var expectedErrorUrl = $"https://testDomain.com/error/eventid?c=testCustomer&e=e2" +
245+
var expectedErrorUrl = $"https://testDomain.com/error/eventid/?c=testCustomer&e=e2" +
246246
$"&ver=v3-aspnet-{knownUserVersion}" + "&cver=10"
247247
+ $"&queueittoken={queueitToken}"
248248
+ $"&t={HttpUtility.UrlEncode(targetUrl)}";
@@ -447,7 +447,7 @@ public void ValidateRequest_NoCookie_InValidToken()
447447
var result = testObject.ValidateQueueRequest(targetUrl, "ts_sasa~cv_adsasa~ce_falwwwse~q_944c1f44-60dd-4e37-aabc-f3e4bb1c8895", config, "testCustomer", "key");
448448

449449
Assert.True(result.DoRedirect);
450-
Assert.True(result.RedirectUrl.StartsWith($"https://testDomain.com/error/hash?c=testCustomer&e=e1&ver=v3-aspnet-{knownUserVersion}&cver=10&l=testlayout&queueittoken=ts_sasa~cv_adsasa~ce_falwwwse~q_944c1f44-60dd-4e37-aabc-f3e4bb1c8895&"));
450+
Assert.True(result.RedirectUrl.StartsWith($"https://testDomain.com/error/hash/?c=testCustomer&e=e1&ver=v3-aspnet-{knownUserVersion}&cver=10&l=testlayout&queueittoken=ts_sasa~cv_adsasa~ce_falwwwse~q_944c1f44-60dd-4e37-aabc-f3e4bb1c8895&"));
451451
cookieProviderMock.AssertWasNotCalled(stub =>
452452
stub.Store(null, null, true, null, 0, null), options => options.IgnoreArguments());
453453
Assert.True(config.EventId == result.EventId);

QueueIT.KnownUserV3.SDK.Tests/UserInQueueStateCookieRepositoryTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void Store_HasValidState_ExtendableCookie_CookieIsSaved()
3333
Assert.True(cookies[cookieKey].Expires.Subtract(DateTime.UtcNow.AddDays(1)) < TimeSpan.FromMinutes(1));
3434

3535
Assert.True(
36-
DateTimeHelper.GetUnixTimeStampAsDate(cookies[cookieKey]["Expires"])
36+
DateTimeHelper.GetUnixTimeStampAsDate(CookieHelper.ToNameValueCollectionFromValue(cookies[cookieKey].Value)["Expires"])
3737
.Subtract(DateTime.UtcNow.AddMinutes(10)) < TimeSpan.FromSeconds(10));
3838

3939
Assert.True(cookies[cookieKey].HttpOnly);
@@ -285,7 +285,7 @@ public void CancelQueueCookie_Test()
285285
Assert.True(cookies[cookieKey].Expires.Subtract(DateTime.UtcNow.AddDays(-1)) < TimeSpan.FromMinutes(1));
286286
Assert.True(cookies[cookieKey].Domain == cookieDomain);
287287
}
288-
288+
289289
[Fact]
290290
public void ExtendQueueCookie_CookieExist_Test()
291291
{
@@ -314,7 +314,7 @@ public void ExtendQueueCookie_CookieExist_Test()
314314
testObject.ExtendQueueCookie(eventId, 12, secretKey);
315315

316316
Assert.True(
317-
DateTimeHelper.GetUnixTimeStampAsDate(cookies[cookieKey]["Expires"])
317+
DateTimeHelper.GetUnixTimeStampAsDate(CookieHelper.ToNameValueCollectionFromValue(cookies[cookieKey].Value)["Expires"])
318318
.Subtract(DateTime.UtcNow.AddMinutes(12)) < TimeSpan.FromSeconds(10));
319319
Assert.True(cookies[cookieKey].Domain == cookieDomain);
320320

QueueIT.KnownUserV3.SDK/IntegrationConfig/IntegrationConfigHelpers.cs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -172,19 +172,9 @@ public static bool Evaluate(TriggerPart triggerPart, NameValueCollection httpHea
172172
return ComparisonOperatorHelper.Evaluate(triggerPart.Operator,
173173
triggerPart.IsNegative,
174174
triggerPart.IsIgnoreCase,
175-
GetHttpHeader(triggerPart.HttpHeaderName, httpHeaders),
175+
httpHeaders?.Get(triggerPart.HttpHeaderName) ?? string.Empty,
176176
triggerPart.ValueToCompare);
177177
}
178-
179-
private static string GetHttpHeader(string httpHeaderName, NameValueCollection httpHeaders)
180-
{
181-
var header = httpHeaders?.Get(httpHeaderName);
182-
183-
if (header == null)
184-
return string.Empty;
185-
186-
return httpHeaders[httpHeaderName];
187-
}
188178
}
189179

190180
internal static class ComparisonOperatorHelper

0 commit comments

Comments
 (0)