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
1=== modified file 'django_project/settings_base.py'
2--- django_project/settings_base.py 2016-02-19 17:11:09 +0000
3+++ django_project/settings_base.py 2016-05-25 14:22:07 +0000
4@@ -344,7 +344,7 @@
5 ROOT_URLCONF = 'urls'
6 SCA_APPS_CACHE_TIMEOUT = 3600
7 SCA_DELEGATED_SSO_SECRET = ''
8-SCA_HOST_URL = 'https://sc.staging.ubuntu.com/'
9+SCA_HOST_URL = 'https://myapps.developer.staging.ubuntu.com/'
10 SECURE_PROXY_SSL_HEADER = None
11 SEND_BROKEN_LINK_EMAILS = False
12 SERVER_EMAIL = 'root@localhost'
13
14=== modified file 'src/core/tests/test_utilities.py'
15--- src/core/tests/test_utilities.py 2016-05-17 14:32:12 +0000
16+++ src/core/tests/test_utilities.py 2016-05-25 14:22:07 +0000
17@@ -1,3 +1,4 @@
18+import json
19 import os
20
21 from django.conf import settings
22@@ -532,16 +533,32 @@
23 expected.update(**kwargs)
24 self.assertEqual(data, expected)
25
26+ def assert_verify_acl_request(self, request):
27+ headers = {'Content-Type': 'application/json'}
28+ body = json.dumps({
29+ 'auth_data': {
30+ 'http_url': request.build_absolute_uri(),
31+ 'http_method': request.method,
32+ 'authorization': request.META['HTTP_AUTHORIZATION'],
33+ }
34+ })
35+ match = self.requests_double.find_call(
36+ settings.SCA_HOST_URL.strip('/') + '/dev/api/acl/verify/',
37+ headers=headers, body=body, method='POST')
38+ self.assertIsNotNone(match)
39+
40 def test_verify_acl_allowed(self):
41 self.sca_double.set_verify_acl_response()
42 request = self.make_request()
43 data = self.sca.verify_acl(request)
44+ self.assert_verify_acl_request(request)
45 self.assert_verify_acl_response(data)
46
47 def test_verify_acl_not_allowed(self):
48 self.sca_double.set_verify_acl_response(allowed=False)
49 request = self.make_request()
50 data = self.sca.verify_acl(request)
51+ self.assert_verify_acl_request(request)
52 self.assertIsNone(data)
53
54 def test_verify_acl_failed(self):
55@@ -550,6 +567,7 @@
56 method='POST', body='some error', status_code=500)
57 request = self.make_request()
58 data = self.sca.verify_acl(request)
59+ self.assert_verify_acl_request(request)
60 self.assertIsNone(data)
61 self.mock_logger.warn.assert_called_once_with(
62 'Failed to verify acl. Response: some error (500)')
63@@ -558,6 +576,7 @@
64 self.sca_double.set_verify_acl_response(permissions=['package_upload'])
65 request = self.make_request()
66 data = self.sca.verify_acl(request)
67+ self.assert_verify_acl_request(request)
68 self.assertIsNone(data)
69
70 def test_verify_acl_returns_account_data(self):
71@@ -576,4 +595,5 @@
72 self.sca_double.set_verify_acl_response(**expected)
73 request = self.make_request()
74 data = self.sca.verify_acl(request)
75+ self.assert_verify_acl_request(request)
76 self.assert_verify_acl_response(data, **expected)
77
78=== modified file 'src/core/utilities.py'
79--- src/core/utilities.py 2016-05-17 14:32:12 +0000
80+++ src/core/utilities.py 2016-05-25 14:22:07 +0000
81@@ -193,14 +193,15 @@
82
83 def verify_acl(self, request):
84 data = {
85- 'auth_data': json.dumps({
86+ 'auth_data': {
87 'http_url': request.build_absolute_uri(),
88 'http_method': request.method,
89 'authorization': request.META.get('HTTP_AUTHORIZATION', None),
90- }),
91+ },
92 }
93 url = settings.SCA_HOST_URL.strip('/') + '/dev/api/acl/verify/'
94- response = requests.post(url, data=json.dumps(data))
95+ response = requests.post(url, data=json.dumps(data),
96+ headers={'Content-Type': 'application/json'})
97 if response.ok:
98 data = response.json()
99 if data.get('allowed', False):

Subscribers

People subscribed via source and target branches