2222import unittest
2323import time
2424import re
25- from snowplow_tracker import tracker , _version , consumer
25+ from snowplow_tracker import tracker , _version , consumer , subject
2626from httmock import all_requests , HTTMock
2727
2828querystrings = ["" ]
2929
3030default_consumer = consumer .Consumer ("localhost" )
3131
32+ default_subject = subject .Subject ()
33+
3234def from_querystring (field , url ):
3335 pattern = re .compile ("^[^#]*[?&]" + field + "=([^&#]*)" )
3436 match = pattern .match (url )
@@ -54,21 +56,21 @@ def fail_response_content(url, request):
5456class IntegrationTest (unittest .TestCase ):
5557
5658 def test_integration_page_view (self ):
57- t = tracker .Tracker (default_consumer )
59+ t = tracker .Tracker (default_consumer , default_subject )
5860 with HTTMock (pass_response_content ):
5961 t .track_page_view ("http://savethearctic.org" , "Save The Arctic" , None )
6062 self .assertEquals (from_querystring ("page" , querystrings [- 1 ]),"Save+The+Arctic" )
6163
6264 def test_integration_ecommerce_transaction_item (self ):
63- t = tracker .Tracker (default_consumer )
65+ t = tracker .Tracker (default_consumer , default_subject )
6466 with HTTMock (pass_response_content ):
6567 t .track_ecommerce_transaction_item ("12345" , "pbz0025" , 7.99 , 2 , "black-tarot" , "tarot" , currency = "GBP" )
6668 expected_fields = {"ti_ca" : "tarot" , "ti_id" : "12345" , "ti_qu" : "2" , "ti_sk" : "pbz0025" , "e" : "ti" , "ti_nm" : "black-tarot" , "ti_pr" : "7.99" , "ti_cu" : "GBP" }
6769 for key in expected_fields :
6870 self .assertEquals (from_querystring (key , querystrings [- 1 ]), expected_fields [key ])
6971
7072 def test_integration_ecommerce_transaction (self ):
71- t = tracker .Tracker (default_consumer )
73+ t = tracker .Tracker (default_consumer , default_subject )
7274 with HTTMock (pass_response_content ):
7375 t .track_ecommerce_transaction ("6a8078be" , 35 , city = "London" , currency = "GBP" , items =
7476 [{
@@ -98,39 +100,39 @@ def test_integration_ecommerce_transaction(self):
98100 self .assertEquals (from_querystring (key , querystrings [- 3 ]), from_querystring (key , querystrings [- 2 ]))
99101
100102 def test_integration_screen_view (self ):
101- t = tracker .Tracker (default_consumer )
103+ t = tracker .Tracker (default_consumer , default_subject )
102104 with HTTMock (pass_response_content ):
103105 t .track_screen_view ("Game HUD 2" , "Hello!" )
104106 expected_fields = {"e" : "ue" , "ue_na" : "screen_view" , "evn" : "com.snowplowanalytics" }
105107 for key in expected_fields :
106108 self .assertEquals (from_querystring (key , querystrings [- 1 ]), expected_fields [key ])
107109
108110 def test_integration_struct_event (self ):
109- t = tracker .Tracker (default_consumer )
111+ t = tracker .Tracker (default_consumer , default_subject )
110112 with HTTMock (pass_response_content ):
111113 t .track_struct_event ("Ecomm" , "add-to-basket" , "dog-skateboarding-video" , "hd" , 13.99 )
112114 expected_fields = {"se_ca" : "Ecomm" , "se_pr" : "hd" , "se_la" : "dog-skateboarding-video" , "se_va" : "13.99" , "se_ac" : "add-to-basket" , "e" : "se" }
113115 for key in expected_fields :
114116 self .assertEquals (from_querystring (key , querystrings [- 1 ]), expected_fields [key ])
115117
116118 def test_integration_unstruct_event_non_base64 (self ):
117- t = tracker .Tracker (default_consumer , encode_base64 = False )
119+ t = tracker .Tracker (default_consumer , default_subject , encode_base64 = False )
118120 with HTTMock (pass_response_content ):
119121 t .track_unstruct_event ("com.example_company" , "viewed_product" , {"product_id" : "ASO01043" , "price$flt" : 49.95 , "walrus$tms" : int (time .time () * 1000 )})
120122 expected_fields = {"e" : "ue" , "evn" : "com.example_company" , "ue_na" : "viewed_product" }
121123 for key in expected_fields :
122124 self .assertEquals (from_querystring (key , querystrings [- 1 ]), expected_fields [key ])
123125
124126 def test_integration_unstruct_event_base64 (self ):
125- t = tracker .Tracker (default_consumer )
127+ t = tracker .Tracker (default_consumer , default_subject )
126128 with HTTMock (pass_response_content ):
127129 t .track_unstruct_event ("com.example_company" , "viewed_product" , {"product_id" : "ASO01043" , "price$flt" : 49.95 , "walrus$tms" : int (time .time () * 1000 )})
128130 expected_fields = {"e" : "ue" , "ue_na" : "viewed_product" }
129131 for key in expected_fields :
130132 self .assertEquals (from_querystring (key , querystrings [- 1 ]), expected_fields [key ])
131133
132134 def test_integration_unstruct_event_non_base64_error (self ):
133- t = tracker .Tracker (default_consumer , encode_base64 = False )
135+ t = tracker .Tracker (default_consumer , default_subject , encode_base64 = False )
134136 try :
135137 t .track_unstruct_event ("com.example_company" , "viewed_product" ,
136138 {
@@ -143,7 +145,7 @@ def test_integration_unstruct_event_non_base64_error(self):
143145
144146
145147 def test_integration_unstruct_event_base64_error (self ):
146- t = tracker .Tracker (default_consumer )
148+ t = tracker .Tracker (default_consumer , default_subject )
147149 try :
148150 t .track_unstruct_event ("com.example_company" , "viewed_product" ,
149151 {
@@ -155,13 +157,13 @@ def test_integration_unstruct_event_base64_error(self):
155157 self .assertEquals ("walrus$tms in dict is not a tms" , str (e ))
156158
157159 def test_integration_standard_nv_pairs (self ):
158- t = tracker .Tracker (default_consumer , "cf" , app_id = "angry-birds-android" , context_vendor = "com.example" )
159- t .set_platform ("mob" )
160- t .set_user_id ("user12345" )
161- t .set_screen_resolution (100 , 200 )
162- t .set_color_depth (24 )
163- t .set_timezone ("Europe London" )
164- t .set_lang ("en" )
160+ t = tracker .Tracker (default_consumer , default_subject , "cf" , app_id = "angry-birds-android" , context_vendor = "com.example" )
161+ default_subject .set_platform ("mob" )
162+ default_subject .set_user_id ("user12345" )
163+ default_subject .set_screen_resolution (100 , 200 )
164+ default_subject .set_color_depth (24 )
165+ default_subject .set_timezone ("Europe London" )
166+ default_subject .set_lang ("en" )
165167 with HTTMock (pass_response_content ):
166168 t .track_page_view ("localhost" , "local host" , None , {'user' : {'user_type' : 'tester' }})
167169 expected_fields = {"tna" : "cf" , "evn" : "com.snowplowanalytics" , "res" : "100x200" ,
@@ -171,6 +173,6 @@ def test_integration_standard_nv_pairs(self):
171173 self .assertEquals (from_querystring (key , querystrings [- 1 ]), expected_fields [key ])
172174
173175 def test_integration_request_failure (self ):
174- t = tracker .Tracker (consumer .Consumer ("drnv83ldfo4ed.cloudfront.net" ))
176+ t = tracker .Tracker (consumer .Consumer ("drnv83ldfo4ed.cloudfront.net" ), default_subject )
175177 with HTTMock (fail_response_content ):
176178 tracking_return_value = t .track_page_view ("Title page" )
0 commit comments