55module QueueIt
66 class HttpRequestMock
77 attr_accessor :user_agent
8- attr_accessor :original_url
8+ attr_accessor :env
9+ attr_accessor :original_fullpath
910 attr_accessor :cookie_jar
11+ attr_accessor :remote_ip
12+ attr_accessor :headers
13+
14+ def setRealOriginalUrl ( proto , host , path )
15+ @env = { "rack.url_scheme" => proto , "HTTP_HOST" => host }
16+ @original_fullpath = path
17+ end
1018 end
1119
1220 class UserInQueueServiceMock
@@ -88,19 +96,38 @@ def test_cancelRequestByLocalConfig_setDebugCookie
8896 cancelConfig . cookieDomain = "cookieDomain"
8997
9098 requestMock = HttpRequestMock . new
91- requestMock . original_url = " original_url"
99+ requestMock . setRealOriginalUrl ( "http" , "localhost" , "/ original_url")
92100 requestMock . cookie_jar = { }
101+ requestMock . remote_ip = "userIP"
102+ requestMock . headers = {
103+ "via" => "v" ,
104+ "forwarded" => "f" ,
105+ "x-forwarded-for" => "xff" ,
106+ "x-forwarded-host" => "xfh" ,
107+ "x-forwarded-proto" => "xfp" }
93108
94109 secretKey = "secretKey"
95110 queueitToken = QueueITTokenGenerator ::generateDebugToken ( "eventId" , secretKey )
96111
112+ expectedServerTime = Time . now . utc . iso8601
97113 KnownUser . cancelRequestByLocalConfig ( "url" , queueitToken , cancelConfig , "customerId" , secretKey , requestMock )
98114
99- expectedCookieValue = "TargetUrl=url|QueueitToken=" + queueitToken + "|OriginalUrl=original_url|CancelConfig=EventId:eventId&Version:1&QueueDomain:queueDomain&CookieDomain:cookieDomain"
100-
115+ expectedCookieValue = "TargetUrl=url|QueueitToken=" + queueitToken +
116+ "|OriginalUrl=http://localhost/original_url" +
117+ "|CancelConfig=EventId:eventId&Version:1&QueueDomain:queueDomain&CookieDomain:cookieDomain" +
118+ "|ServerUtcTime=" + expectedServerTime +
119+ "|RequestIP=userIP" +
120+ "|RequestHttpHeader_Via=v" +
121+ "|RequestHttpHeader_Forwarded=f" +
122+ "|RequestHttpHeader_XForwardedFor=xff" +
123+ "|RequestHttpHeader_XForwardedHost=xfh" +
124+ "|RequestHttpHeader_XForwardedProto=xfp"
125+
101126 assert ( requestMock . cookie_jar . length == 1 ) ;
102127 assert ( requestMock . cookie_jar . key? ( KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ) )
103- assert ( expectedCookieValue . eql? ( requestMock . cookie_jar [ KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ] [ "value" . to_sym ] ) )
128+
129+ actualCookieValue = requestMock . cookie_jar [ KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ] [ "value" . to_sym ]
130+ assert ( expectedCookieValue . eql? ( actualCookieValue ) )
104131 end
105132
106133 def test_cancelRequestByLocalConfig_nil_QueueDomain
@@ -410,19 +437,37 @@ def test_resolveQueueRequestByLocalConfig_setDebugCookie
410437 queueConfig . version = 12
411438
412439 requestMock = HttpRequestMock . new
413- requestMock . original_url = " original_url"
440+ requestMock . setRealOriginalUrl ( "http" , "localhost" , "/ original_url")
414441 requestMock . cookie_jar = { }
442+ requestMock . remote_ip = "userIP"
443+ requestMock . headers = {
444+ "via" => "v" ,
445+ "forwarded" => "f" ,
446+ "x-forwarded-for" => "xff" ,
447+ "x-forwarded-host" => "xfh" ,
448+ "x-forwarded-proto" => "xfp" }
415449
416450 secretKey = "secretKey"
417451 queueitToken = QueueITTokenGenerator ::generateDebugToken ( "eventId" , secretKey )
418452
453+ expectedServerTime = Time . now . utc . iso8601
419454 KnownUser . resolveQueueRequestByLocalConfig ( "url" , queueitToken , queueConfig , "customerId" , secretKey , requestMock )
420455
421- expectedCookieValue = "TargetUrl=url|QueueitToken=" + queueitToken + "|OriginalUrl=original_url|QueueConfig=EventId:eventId&Version:12&QueueDomain:queueDomain&CookieDomain:cookieDomain&ExtendCookieValidity:true&CookieValidityMinute:10&LayoutName:layoutName&Culture:culture"
422-
456+ expectedCookieValue = "TargetUrl=url|QueueitToken=" + queueitToken +
457+ "|OriginalUrl=http://localhost/original_url" +
458+ "|QueueConfig=EventId:eventId&Version:12&QueueDomain:queueDomain&CookieDomain:cookieDomain&ExtendCookieValidity:true&CookieValidityMinute:10&LayoutName:layoutName&Culture:culture" +
459+ "|ServerUtcTime=" + expectedServerTime +
460+ "|RequestIP=userIP" +
461+ "|RequestHttpHeader_Via=v" +
462+ "|RequestHttpHeader_Forwarded=f" +
463+ "|RequestHttpHeader_XForwardedFor=xff" +
464+ "|RequestHttpHeader_XForwardedHost=xfh" +
465+ "|RequestHttpHeader_XForwardedProto=xfp"
466+
423467 assert ( requestMock . cookie_jar . length == 1 ) ;
424468 assert ( requestMock . cookie_jar . key? ( KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ) )
425- assert ( expectedCookieValue . eql? ( requestMock . cookie_jar [ KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ] [ "value" . to_sym ] ) )
469+ actualCookieValue = requestMock . cookie_jar [ KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ] [ "value" . to_sym ]
470+ assert ( expectedCookieValue . eql? ( actualCookieValue ) )
426471 end
427472
428473 def test_resolveQueueRequestByLocalConfig
@@ -612,20 +657,39 @@ def test_validateRequestByIntegrationConfig_setDebugCookie
612657
613658 requestMock = HttpRequestMock . new
614659 requestMock . user_agent = "googlebot"
615- requestMock . original_url = " original_url"
660+ requestMock . setRealOriginalUrl ( "http" , "localhost" , "/ original_url")
616661 requestMock . cookie_jar = { }
662+ requestMock . remote_ip = "userIP"
663+ requestMock . headers = {
664+ "via" => "v" ,
665+ "forwarded" => "f" ,
666+ "x-forwarded-for" => "xff" ,
667+ "x-forwarded-host" => "xfh" ,
668+ "x-forwarded-proto" => "xfp" }
617669 integrationConfigJson = JSON . generate ( integrationConfig )
618670
619671 secretKey = "secretKey"
620672 queueitToken = QueueITTokenGenerator ::generateDebugToken ( "eventId" , secretKey )
621673
674+ expectedServerTime = Time . now . utc . iso8601
622675 KnownUser . validateRequestByIntegrationConfig ( "http://test.com?event1=true" , queueitToken , integrationConfigJson , "customerId" , secretKey , requestMock )
623676
624- expectedCookieValue = "ConfigVersion=3|PureUrl=http://test.com?event1=true|QueueitToken=" + queueitToken + "|OriginalUrl=original_url|MatchedConfig=event1action|TargetUrl=http://test.com?event1=true|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"
625-
677+ expectedCookieValue = "ConfigVersion=3|PureUrl=http://test.com?event1=true|QueueitToken=" + queueitToken +
678+ "|OriginalUrl=http://localhost/original_url" +
679+ "|ServerUtcTime=" + expectedServerTime +
680+ "|RequestIP=userIP" +
681+ "|RequestHttpHeader_Via=v" +
682+ "|RequestHttpHeader_Forwarded=f" +
683+ "|RequestHttpHeader_XForwardedFor=xff" +
684+ "|RequestHttpHeader_XForwardedHost=xfh" +
685+ "|RequestHttpHeader_XForwardedProto=xfp" +
686+ "|MatchedConfig=event1action|TargetUrl=http://test.com?event1=true|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"
687+
626688 assert ( requestMock . cookie_jar . length == 1 ) ;
627689 assert ( requestMock . cookie_jar . key? ( KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ) )
628- assert ( expectedCookieValue . eql? ( requestMock . cookie_jar [ KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ] [ "value" . to_sym ] ) )
690+
691+ actualCookieValue = requestMock . cookie_jar [ KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ] [ "value" . to_sym ]
692+ assert ( expectedCookieValue . eql? ( actualCookieValue ) )
629693 end
630694
631695 def test_validateRequestByIntegrationConfig_NotMatch
@@ -656,8 +720,15 @@ def test_validateRequestByIntegrationConfig_setDebugCookie_NotMatch
656720 KnownUser . class_variable_set ( :@@userInQueueService , userInQueueService )
657721
658722 requestMock = HttpRequestMock . new
659- requestMock . original_url = " original_url"
723+ requestMock . setRealOriginalUrl ( "http" , "localhost" , "/ original_url")
660724 requestMock . cookie_jar = { }
725+ requestMock . remote_ip = "userIP"
726+ requestMock . headers = {
727+ "via" => "v" ,
728+ "forwarded" => "f" ,
729+ "x-forwarded-for" => "xff" ,
730+ "x-forwarded-host" => "xfh" ,
731+ "x-forwarded-proto" => "xfp" }
661732
662733 integrationConfig =
663734 {
@@ -675,13 +746,24 @@ def test_validateRequestByIntegrationConfig_setDebugCookie_NotMatch
675746 queueitToken = QueueITTokenGenerator ::generateDebugToken ( "eventId" , secretKey )
676747
677748 integrationConfigJson = JSON . generate ( integrationConfig )
749+ expectedServerTime = Time . now . utc . iso8601
678750 KnownUser . validateRequestByIntegrationConfig ( "http://test.com?event1=true" , queueitToken , integrationConfigJson , "customerId" , secretKey , requestMock )
679751
680- expectedCookieValue = "ConfigVersion=3|PureUrl=http://test.com?event1=true|QueueitToken=" + queueitToken + "|OriginalUrl=original_url|MatchedConfig=NULL"
681-
752+ expectedCookieValue = "ConfigVersion=3|PureUrl=http://test.com?event1=true|QueueitToken=" + queueitToken +
753+ "|OriginalUrl=http://localhost/original_url" +
754+ "|ServerUtcTime=" + expectedServerTime +
755+ "|RequestIP=userIP" +
756+ "|RequestHttpHeader_Via=v" +
757+ "|RequestHttpHeader_Forwarded=f" +
758+ "|RequestHttpHeader_XForwardedFor=xff" +
759+ "|RequestHttpHeader_XForwardedHost=xfh" +
760+ "|RequestHttpHeader_XForwardedProto=xfp" +
761+ "|MatchedConfig=NULL"
762+
682763 assert ( requestMock . cookie_jar . length == 1 ) ;
683764 assert ( requestMock . cookie_jar . key? ( KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ) )
684- assert ( expectedCookieValue . eql? ( requestMock . cookie_jar [ KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ] [ "value" . to_sym ] ) )
765+ actualCookieValue = requestMock . cookie_jar [ KnownUser ::QUEUEIT_DEBUG_KEY . to_sym ] [ "value" . to_sym ]
766+ assert ( expectedCookieValue . eql? ( actualCookieValue ) )
685767 end
686768
687769 def test_validateRequestByIntegrationConfig_ForcedTargetUrl
0 commit comments