@@ -114,33 +114,36 @@ def setUp(self):
114114 'some-secret' )
115115 self .item = ItemDefinition (1 , 'EUR20' , 'http://example.com/' , 'title' )
116116
117- def assertQueryString (self , url , key , value = None ):
117+ def assertQueryString (self , url , key , value , msg = None ):
118118 d = parse_qs (urlparse (url ).query )
119- if not value :
120- return (key in d )
121- return d .get (key , None ) == value
119+ self .assertIn (key , d , msg = msg )
120+
121+ if not isinstance (value , list ):
122+ value = [value ]
123+ self .assertEqual (d [key ], value , msg = msg )
124+
125+ def assertNotQueryString (self , url , key , msg = None ):
126+ d = parse_qs (urlparse (url ).query )
127+ self .assertNotIn (key , d , msg = msg )
122128
123129 def test_get_web_url_itemdefinition_value_none (self ):
124130 # item with expiry not set.
125131 item = ItemDefinition (1 , 'EUR20' , 'http://help.me/' , 'title' )
126132 url = self .lp ._get_web_url (item , 'PAGE_TYPE' )
127- self .assertFalse (
128- self .assertQueryString (url , 'expiry' ),
129- 'expiry url param is "None". Should be omitted.'
130- )
133+ self .assertNotQueryString (url , 'expiry' , msg = 'expiry url param is "None". Should be omitted.' )
131134
132135 def test_web_url_product_key (self ):
133136 # Default
134137 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' )
135- self .assertFalse ( self . assertQueryString ( url , 'product_key' ) )
138+ self .assertNotQueryString ( url , 'product' )
136139
137140 # Enabled
138141 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , product_key = 'foobar' )
139- self .assertQueryString (url , 'product_key ' , value = 'foobar' )
142+ self .assertQueryString (url , 'product ' , 'foobar' )
140143
141144 # Disabled
142145 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , product_key = None )
143- self .assertFalse ( self . assertQueryString ( url , 'product_key' ) )
146+ self .assertNotQueryString ( url , 'product' )
144147
145148 def test_web_url_dialog (self ):
146149 # Default
@@ -158,24 +161,24 @@ def test_web_url_dialog(self):
158161 def test_web_url_jsevents (self ):
159162 # Default
160163 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' )
161- self .assertFalse ( self . assertQueryString ( url , 'jsevents' ) )
164+ self .assertNotQueryString ( url , 'jsevents' )
162165
163166 # Enabled
164167 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , use_jsevents = True )
165- self .assertQueryString (url , 'jsevents' , value = '1' )
168+ self .assertQueryString (url , 'jsevents' , '1' )
166169
167170 # Disabled
168171 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , use_jsevents = False )
169- self .assertFalse ( self . assertQueryString ( url , 'jsevents' ) )
172+ self .assertNotQueryString ( url , 'jsevents' )
170173
171174 def test_web_url_transaction_reference (self ):
172175 # Default
173176 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' )
174- self .assertFalse ( self . assertQueryString ( url , 'transaction_reference' ) )
177+ self .assertNotQueryString ( url , 'tref' )
175178
176179 # Valid
177180 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , transaction_reference = 'loremipsum' )
178- self .assertQueryString (url , 'transaction_reference ' , value = 'loremipsum' )
181+ self .assertQueryString (url , 'tref ' , 'loremipsum' )
179182
180183 # Invalid
181184 with self .assertRaises (APIException ):
@@ -184,54 +187,54 @@ def test_web_url_transaction_reference(self):
184187 def test_web_url_consumable (self ):
185188 # Default
186189 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' )
187- self .assertFalse ( self . assertQueryString ( url , 'consumable' ) )
190+ self .assertNotQueryString ( url , 'consumable' )
188191
189192 # Enabled
190193 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , consumable = True )
191- self .assertQueryString (url , 'consumable' , value = '1' )
194+ self .assertQueryString (url , 'consumable' , '1' )
192195
193196 # Disabled
194197 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , consumable = False )
195- self .assertFalse ( self . assertQueryString ( url , 'consumable' ) )
198+ self .assertNotQueryString ( url , 'consumable' )
196199
197200 def test_web_url_return_url (self ):
198201 # Default
199202 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' )
200- self .assertFalse ( self . assertQueryString ( url , 'return_url' ) )
203+ self .assertNotQueryString ( url , 'return_url' )
201204
202205 # Given
203206 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , return_url = 'http://example.com/foo?foo=bar&lorem=ipsum' )
204- self .assertQueryString (url , 'return_url' , value = 'http://example.com/foo?foo=bar&lorem=ipsum' )
207+ self .assertQueryString (url , 'return_url' , 'http://example.com/foo?foo=bar&lorem=ipsum' )
205208
206209 # Omitted
207210 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , return_url = None )
208- self .assertFalse ( self . assertQueryString ( url , 'return_url' ) )
211+ self .assertNotQueryString ( url , 'return_url' )
209212
210213 def test_web_url_failure_url (self ):
211214 # Default
212215 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' )
213- self .assertFalse ( self . assertQueryString ( url , 'failure_url' ) )
216+ self .assertNotQueryString ( url , 'failure_url' )
214217
215218 # Given
216219 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , failure_url = 'http://example.com/foo?foo=bar&lorem=ipsum' )
217- self .assertQueryString (url , 'failure_url' , value = 'http://example.com/foo?foo=bar&lorem=ipsum' )
220+ self .assertQueryString (url , 'failure_url' , 'http://example.com/foo?foo=bar&lorem=ipsum' )
218221
219222 # Omitted
220223 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , failure_url = None )
221- self .assertFalse ( self . assertQueryString ( url , 'failure_url' ) )
224+ self .assertNotQueryString ( url , 'failure_url' )
222225
223226 def test_web_url_muid (self ):
224227 # Default
225228 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' )
226- self .assertFalse ( self . assertQueryString ( url , 'muid' ) )
229+ self .assertNotQueryString ( url , 'muid' )
227230
228231 # Given
229232 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , muid = '0zA9-aZ09-0A9z' )
230- self .assertQueryString (url , 'muid' , value = '0zA9-aZ09-0A9z' )
233+ self .assertQueryString (url , 'muid' , '0zA9-aZ09-0A9z' )
231234
232235 # Omitted
233236 url = self .lp ._get_web_url (self .item , 'PAGE_TYPE' , muid = None )
234- self .assertFalse ( self . assertQueryString ( url , 'muid' ) )
237+ self .assertNotQueryString ( url , 'muid' )
235238
236239 def test_get_add_url (self ):
237240 item = ItemDefinition (1 , 'EUR20' , 'http://example.net/t' , 'title' )
@@ -248,42 +251,39 @@ def test_get_add_url(self):
248251 something = 'else' ,
249252 BLUB = [u'u2' , b'b1' , b'b2' , u'u1' ],
250253 )
251- self .assertFalse (
252- self .assertQueryString (url , 'expiry' ),
253- 'expiry url param is "None". Should be omitted.'
254- )
255- self .assertQueryString (url , 'product_key' , value = 'some-product-key' )
254+ self .assertNotQueryString (url , 'expiry' , msg = 'expiry url param is "None". Should be omitted.' )
255+ self .assertQueryString (url , 'product' , 'some-product-key' )
256256 self .assertTrue (url .startswith ('https://web.laterpay.net/add?' ))
257- self .assertQueryString (url , 'use_jsevents ' , value = '1' )
258- self .assertQueryString (url , 'transaction_reference ' , value = 'TX-REF' )
259- self .assertQueryString (url , 'consumable' , value = '1' )
260- self .assertQueryString (url , 'return_url' , value = 'http://return.url/foo?bar=buz&lorem=ipsum' )
261- self .assertQueryString (url , 'failure_url' , value = 'http://failure.url/FOO?BAR=BUZ&LOREM=IPSUM' )
262- self .assertQueryString (url , 'muid' , value = 'someone' )
263- self .assertQueryString (url , 'something' , value = 'else' )
264- self .assertQueryString (url , 'BLUB' , value = [ b'b1 ' , 'b2 ' , u'u1 ' , 'u2 ' ])
257+ self .assertQueryString (url , 'jsevents ' , '1' )
258+ self .assertQueryString (url , 'tref ' , 'TX-REF' )
259+ self .assertQueryString (url , 'consumable' , '1' )
260+ self .assertQueryString (url , 'return_url' , 'http://return.url/foo?bar=buz&lorem=ipsum' )
261+ self .assertQueryString (url , 'failure_url' , 'http://failure.url/FOO?BAR=BUZ&LOREM=IPSUM' )
262+ self .assertQueryString (url , 'muid' , 'someone' )
263+ self .assertQueryString (url , 'something' , 'else' )
264+ self .assertQueryString (url , 'BLUB' , [ 'u2 ' , 'b1 ' , 'b2 ' , 'u1 ' ])
265265
266266 def test_get_add_url_contribution (self ):
267267 item = ItemDefinition (
268268 2 , 'EUR20' , 'http://example.net/t' , 'Save the World!' , item_type = constants .ITEM_TYPE_CONTRIBUTION ,
269269 )
270270 url = self .lp .get_add_url (item , item_type = 'contribution' )
271271 self .assertTrue (url .startswith ('https://web.laterpay.net/dialog/contribute/pay_later?' ))
272- self .assertQueryString (url , 'campaign_id' , value = '2' )
273- self .assertQueryString (url , 'pricing' , value = 'EUR20' )
274- self .assertQueryString (url , 'url' , value = 'http://example.net/t' )
275- self .assertQueryString (url , 'title' , value = 'Save the World!' )
272+ self .assertQueryString (url , 'campaign_id' , '2' )
273+ self .assertQueryString (url , 'pricing' , 'EUR20' )
274+ self .assertQueryString (url , 'url' , 'http://example.net/t' )
275+ self .assertQueryString (url , 'title' , 'Save the World!' )
276276
277277 def test_get_add_url_donation (self ):
278278 item = ItemDefinition (
279279 '2' , 'EUR20' , 'http://example.net/t' , 'Save the World!' , item_type = constants .ITEM_TYPE_DONATION ,
280280 )
281281 url = self .lp .get_add_url (item , item_type = 'donation' )
282282 self .assertTrue (url .startswith ('https://web.laterpay.net/dialog/donate/pay_later?' ))
283- self .assertQueryString (url , 'campaign_id' , value = '2' )
284- self .assertQueryString (url , 'pricing' , value = 'EUR20' )
285- self .assertQueryString (url , 'url' , value = 'http://example.net/t' )
286- self .assertQueryString (url , 'title' , value = 'Save the World!' )
283+ self .assertQueryString (url , 'campaign_id' , '2' )
284+ self .assertQueryString (url , 'pricing' , 'EUR20' )
285+ self .assertQueryString (url , 'url' , 'http://example.net/t' )
286+ self .assertQueryString (url , 'title' , 'Save the World!' )
287287
288288 def test_get_buy_url (self ):
289289 item = ItemDefinition (1 , 'EUR20' , 'http://example.net/t' , 'title' )
@@ -300,20 +300,17 @@ def test_get_buy_url(self):
300300 something = 'else' ,
301301 BLUB = [u'u2' , b'b1' , b'b2' , u'u1' ],
302302 )
303- self .assertFalse (
304- self .assertQueryString (url , 'expiry' ),
305- 'expiry url param is "None". Should be omitted.'
306- )
307- self .assertQueryString (url , 'product_key' , value = 'some-product-key' )
303+ self .assertNotQueryString (url , 'expiry' , msg = 'expiry url param is "None". Should be omitted.' )
304+ self .assertQueryString (url , 'product' , 'some-product-key' )
308305 self .assertTrue (url .startswith ('https://web.laterpay.net/buy?' ))
309- self .assertQueryString (url , 'use_jsevents ' , value = '1' )
310- self .assertQueryString (url , 'transaction_reference ' , value = 'TX-REF' )
311- self .assertQueryString (url , 'consumable' , value = '1' )
312- self .assertQueryString (url , 'return_url' , value = 'http://return.url/foo?bar=buz&lorem=ipsum' )
313- self .assertQueryString (url , 'failure_url' , value = 'http://failure.url/FOO?BAR=BUZ&LOREM=IPSUM' )
314- self .assertQueryString (url , 'muid' , value = 'someone' )
315- self .assertQueryString (url , 'something' , value = 'else' )
316- self .assertQueryString (url , 'BLUB' , value = [ b'b1 ' , 'b2 ' , u'u1 ' , 'u2 ' ])
306+ self .assertQueryString (url , 'jsevents ' , '1' )
307+ self .assertQueryString (url , 'tref ' , 'TX-REF' )
308+ self .assertQueryString (url , 'consumable' , '1' )
309+ self .assertQueryString (url , 'return_url' , 'http://return.url/foo?bar=buz&lorem=ipsum' )
310+ self .assertQueryString (url , 'failure_url' , 'http://failure.url/FOO?BAR=BUZ&LOREM=IPSUM' )
311+ self .assertQueryString (url , 'muid' , 'someone' )
312+ self .assertQueryString (url , 'something' , 'else' )
313+ self .assertQueryString (url , 'BLUB' , [ 'u2 ' , 'b1 ' , 'b2 ' , 'u1 ' ])
317314
318315 def test_get_buy_url_contribution (self ):
319316 item = ItemDefinition (
@@ -322,10 +319,10 @@ def test_get_buy_url_contribution(self):
322319 )
323320 url = self .lp .get_buy_url (item )
324321 self .assertTrue (url .startswith ('https://web.laterpay.net/dialog/contribute/pay_now?' ))
325- self .assertQueryString (url , 'campaign_id' , value = '2 ' )
326- self .assertQueryString (url , 'pricing' , value = 'EUR20' )
327- self .assertQueryString (url , 'url' , value = 'http://example.net/t' )
328- self .assertQueryString (url , 'title' , value = 'Save the World!' )
322+ self .assertQueryString (url , 'campaign_id' , 'save-the-world ' )
323+ self .assertQueryString (url , 'pricing' , 'EUR20' )
324+ self .assertQueryString (url , 'url' , 'http://example.net/t' )
325+ self .assertQueryString (url , 'title' , 'Save the World!' )
329326
330327 def test_get_buy_url_donation (self ):
331328 item = ItemDefinition (
@@ -334,10 +331,10 @@ def test_get_buy_url_donation(self):
334331 )
335332 url = self .lp .get_buy_url (item )
336333 self .assertTrue (url .startswith ('https://web.laterpay.net/dialog/donate/pay_now?' ))
337- self .assertQueryString (url , 'campaign_id' , value = '2 ' )
338- self .assertQueryString (url , 'pricing' , value = 'EUR20' )
339- self .assertQueryString (url , 'url' , value = 'http://example.net/t' )
340- self .assertQueryString (url , 'title' , value = 'Save the World!' )
334+ self .assertQueryString (url , 'campaign_id' , 'save-the-world ' )
335+ self .assertQueryString (url , 'pricing' , 'EUR20' )
336+ self .assertQueryString (url , 'url' , 'http://example.net/t' )
337+ self .assertQueryString (url , 'title' , 'Save the World!' )
341338
342339 def test_get_subscribe_url (self ):
343340 item = ItemDefinition (1 , 'EUR20' , 'http://example.net/t' , 'title' , sub_id = 'a0_-9Z' , period = 12345 )
@@ -352,19 +349,16 @@ def test_get_subscribe_url(self):
352349 period = 12345 ,
353350 BLUB = [u'u2' , b'b1' , b'b2' , u'u1' ],
354351 )
355- self .assertFalse (
356- self .assertQueryString (url , 'expiry' ),
357- 'expiry url param is "None". Should be omitted.'
358- )
359- self .assertQueryString (url , 'sub_id' , value = 'a0_-9Z' )
360- self .assertQueryString (url , 'product_key' , value = 'some-product-key' )
352+ self .assertNotQueryString (url , 'expiry' , msg = 'expiry url param is "None". Should be omitted.' )
353+ self .assertQueryString (url , 'sub_id' , 'a0_-9Z' )
354+ self .assertQueryString (url , 'product' , 'some-product-key' )
361355 self .assertTrue (url .startswith ('https://web.laterpay.net/subscribe?' ))
362- self .assertQueryString (url , 'return_url' , value = 'http://return.url/foo?bar=buz&lorem=ipsum' )
363- self .assertQueryString (url , 'failure_url' , value = 'http://failure.url/FOO?BAR=BUZ&LOREM=IPSUM' )
364- self .assertQueryString (url , 'muid' , value = 'someone' )
365- self .assertQueryString (url , 'something' , value = 'else' )
366- self .assertQueryString (url , 'period' , value = '12345' )
367- self .assertQueryString (url , 'BLUB' , value = [ b'b1 ' , 'b2 ' , u'u1 ' , 'u2 ' ])
356+ self .assertQueryString (url , 'return_url' , 'http://return.url/foo?bar=buz&lorem=ipsum' )
357+ self .assertQueryString (url , 'failure_url' , 'http://failure.url/FOO?BAR=BUZ&LOREM=IPSUM' )
358+ self .assertQueryString (url , 'muid' , 'someone' )
359+ self .assertQueryString (url , 'something' , 'else' )
360+ self .assertQueryString (url , 'period' , '12345' )
361+ self .assertQueryString (url , 'BLUB' , [ 'u2 ' , 'b1 ' , 'b2 ' , 'u1 ' ])
368362
369363 def test_get_login_dialog_url_with_use_dialog_api_false (self ):
370364 url = self .lp .get_login_dialog_url ('http://example.org' )
0 commit comments