Skip to content

Commit d9033bd

Browse files
committed
Added tests for _authenticate_basic_auth:
Now OAuth2Validator._authenticate_basic_auth contains 2 valunerabilities: * It will raise TypeError, if auth_string cant be decoded as base64 * It will raise UnicodeDecodeError, if b64 decoded string cant be decoded as unicode
1 parent 03d6f59 commit d9033bd

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

oauth2_provider/tests/test_oauth2_validators.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,36 @@ def test_extract_basic_auth(self):
4545
self.request.headers = {'HTTP_AUTHORIZATION': 'Basic 123456 789'}
4646
self.assertEqual(self.validator._extract_basic_auth(self.request), '123456 789')
4747

48+
def test_authenticate_basic_auth(self):
49+
self.request.encoding = 'utf-8'
50+
# client_id:client_secret
51+
self.request.headers = {'HTTP_AUTHORIZATION': 'Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=\n'}
52+
self.assertTrue(self.validator._authenticate_basic_auth(self.request))
53+
54+
def test_authenticate_basic_auth_wrong_client_id(self):
55+
self.request.encoding = 'utf-8'
56+
# wrong_id:client_secret
57+
self.request.headers = {'HTTP_AUTHORIZATION': 'Basic d3JvbmdfaWQ6Y2xpZW50X3NlY3JldA==\n'}
58+
self.assertFalse(self.validator._authenticate_basic_auth(self.request))
59+
60+
def test_authenticate_basic_auth_wrong_client_secret(self):
61+
self.request.encoding = 'utf-8'
62+
# client_id:wrong_secret
63+
self.request.headers = {'HTTP_AUTHORIZATION': 'Basic Y2xpZW50X2lkOndyb25nX3NlY3JldA==\n'}
64+
self.assertFalse(self.validator._authenticate_basic_auth(self.request))
65+
66+
def test_authenticate_basic_auth_not_b64_auth_string(self):
67+
self.request.encoding = 'utf-8'
68+
# Can't b64decode
69+
self.request.headers = {'HTTP_AUTHORIZATION': 'Basic not_base64'}
70+
self.assertFalse(self.validator._authenticate_basic_auth(self.request))
71+
72+
def test_authenticate_basic_auth_not_utf8(self):
73+
self.request.encoding = 'utf-8'
74+
# b64decode('test') will become b'\xb5\xeb-', it can't be decoded as utf-8
75+
self.request.headers = {'HTTP_AUTHORIZATION': 'Basic test'}
76+
self.assertFalse(self.validator._authenticate_basic_auth(self.request))
77+
4878
def test_authenticate_client_id(self):
4979
self.assertTrue(self.validator.authenticate_client_id('client_id', self.request))
5080

0 commit comments

Comments
 (0)