Merge lp:~ricardokirkner/rnr-server/fix-acl-verify-request into lp:rnr-server

Proposed by Ricardo Kirkner
Status: Merged
Approved by: Ricardo Kirkner
Approved revision: 321
Merged at revision: 320
Proposed branch: lp:~ricardokirkner/rnr-server/fix-acl-verify-request
Merge into: lp:rnr-server
Diff against target: 99 lines (+25/-4)
3 files modified
django_project/settings_base.py (+1/-1)
src/core/tests/test_utilities.py (+20/-0)
src/core/utilities.py (+4/-3)
To merge this branch: bzr merge lp:~ricardokirkner/rnr-server/fix-acl-verify-request
Reviewer Review Type Date Requested Status
Facundo Batista (community) Approve
Matt Goodall (community) Approve
Review via email: mp+295721@code.launchpad.net

Commit message

ensure acl verify request is made properly

send body data as a json encoded dict

To post a comment you must log in.
Revision history for this message
Facundo Batista (facundo) :
review: Needs Information
Revision history for this message
Matt Goodall (matt-goodall) wrote :

lgtm, with a question

review: Approve
Revision history for this message
Ricardo Kirkner (ricardokirkner) :
Revision history for this message
Facundo Batista (facundo) wrote :

Thanks

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'django_project/settings_base.py'
--- django_project/settings_base.py 2016-02-19 17:11:09 +0000
+++ django_project/settings_base.py 2016-05-25 14:22:07 +0000
@@ -344,7 +344,7 @@
344ROOT_URLCONF = 'urls'344ROOT_URLCONF = 'urls'
345SCA_APPS_CACHE_TIMEOUT = 3600345SCA_APPS_CACHE_TIMEOUT = 3600
346SCA_DELEGATED_SSO_SECRET = ''346SCA_DELEGATED_SSO_SECRET = ''
347SCA_HOST_URL = 'https://sc.staging.ubuntu.com/'347SCA_HOST_URL = 'https://myapps.developer.staging.ubuntu.com/'
348SECURE_PROXY_SSL_HEADER = None348SECURE_PROXY_SSL_HEADER = None
349SEND_BROKEN_LINK_EMAILS = False349SEND_BROKEN_LINK_EMAILS = False
350SERVER_EMAIL = 'root@localhost'350SERVER_EMAIL = 'root@localhost'
351351
=== modified file 'src/core/tests/test_utilities.py'
--- src/core/tests/test_utilities.py 2016-05-17 14:32:12 +0000
+++ src/core/tests/test_utilities.py 2016-05-25 14:22:07 +0000
@@ -1,3 +1,4 @@
1import json
1import os2import os
23
3from django.conf import settings4from django.conf import settings
@@ -532,16 +533,32 @@
532 expected.update(**kwargs)533 expected.update(**kwargs)
533 self.assertEqual(data, expected)534 self.assertEqual(data, expected)
534535
536 def assert_verify_acl_request(self, request):
537 headers = {'Content-Type': 'application/json'}
538 body = json.dumps({
539 'auth_data': {
540 'http_url': request.build_absolute_uri(),
541 'http_method': request.method,
542 'authorization': request.META['HTTP_AUTHORIZATION'],
543 }
544 })
545 match = self.requests_double.find_call(
546 settings.SCA_HOST_URL.strip('/') + '/dev/api/acl/verify/',
547 headers=headers, body=body, method='POST')
548 self.assertIsNotNone(match)
549
535 def test_verify_acl_allowed(self):550 def test_verify_acl_allowed(self):
536 self.sca_double.set_verify_acl_response()551 self.sca_double.set_verify_acl_response()
537 request = self.make_request()552 request = self.make_request()
538 data = self.sca.verify_acl(request)553 data = self.sca.verify_acl(request)
554 self.assert_verify_acl_request(request)
539 self.assert_verify_acl_response(data)555 self.assert_verify_acl_response(data)
540556
541 def test_verify_acl_not_allowed(self):557 def test_verify_acl_not_allowed(self):
542 self.sca_double.set_verify_acl_response(allowed=False)558 self.sca_double.set_verify_acl_response(allowed=False)
543 request = self.make_request()559 request = self.make_request()
544 data = self.sca.verify_acl(request)560 data = self.sca.verify_acl(request)
561 self.assert_verify_acl_request(request)
545 self.assertIsNone(data)562 self.assertIsNone(data)
546563
547 def test_verify_acl_failed(self):564 def test_verify_acl_failed(self):
@@ -550,6 +567,7 @@
550 method='POST', body='some error', status_code=500)567 method='POST', body='some error', status_code=500)
551 request = self.make_request()568 request = self.make_request()
552 data = self.sca.verify_acl(request)569 data = self.sca.verify_acl(request)
570 self.assert_verify_acl_request(request)
553 self.assertIsNone(data)571 self.assertIsNone(data)
554 self.mock_logger.warn.assert_called_once_with(572 self.mock_logger.warn.assert_called_once_with(
555 'Failed to verify acl. Response: some error (500)')573 'Failed to verify acl. Response: some error (500)')
@@ -558,6 +576,7 @@
558 self.sca_double.set_verify_acl_response(permissions=['package_upload'])576 self.sca_double.set_verify_acl_response(permissions=['package_upload'])
559 request = self.make_request()577 request = self.make_request()
560 data = self.sca.verify_acl(request)578 data = self.sca.verify_acl(request)
579 self.assert_verify_acl_request(request)
561 self.assertIsNone(data)580 self.assertIsNone(data)
562581
563 def test_verify_acl_returns_account_data(self):582 def test_verify_acl_returns_account_data(self):
@@ -576,4 +595,5 @@
576 self.sca_double.set_verify_acl_response(**expected)595 self.sca_double.set_verify_acl_response(**expected)
577 request = self.make_request()596 request = self.make_request()
578 data = self.sca.verify_acl(request)597 data = self.sca.verify_acl(request)
598 self.assert_verify_acl_request(request)
579 self.assert_verify_acl_response(data, **expected)599 self.assert_verify_acl_response(data, **expected)
580600
=== modified file 'src/core/utilities.py'
--- src/core/utilities.py 2016-05-17 14:32:12 +0000
+++ src/core/utilities.py 2016-05-25 14:22:07 +0000
@@ -193,14 +193,15 @@
193193
194 def verify_acl(self, request):194 def verify_acl(self, request):
195 data = {195 data = {
196 'auth_data': json.dumps({196 'auth_data': {
197 'http_url': request.build_absolute_uri(),197 'http_url': request.build_absolute_uri(),
198 'http_method': request.method,198 'http_method': request.method,
199 'authorization': request.META.get('HTTP_AUTHORIZATION', None),199 'authorization': request.META.get('HTTP_AUTHORIZATION', None),
200 }),200 },
201 }201 }
202 url = settings.SCA_HOST_URL.strip('/') + '/dev/api/acl/verify/'202 url = settings.SCA_HOST_URL.strip('/') + '/dev/api/acl/verify/'
203 response = requests.post(url, data=json.dumps(data))203 response = requests.post(url, data=json.dumps(data),
204 headers={'Content-Type': 'application/json'})
204 if response.ok:205 if response.ok:
205 data = response.json()206 data = response.json()
206 if data.get('allowed', False):207 if data.get('allowed', False):

Subscribers

People subscribed via source and target branches