Skip to content

Commit b9fdc6c

Browse files
Woodyajoestump
authored andcommitted
test sorts before asserting equality of parsed data
1 parent 5e32b4c commit b9fdc6c

File tree

1 file changed

+60
-46
lines changed

1 file changed

+60
-46
lines changed

tests/test_oauth.py

Lines changed: 60 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
"""
22
The MIT License
3-
3+
44
Copyright (c) 2009 Vic Fryzel
5-
5+
66
Permission is hereby granted, free of charge, to any person obtaining a copy
77
of this software and associated documentation files (the "Software"), to deal
88
in the Software without restriction, including without limitation the rights
99
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1010
copies of the Software, and to permit persons to whom the Software is
1111
furnished to do so, subject to the following conditions:
12-
12+
1313
The above copyright notice and this permission notice shall be included in
1414
all copies or substantial portions of the Software.
15-
15+
1616
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1717
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1818
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -61,7 +61,7 @@ def test_build_auth_header(self):
6161
self.assertEqual(header['WWW-Authenticate'], 'OAuth realm="%s"' %
6262
realm)
6363
self.assertEqual(len(header), 1)
64-
64+
6565
def test_escape(self):
6666
string = 'http://whatever.com/~someuser/?test=test&other=other'
6767
self.assert_('~' in oauth.escape(string))
@@ -83,7 +83,7 @@ def test_gen_verifier(self):
8383
def test_gen_timestamp(self):
8484
exp = int(time.time())
8585
now = oauth.generate_timestamp()
86-
self.assertEqual(exp, now)
86+
self.assertEqual(exp, now)
8787

8888
class TestConsumer(unittest.TestCase):
8989
def setUp(self):
@@ -252,7 +252,7 @@ def test_url(self):
252252

253253
req = oauth.Request(method, url1)
254254
self.assertEquals(req.url, exp1)
255-
255+
256256
req = oauth.Request(method, url2)
257257
self.assertEquals(req.url, exp2)
258258

@@ -270,10 +270,11 @@ def test_get_nonoauth_parameters(self):
270270
oauth_params = {
271271
'oauth_consumer': 'asdfasdfasdf'
272272
}
273-
273+
274274
other_params = {
275275
'foo': 'baz',
276-
'bar': 'foo'
276+
'bar': 'foo',
277+
'multi': ['FOO','BAR']
277278
}
278279

279280
params = oauth_params
@@ -301,10 +302,10 @@ def test_to_header(self):
301302
parts = value.split('OAuth ')
302303
vars = parts[1].split(', ')
303304
self.assertTrue(len(vars), (len(params) + 1))
304-
305+
305306
res = {}
306307
for v in vars:
307-
var, val = v.split('=')
308+
var, val = v.split('=')
308309
res[var] = urllib.unquote(val.strip('"'))
309310

310311
self.assertEquals(realm, res['realm'])
@@ -319,6 +320,7 @@ def test_to_postdata(self):
319320
realm = "http://sp.example.com/"
320321

321322
params = {
323+
'multi': ['FOO','BAR'],
322324
'oauth_version': "1.0",
323325
'oauth_nonce': "4572616e48616d6d65724c61686176",
324326
'oauth_timestamp': "137131200",
@@ -329,8 +331,12 @@ def test_to_postdata(self):
329331
}
330332

331333
req = oauth.Request("GET", realm, params)
332-
333-
self.assertEquals(params, dict(parse_qsl(req.to_postdata())))
334+
335+
flat = [('multi','FOO'),('multi','BAR')]
336+
del params['multi']
337+
flat.extend(params.items())
338+
kf = lambda x: x[0]
339+
self.assertEquals(sorted(flat, key=kf), sorted(parse_qsl(req.to_postdata()), key=kf))
334340

335341
def test_to_url(self):
336342
url = "http://sp.example.com/"
@@ -348,13 +354,13 @@ def test_to_url(self):
348354
req = oauth.Request("GET", url, params)
349355
exp = urlparse.urlparse("%s?%s" % (url, urllib.urlencode(params)))
350356
res = urlparse.urlparse(req.to_url())
351-
self.assertEquals(exp.scheme, res.scheme)
352-
self.assertEquals(exp.netloc, res.netloc)
353-
self.assertEquals(exp.path, res.path)
357+
self.assertEquals(exp.scheme, res.scheme)
358+
self.assertEquals(exp.netloc, res.netloc)
359+
self.assertEquals(exp.path, res.path)
354360

355361
a = parse_qs(exp.query)
356362
b = parse_qs(res.query)
357-
self.assertEquals(a, b)
363+
self.assertEquals(a, b)
358364

359365
def test_get_normalized_parameters(self):
360366
url = "http://sp.example.com/"
@@ -426,7 +432,7 @@ def test_sign_request(self):
426432
req = oauth.Request(method="GET", url=url, parameters=params)
427433

428434
methods = {
429-
'TQ6vGQ5A6IZn8dmeGB4+/Jl3EMI=': oauth.SignatureMethod_HMAC_SHA1(),
435+
'TQ6vGQ5A6IZn8dmeGB4+/Jl3EMI=': oauth.SignatureMethod_HMAC_SHA1(),
430436
'con-test-secret&tok-test-secret': oauth.SignatureMethod_PLAINTEXT()
431437
}
432438

@@ -447,17 +453,17 @@ def test_from_request(self):
447453
'oauth_token': "ad180jjd733klru7",
448454
'oauth_signature': "wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
449455
}
450-
456+
451457
req = oauth.Request("GET", url, params)
452458
headers = req.to_header()
453459

454460
# Test from the headers
455461
req = oauth.Request.from_request("GET", url, headers)
456462
self.assertEquals(req.method, "GET")
457463
self.assertEquals(req.url, url)
458-
464+
459465
self.assertEquals(params, req.copy())
460-
466+
461467
# Test with bad OAuth headers
462468
bad_headers = {
463469
'Authorization' : 'OAuth this is a bad header'
@@ -469,7 +475,7 @@ def test_from_request(self):
469475
# Test getting from query string
470476
qs = urllib.urlencode(params)
471477
req = oauth.Request.from_request("GET", url, query_string=qs)
472-
478+
473479
exp = parse_qs(qs, keep_blank_values=False)
474480
for k, v in exp.iteritems():
475481
exp[k] = urllib.unquote(v[0])
@@ -492,7 +498,7 @@ def test_from_token_and_callback(self):
492498
'oauth_token': "ad180jjd733klru7",
493499
'oauth_signature': "wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
494500
}
495-
501+
496502
tok = oauth.Token(key="tok-test-key", secret="tok-test-secret")
497503
req = oauth.Request.from_token_and_callback(tok)
498504
self.assertFalse('oauth_callback' in req)
@@ -507,7 +513,7 @@ def test_from_consumer_and_token(self):
507513

508514
tok = oauth.Token(key="tok-test-key", secret="tok-test-secret")
509515
con = oauth.Consumer(key="con-test-key", secret="con-test-secret")
510-
req = oauth.Request.from_consumer_and_token(con, token=tok,
516+
req = oauth.Request.from_consumer_and_token(con, token=tok,
511517
http_method="GET", http_url=url)
512518

513519
self.assertEquals(req['oauth_token'], tok.key)
@@ -532,10 +538,11 @@ def setUp(self):
532538
'oauth_nonce': "4572616e48616d6d65724c61686176",
533539
'oauth_timestamp': int(time.time()),
534540
'bar': 'blerg',
541+
'multi': ['FOO','BAR'],
535542
'foo': 59
536543
}
537544

538-
self.consumer = oauth.Consumer(key="consumer-key",
545+
self.consumer = oauth.Consumer(key="consumer-key",
539546
secret="consumer-secret")
540547
self.token = oauth.Token(key="token-key", secret="token-secret")
541548

@@ -549,7 +556,7 @@ def setUp(self):
549556
def test_init(self):
550557
server = oauth.Server(signature_methods={'HMAC-SHA1' : oauth.SignatureMethod_HMAC_SHA1()})
551558
self.assertTrue('HMAC-SHA1' in server.signature_methods)
552-
self.assertTrue(isinstance(server.signature_methods['HMAC-SHA1'],
559+
self.assertTrue(isinstance(server.signature_methods['HMAC-SHA1'],
553560
oauth.SignatureMethod_HMAC_SHA1))
554561

555562
server = oauth.Server()
@@ -558,15 +565,15 @@ def test_init(self):
558565
def test_add_signature_method(self):
559566
server = oauth.Server()
560567
res = server.add_signature_method(oauth.SignatureMethod_HMAC_SHA1())
561-
self.assertTrue(len(res) == 1)
568+
self.assertTrue(len(res) == 1)
562569
self.assertTrue('HMAC-SHA1' in res)
563-
self.assertTrue(isinstance(res['HMAC-SHA1'],
570+
self.assertTrue(isinstance(res['HMAC-SHA1'],
564571
oauth.SignatureMethod_HMAC_SHA1))
565572

566573
res = server.add_signature_method(oauth.SignatureMethod_PLAINTEXT())
567-
self.assertTrue(len(res) == 2)
574+
self.assertTrue(len(res) == 2)
568575
self.assertTrue('PLAINTEXT' in res)
569-
self.assertTrue(isinstance(res['PLAINTEXT'],
576+
self.assertTrue(isinstance(res['PLAINTEXT'],
570577
oauth.SignatureMethod_PLAINTEXT))
571578

572579
def test_verify_request(self):
@@ -578,8 +585,10 @@ def test_verify_request(self):
578585

579586
self.assertTrue('bar' in parameters)
580587
self.assertTrue('foo' in parameters)
588+
self.assertTrue('multi' in parameters)
581589
self.assertEquals(parameters['bar'], 'blerg')
582590
self.assertEquals(parameters['foo'], 59)
591+
self.assertEquals(parameters['multi'], ['FOO','BAR'])
583592

584593
def test_no_version(self):
585594
url = "http://sp.example.com/"
@@ -588,10 +597,11 @@ def test_no_version(self):
588597
'oauth_nonce': "4572616e48616d6d65724c61686176",
589598
'oauth_timestamp': int(time.time()),
590599
'bar': 'blerg',
600+
'multi': ['FOO','BAR'],
591601
'foo': 59
592602
}
593603

594-
self.consumer = oauth.Consumer(key="consumer-key",
604+
self.consumer = oauth.Consumer(key="consumer-key",
595605
secret="consumer-secret")
596606
self.token = oauth.Token(key="token-key", secret="token-secret")
597607

@@ -616,10 +626,11 @@ def test_invalid_version(self):
616626
'oauth_nonce': "4572616e48616d6d65724c61686176",
617627
'oauth_timestamp': int(time.time()),
618628
'bar': 'blerg',
629+
'multi': ['foo','bar'],
619630
'foo': 59
620631
}
621632

622-
consumer = oauth.Consumer(key="consumer-key",
633+
consumer = oauth.Consumer(key="consumer-key",
623634
secret="consumer-secret")
624635
token = oauth.Token(key="token-key", secret="token-secret")
625636

@@ -633,7 +644,7 @@ def test_invalid_version(self):
633644
server = oauth.Server()
634645
server.add_signature_method(oauth.SignatureMethod_HMAC_SHA1())
635646

636-
self.assertRaises(oauth.Error, server.verify_request, request,
647+
self.assertRaises(oauth.Error, server.verify_request, request,
637648
consumer, token)
638649

639650
def test_invalid_signature_method(self):
@@ -644,10 +655,11 @@ def test_invalid_signature_method(self):
644655
'oauth_nonce': "4572616e48616d6d65724c61686176",
645656
'oauth_timestamp': int(time.time()),
646657
'bar': 'blerg',
658+
'multi': ['FOO','BAR'],
647659
'foo': 59
648660
}
649661

650-
consumer = oauth.Consumer(key="consumer-key",
662+
consumer = oauth.Consumer(key="consumer-key",
651663
secret="consumer-secret")
652664
token = oauth.Token(key="token-key", secret="token-secret")
653665

@@ -661,7 +673,7 @@ def test_invalid_signature_method(self):
661673
server = oauth.Server()
662674
server.add_signature_method(oauth.SignatureMethod_HMAC_SHA1())
663675

664-
self.assertRaises(oauth.Error, server.verify_request, request,
676+
self.assertRaises(oauth.Error, server.verify_request, request,
665677
consumer, token)
666678

667679
def test_missing_signature(self):
@@ -672,10 +684,11 @@ def test_missing_signature(self):
672684
'oauth_nonce': "4572616e48616d6d65724c61686176",
673685
'oauth_timestamp': int(time.time()),
674686
'bar': 'blerg',
687+
'multi': ['FOO','BAR'],
675688
'foo': 59
676689
}
677690

678-
consumer = oauth.Consumer(key="consumer-key",
691+
consumer = oauth.Consumer(key="consumer-key",
679692
secret="consumer-secret")
680693
token = oauth.Token(key="token-key", secret="token-secret")
681694

@@ -690,15 +703,15 @@ def test_missing_signature(self):
690703
server = oauth.Server()
691704
server.add_signature_method(oauth.SignatureMethod_HMAC_SHA1())
692705

693-
self.assertRaises(oauth.MissingSignature, server.verify_request,
706+
self.assertRaises(oauth.MissingSignature, server.verify_request,
694707
request, consumer, token)
695708

696709

697-
# Request Token: http://oauth-sandbox.sevengoslings.net/request_token
698-
# Auth: http://oauth-sandbox.sevengoslings.net/authorize
699-
# Access Token: http://oauth-sandbox.sevengoslings.net/access_token
700-
# Two-legged: http://oauth-sandbox.sevengoslings.net/two_legged
701-
# Three-legged: http://oauth-sandbox.sevengoslings.net/three_legged
710+
# Request Token: http://oauth-sandbox.sevengoslings.net/request_token
711+
# Auth: http://oauth-sandbox.sevengoslings.net/authorize
712+
# Access Token: http://oauth-sandbox.sevengoslings.net/access_token
713+
# Two-legged: http://oauth-sandbox.sevengoslings.net/two_legged
714+
# Three-legged: http://oauth-sandbox.sevengoslings.net/three_legged
702715
# Key: bd37aed57e15df53
703716
# Secret: 0e9e6413a9ef49510a4f68ed02cd
704717
class TestClient(unittest.TestCase):
@@ -714,18 +727,19 @@ class TestClient(unittest.TestCase):
714727
'two_legged': '/two_legged',
715728
'three_legged': '/three_legged'
716729
}
717-
730+
718731
consumer_key = 'bd37aed57e15df53'
719732
consumer_secret = '0e9e6413a9ef49510a4f68ed02cd'
720733
host = 'http://oauth-sandbox.sevengoslings.net'
721734

722735
def setUp(self):
723-
self.consumer = oauth.Consumer(key=self.consumer_key,
736+
self.consumer = oauth.Consumer(key=self.consumer_key,
724737
secret=self.consumer_secret)
725738

726739
self.body = {
727740
'foo': 'bar',
728741
'bar': 'foo',
742+
'multi': ['FOO','BAR'],
729743
'blah': 599999
730744
}
731745

@@ -735,7 +749,7 @@ def _uri(self, type):
735749
raise KeyError("%s is not a valid OAuth URI type." % type)
736750

737751
return "%s%s" % (self.host, uri)
738-
752+
739753
def test_access_token_get(self):
740754
"""Test getting an access token via GET."""
741755
client = oauth.Client(self.consumer, None)
@@ -757,7 +771,7 @@ def test_access_token_post(self):
757771
def _two_legged(self, method):
758772
client = oauth.Client(self.consumer, None)
759773

760-
return client.request(self._uri('two_legged'), method,
774+
return client.request(self._uri('two_legged'), method,
761775
body=urllib.urlencode(self.body))
762776

763777
def test_two_legged_post(self):

0 commit comments

Comments
 (0)