Merge ~cjwatson/launchpad:webservice-for-person-anonymous into launchpad:master
- Git
- lp:~cjwatson/launchpad
- webservice-for-person-anonymous
- Merge into master
Proposed by
Colin Watson
Status: | Merged |
---|---|
Approved by: | Colin Watson |
Approved revision: | acd9d212c4ef9f78729fafdd6ff321e529f9d217 |
Merge reported by: | Otto Co-Pilot |
Merged at revision: | not available |
Proposed branch: | ~cjwatson/launchpad:webservice-for-person-anonymous |
Merge into: | launchpad:master |
Diff against target: |
530 lines (+56/-105) 12 files modified
lib/lp/app/webservice/tests/test_marshallers.py (+4/-11) lib/lp/blueprints/tests/test_webservice.py (+2/-8) lib/lp/bugs/browser/tests/test_bugattachment_file_access.py (+2/-8) lib/lp/bugs/tests/test_bug_messages_webservice.py (+2/-7) lib/lp/buildmaster/tests/test_processor.py (+5/-11) lib/lp/code/model/tests/test_branchset.py (+2/-4) lib/lp/code/model/tests/test_gitrepository.py (+4/-10) lib/lp/registry/browser/tests/test_person_webservice.py (+1/-3) lib/lp/services/webhooks/tests/test_webservice.py (+4/-7) lib/lp/snappy/tests/test_snap.py (+6/-14) lib/lp/soyuz/browser/tests/test_archive_webservice.py (+7/-9) lib/lp/testing/pages.py (+17/-13) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ioana Lasc (community) | Approve | ||
Review via email: mp+400966@code.launchpad.net |
Commit message
Extend webservice_
Description of the change
This simplifies some tests of anonymous webservice behaviour, and allows those tests to look more like nearby tests that authenticate as a real user.
To post a comment you must log in.
Revision history for this message
Ioana Lasc (ilasc) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/lib/lp/app/webservice/tests/test_marshallers.py b/lib/lp/app/webservice/tests/test_marshallers.py | |||
2 | index e689d96..08c2068 100644 | |||
3 | --- a/lib/lp/app/webservice/tests/test_marshallers.py | |||
4 | +++ b/lib/lp/app/webservice/tests/test_marshallers.py | |||
5 | @@ -30,16 +30,12 @@ from lp.services.job.interfaces.job import JobStatus | |||
6 | 30 | from lp.services.webapp.publisher import canonical_url | 30 | from lp.services.webapp.publisher import canonical_url |
7 | 31 | from lp.services.webapp.servers import WebServiceTestRequest | 31 | from lp.services.webapp.servers import WebServiceTestRequest |
8 | 32 | from lp.testing import ( | 32 | from lp.testing import ( |
9 | 33 | logout, | ||
10 | 34 | person_logged_in, | 33 | person_logged_in, |
11 | 35 | TestCaseWithFactory, | 34 | TestCaseWithFactory, |
12 | 36 | ) | 35 | ) |
13 | 37 | from lp.testing.fixture import ZopeAdapterFixture | 36 | from lp.testing.fixture import ZopeAdapterFixture |
14 | 38 | from lp.testing.layers import DatabaseFunctionalLayer | 37 | from lp.testing.layers import DatabaseFunctionalLayer |
19 | 39 | from lp.testing.pages import ( | 38 | from lp.testing.pages import webservice_for_person |
16 | 40 | LaunchpadWebServiceCaller, | ||
17 | 41 | webservice_for_person, | ||
18 | 42 | ) | ||
20 | 43 | 39 | ||
21 | 44 | 40 | ||
22 | 45 | def ws_url(bug): | 41 | def ws_url(bug): |
23 | @@ -90,8 +86,7 @@ class TestWebServiceObfuscation(TestCaseWithFactory): | |||
24 | 90 | def test_email_address_obfuscated(self): | 86 | def test_email_address_obfuscated(self): |
25 | 91 | # Email addresses are obfuscated for anonymous users. | 87 | # Email addresses are obfuscated for anonymous users. |
26 | 92 | bug = self._makeBug() | 88 | bug = self._makeBug() |
29 | 93 | logout() | 89 | webservice = webservice_for_person(None) |
28 | 94 | webservice = LaunchpadWebServiceCaller() | ||
30 | 95 | result = webservice(ws_url(bug)).jsonBody() | 90 | result = webservice(ws_url(bug)).jsonBody() |
31 | 96 | self.assertEqual( | 91 | self.assertEqual( |
32 | 97 | self.bug_title % self.email_address_obfuscated, | 92 | self.bug_title % self.email_address_obfuscated, |
33 | @@ -125,8 +120,7 @@ class TestWebServiceObfuscation(TestCaseWithFactory): | |||
34 | 125 | # Email addresses are obfuscated in the XML representation for | 120 | # Email addresses are obfuscated in the XML representation for |
35 | 126 | # anonymous users. | 121 | # anonymous users. |
36 | 127 | bug = self._makeBug() | 122 | bug = self._makeBug() |
39 | 128 | logout() | 123 | webservice = webservice_for_person(None) |
38 | 129 | webservice = LaunchpadWebServiceCaller() | ||
40 | 130 | result = webservice( | 124 | result = webservice( |
41 | 131 | ws_url(bug), headers={'Accept': 'application/xhtml+xml'}) | 125 | ws_url(bug), headers={'Accept': 'application/xhtml+xml'}) |
42 | 132 | self.assertNotIn(self.email_address.encode('UTF-8'), result.body) | 126 | self.assertNotIn(self.email_address.encode('UTF-8'), result.body) |
43 | @@ -146,8 +140,7 @@ class TestWebServiceObfuscation(TestCaseWithFactory): | |||
44 | 146 | user = self.factory.makePerson() | 140 | user = self.factory.makePerson() |
45 | 147 | webservice = webservice_for_person(user) | 141 | webservice = webservice_for_person(user) |
46 | 148 | etag_logged_in = webservice(ws_url(bug)).getheader('etag') | 142 | etag_logged_in = webservice(ws_url(bug)).getheader('etag') |
49 | 149 | logout() | 143 | webservice = webservice_for_person(None) |
48 | 150 | webservice = LaunchpadWebServiceCaller() | ||
50 | 151 | etag_logged_out = webservice(ws_url(bug)).getheader('etag') | 144 | etag_logged_out = webservice(ws_url(bug)).getheader('etag') |
51 | 152 | self.assertNotEqual(etag_logged_in, etag_logged_out) | 145 | self.assertNotEqual(etag_logged_in, etag_logged_out) |
52 | 153 | 146 | ||
53 | diff --git a/lib/lp/blueprints/tests/test_webservice.py b/lib/lp/blueprints/tests/test_webservice.py | |||
54 | index 7ff1ce7..39f1b92 100644 | |||
55 | --- a/lib/lp/blueprints/tests/test_webservice.py | |||
56 | +++ b/lib/lp/blueprints/tests/test_webservice.py | |||
57 | @@ -28,15 +28,11 @@ from lp.testing import ( | |||
58 | 28 | admin_logged_in, | 28 | admin_logged_in, |
59 | 29 | api_url, | 29 | api_url, |
60 | 30 | login, | 30 | login, |
61 | 31 | logout, | ||
62 | 32 | person_logged_in, | 31 | person_logged_in, |
63 | 33 | TestCaseWithFactory, | 32 | TestCaseWithFactory, |
64 | 34 | ) | 33 | ) |
65 | 35 | from lp.testing.layers import DatabaseFunctionalLayer | 34 | from lp.testing.layers import DatabaseFunctionalLayer |
70 | 36 | from lp.testing.pages import ( | 35 | from lp.testing.pages import webservice_for_person |
67 | 37 | LaunchpadWebServiceCaller, | ||
68 | 38 | webservice_for_person, | ||
69 | 39 | ) | ||
71 | 40 | 36 | ||
72 | 41 | 37 | ||
73 | 42 | class SpecificationWebserviceTests(TestCaseWithFactory): | 38 | class SpecificationWebserviceTests(TestCaseWithFactory): |
74 | @@ -424,9 +420,7 @@ class IHasSpecificationsTests(TestCaseWithFactory): | |||
75 | 424 | self.factory.makeSpecification(product=product, name="spec1") | 420 | self.factory.makeSpecification(product=product, name="spec1") |
76 | 425 | self.factory.makeSpecification(product=product, name="spec2") | 421 | self.factory.makeSpecification(product=product, name="spec2") |
77 | 426 | product_url = api_url(product) | 422 | product_url = api_url(product) |
81 | 427 | logout() | 423 | webservice = webservice_for_person(None, default_api_version="devel") |
79 | 428 | webservice = LaunchpadWebServiceCaller( | ||
80 | 429 | "test", "", default_api_version="devel") | ||
82 | 430 | response = webservice.get(product_url) | 424 | response = webservice.get(product_url) |
83 | 431 | self.assertEqual(200, response.status) | 425 | self.assertEqual(200, response.status) |
84 | 432 | response = webservice.get( | 426 | response = webservice.get( |
85 | diff --git a/lib/lp/bugs/browser/tests/test_bugattachment_file_access.py b/lib/lp/bugs/browser/tests/test_bugattachment_file_access.py | |||
86 | index 4faa851..a517d97 100644 | |||
87 | --- a/lib/lp/bugs/browser/tests/test_bugattachment_file_access.py | |||
88 | +++ b/lib/lp/bugs/browser/tests/test_bugattachment_file_access.py | |||
89 | @@ -31,14 +31,10 @@ from lp.services.webapp.servers import LaunchpadTestRequest | |||
90 | 31 | from lp.testing import ( | 31 | from lp.testing import ( |
91 | 32 | api_url, | 32 | api_url, |
92 | 33 | login_person, | 33 | login_person, |
93 | 34 | logout, | ||
94 | 35 | TestCaseWithFactory, | 34 | TestCaseWithFactory, |
95 | 36 | ) | 35 | ) |
96 | 37 | from lp.testing.layers import LaunchpadFunctionalLayer | 36 | from lp.testing.layers import LaunchpadFunctionalLayer |
101 | 38 | from lp.testing.pages import ( | 37 | from lp.testing.pages import webservice_for_person |
98 | 39 | LaunchpadWebServiceCaller, | ||
99 | 40 | webservice_for_person, | ||
100 | 41 | ) | ||
102 | 42 | 38 | ||
103 | 43 | 39 | ||
104 | 44 | class TestAccessToBugAttachmentFiles(TestCaseWithFactory): | 40 | class TestAccessToBugAttachmentFiles(TestCaseWithFactory): |
105 | @@ -138,9 +134,7 @@ class TestWebserviceAccessToBugAttachmentFiles(TestCaseWithFactory): | |||
106 | 138 | 134 | ||
107 | 139 | def test_anon_access_to_public_bug_attachment(self): | 135 | def test_anon_access_to_public_bug_attachment(self): |
108 | 140 | # Attachments of public bugs can be accessed by anonymous users. | 136 | # Attachments of public bugs can be accessed by anonymous users. |
112 | 141 | logout() | 137 | webservice = webservice_for_person(None, default_api_version='devel') |
110 | 142 | webservice = LaunchpadWebServiceCaller( | ||
111 | 143 | 'test', '', default_api_version='devel') | ||
113 | 144 | ws_bug = self.getWebserviceJSON(webservice, self.bug_url) | 138 | ws_bug = self.getWebserviceJSON(webservice, self.bug_url) |
114 | 145 | ws_bug_attachment = self.getWebserviceJSON( | 139 | ws_bug_attachment = self.getWebserviceJSON( |
115 | 146 | webservice, ws_bug['attachments_collection_link'])['entries'][0] | 140 | webservice, ws_bug['attachments_collection_link'])['entries'][0] |
116 | diff --git a/lib/lp/bugs/tests/test_bug_messages_webservice.py b/lib/lp/bugs/tests/test_bug_messages_webservice.py | |||
117 | index 5faae0e..dbd3507 100644 | |||
118 | --- a/lib/lp/bugs/tests/test_bug_messages_webservice.py | |||
119 | +++ b/lib/lp/bugs/tests/test_bug_messages_webservice.py | |||
120 | @@ -21,7 +21,6 @@ from lp.testing import ( | |||
121 | 21 | api_url, | 21 | api_url, |
122 | 22 | launchpadlib_for, | 22 | launchpadlib_for, |
123 | 23 | login_celebrity, | 23 | login_celebrity, |
124 | 24 | logout, | ||
125 | 25 | person_logged_in, | 24 | person_logged_in, |
126 | 26 | TestCaseWithFactory, | 25 | TestCaseWithFactory, |
127 | 27 | ) | 26 | ) |
128 | @@ -29,10 +28,7 @@ from lp.testing.layers import ( | |||
129 | 29 | DatabaseFunctionalLayer, | 28 | DatabaseFunctionalLayer, |
130 | 30 | LaunchpadFunctionalLayer, | 29 | LaunchpadFunctionalLayer, |
131 | 31 | ) | 30 | ) |
136 | 32 | from lp.testing.pages import ( | 31 | from lp.testing.pages import webservice_for_person |
133 | 33 | LaunchpadWebServiceCaller, | ||
134 | 34 | webservice_for_person, | ||
135 | 35 | ) | ||
137 | 36 | 32 | ||
138 | 37 | 33 | ||
139 | 38 | class TestMessageTraversal(TestCaseWithFactory): | 34 | class TestMessageTraversal(TestCaseWithFactory): |
140 | @@ -104,9 +100,8 @@ class TestBugMessage(TestCaseWithFactory): | |||
141 | 104 | self.factory.makeBugAttachment(bug).id for i in range(3)) | 100 | self.factory.makeBugAttachment(bug).id for i in range(3)) |
142 | 105 | bug_url = api_url(bug) | 101 | bug_url = api_url(bug) |
143 | 106 | self.assertThat(created_attachment_ids, HasLength(3)) | 102 | self.assertThat(created_attachment_ids, HasLength(3)) |
144 | 107 | logout() | ||
145 | 108 | 103 | ||
147 | 109 | webservice = LaunchpadWebServiceCaller('test', None) | 104 | webservice = webservice_for_person(None) |
148 | 110 | bug_attachments = webservice.get( | 105 | bug_attachments = webservice.get( |
149 | 111 | bug_url + '/attachments').jsonBody()['entries'] | 106 | bug_url + '/attachments').jsonBody()['entries'] |
150 | 112 | bug_attachment_ids = set( | 107 | bug_attachment_ids = set( |
151 | diff --git a/lib/lp/buildmaster/tests/test_processor.py b/lib/lp/buildmaster/tests/test_processor.py | |||
152 | index a639b7a..7bd8269 100644 | |||
153 | --- a/lib/lp/buildmaster/tests/test_processor.py | |||
154 | +++ b/lib/lp/buildmaster/tests/test_processor.py | |||
155 | @@ -16,11 +16,10 @@ from lp.buildmaster.model.processor import Processor | |||
156 | 16 | from lp.services.database.interfaces import IStore | 16 | from lp.services.database.interfaces import IStore |
157 | 17 | from lp.testing import ( | 17 | from lp.testing import ( |
158 | 18 | ExpectedException, | 18 | ExpectedException, |
159 | 19 | logout, | ||
160 | 20 | TestCaseWithFactory, | 19 | TestCaseWithFactory, |
161 | 21 | ) | 20 | ) |
162 | 22 | from lp.testing.layers import DatabaseFunctionalLayer | 21 | from lp.testing.layers import DatabaseFunctionalLayer |
164 | 23 | from lp.testing.pages import LaunchpadWebServiceCaller | 22 | from lp.testing.pages import webservice_for_person |
165 | 24 | 23 | ||
166 | 25 | 24 | ||
167 | 26 | class ProcessorSetTests(TestCaseWithFactory): | 25 | class ProcessorSetTests(TestCaseWithFactory): |
168 | @@ -59,15 +58,11 @@ class ProcessorSetTests(TestCaseWithFactory): | |||
169 | 59 | class ProcessorSetWebServiceTests(TestCaseWithFactory): | 58 | class ProcessorSetWebServiceTests(TestCaseWithFactory): |
170 | 60 | layer = DatabaseFunctionalLayer | 59 | layer = DatabaseFunctionalLayer |
171 | 61 | 60 | ||
172 | 62 | def setUp(self): | ||
173 | 63 | super(ProcessorSetWebServiceTests, self).setUp() | ||
174 | 64 | self.webservice = LaunchpadWebServiceCaller() | ||
175 | 65 | |||
176 | 66 | def test_getByName(self): | 61 | def test_getByName(self): |
177 | 67 | self.factory.makeProcessor(name='transmeta') | 62 | self.factory.makeProcessor(name='transmeta') |
178 | 68 | logout() | ||
179 | 69 | 63 | ||
181 | 70 | processor = self.webservice.named_get( | 64 | webservice = webservice_for_person(None) |
182 | 65 | processor = webservice.named_get( | ||
183 | 71 | '/+processors', 'getByName', name='transmeta', | 66 | '/+processors', 'getByName', name='transmeta', |
184 | 72 | api_version='devel').jsonBody() | 67 | api_version='devel').jsonBody() |
185 | 73 | self.assertEqual('transmeta', processor['name']) | 68 | self.assertEqual('transmeta', processor['name']) |
186 | @@ -80,9 +75,8 @@ class ProcessorSetWebServiceTests(TestCaseWithFactory): | |||
187 | 80 | self.factory.makeProcessor(name='i686') | 75 | self.factory.makeProcessor(name='i686') |
188 | 81 | self.factory.makeProcessor(name='g4') | 76 | self.factory.makeProcessor(name='g4') |
189 | 82 | 77 | ||
193 | 83 | logout() | 78 | webservice = webservice_for_person(None) |
194 | 84 | 79 | collection = webservice.get( | |
192 | 85 | collection = self.webservice.get( | ||
195 | 86 | '/+processors?ws.size=10', api_version='devel').jsonBody() | 80 | '/+processors?ws.size=10', api_version='devel').jsonBody() |
196 | 87 | self.assertEqual( | 81 | self.assertEqual( |
197 | 88 | ['g4', 'i686', 'q1'], | 82 | ['g4', 'i686', 'q1'], |
198 | diff --git a/lib/lp/code/model/tests/test_branchset.py b/lib/lp/code/model/tests/test_branchset.py | |||
199 | index 9de4d0a..6f742eb 100644 | |||
200 | --- a/lib/lp/code/model/tests/test_branchset.py | |||
201 | +++ b/lib/lp/code/model/tests/test_branchset.py | |||
202 | @@ -23,13 +23,12 @@ from lp.code.model.branch import BranchSet | |||
203 | 23 | from lp.services.propertycache import clear_property_cache | 23 | from lp.services.propertycache import clear_property_cache |
204 | 24 | from lp.testing import ( | 24 | from lp.testing import ( |
205 | 25 | login_person, | 25 | login_person, |
206 | 26 | logout, | ||
207 | 27 | RequestTimelineCollector, | 26 | RequestTimelineCollector, |
208 | 28 | TestCaseWithFactory, | 27 | TestCaseWithFactory, |
209 | 29 | ) | 28 | ) |
210 | 30 | from lp.testing.layers import DatabaseFunctionalLayer | 29 | from lp.testing.layers import DatabaseFunctionalLayer |
211 | 31 | from lp.testing.matchers import HasQueryCount | 30 | from lp.testing.matchers import HasQueryCount |
213 | 32 | from lp.testing.pages import LaunchpadWebServiceCaller | 31 | from lp.testing.pages import webservice_for_person |
214 | 33 | 32 | ||
215 | 34 | 33 | ||
216 | 35 | class TestBranchSet(TestCaseWithFactory): | 34 | class TestBranchSet(TestCaseWithFactory): |
217 | @@ -101,14 +100,13 @@ class TestBranchSet(TestCaseWithFactory): | |||
218 | 101 | None, order_by=BranchListingSort.MOST_RECENTLY_CHANGED_FIRST))) | 100 | None, order_by=BranchListingSort.MOST_RECENTLY_CHANGED_FIRST))) |
219 | 102 | 101 | ||
220 | 103 | def test_api_branches_query_count(self): | 102 | def test_api_branches_query_count(self): |
222 | 104 | webservice = LaunchpadWebServiceCaller() | 103 | webservice = webservice_for_person(None) |
223 | 105 | collector = RequestTimelineCollector() | 104 | collector = RequestTimelineCollector() |
224 | 106 | collector.register() | 105 | collector.register() |
225 | 107 | self.addCleanup(collector.unregister) | 106 | self.addCleanup(collector.unregister) |
226 | 108 | # Get 'all' of the 50 branches this collection is limited to - rather | 107 | # Get 'all' of the 50 branches this collection is limited to - rather |
227 | 109 | # than the default in-test-suite pagination size of 5. | 108 | # than the default in-test-suite pagination size of 5. |
228 | 110 | url = "/branches?ws.size=50" | 109 | url = "/branches?ws.size=50" |
229 | 111 | logout() | ||
230 | 112 | response = webservice.get(url, | 110 | response = webservice.get(url, |
231 | 113 | headers={'User-Agent': 'AnonNeedsThis'}) | 111 | headers={'User-Agent': 'AnonNeedsThis'}) |
232 | 114 | self.assertEqual(response.status, 200, | 112 | self.assertEqual(response.status, 200, |
233 | diff --git a/lib/lp/code/model/tests/test_gitrepository.py b/lib/lp/code/model/tests/test_gitrepository.py | |||
234 | index 6cec839..5790338 100644 | |||
235 | --- a/lib/lp/code/model/tests/test_gitrepository.py | |||
236 | +++ b/lib/lp/code/model/tests/test_gitrepository.py | |||
237 | @@ -174,7 +174,6 @@ from lp.testing import ( | |||
238 | 174 | api_url, | 174 | api_url, |
239 | 175 | celebrity_logged_in, | 175 | celebrity_logged_in, |
240 | 176 | login_person, | 176 | login_person, |
241 | 177 | logout, | ||
242 | 178 | person_logged_in, | 177 | person_logged_in, |
243 | 179 | record_two_runs, | 178 | record_two_runs, |
244 | 180 | StormStatementRecorder, | 179 | StormStatementRecorder, |
245 | @@ -192,10 +191,7 @@ from lp.testing.matchers import ( | |||
246 | 192 | DoesNotSnapshot, | 191 | DoesNotSnapshot, |
247 | 193 | HasQueryCount, | 192 | HasQueryCount, |
248 | 194 | ) | 193 | ) |
253 | 195 | from lp.testing.pages import ( | 194 | from lp.testing.pages import webservice_for_person |
250 | 196 | LaunchpadWebServiceCaller, | ||
251 | 197 | webservice_for_person, | ||
252 | 198 | ) | ||
254 | 199 | from lp.xmlrpc import faults | 195 | from lp.xmlrpc import faults |
255 | 200 | from lp.xmlrpc.interfaces import IPrivateApplication | 196 | from lp.xmlrpc.interfaces import IPrivateApplication |
256 | 201 | 197 | ||
257 | @@ -4582,8 +4578,8 @@ class TestGitRepositoryWebservice(TestCaseWithFactory): | |||
258 | 4582 | with person_logged_in(requester): | 4578 | with person_logged_in(requester): |
259 | 4583 | repository_url = api_url(repository) | 4579 | repository_url = api_url(repository) |
260 | 4584 | webservice = webservice_for_person( | 4580 | webservice = webservice_for_person( |
263 | 4585 | requester, permission=OAuthPermission.WRITE_PUBLIC) | 4581 | requester, permission=OAuthPermission.WRITE_PUBLIC, |
264 | 4586 | webservice.default_api_version = "devel" | 4582 | default_api_version="devel") |
265 | 4587 | response = webservice.named_post(repository_url, "issueAccessToken") | 4583 | response = webservice.named_post(repository_url, "issueAccessToken") |
266 | 4588 | self.assertEqual(200, response.status) | 4584 | self.assertEqual(200, response.status) |
267 | 4589 | macaroon = Macaroon.deserialize(response.jsonBody()) | 4585 | macaroon = Macaroon.deserialize(response.jsonBody()) |
268 | @@ -4606,9 +4602,7 @@ class TestGitRepositoryWebservice(TestCaseWithFactory): | |||
269 | 4606 | repository = self.factory.makeGitRepository() | 4602 | repository = self.factory.makeGitRepository() |
270 | 4607 | with person_logged_in(repository.owner): | 4603 | with person_logged_in(repository.owner): |
271 | 4608 | repository_url = api_url(repository) | 4604 | repository_url = api_url(repository) |
275 | 4609 | logout() | 4605 | webservice = webservice_for_person(None, default_api_version="devel") |
273 | 4610 | webservice = LaunchpadWebServiceCaller() | ||
274 | 4611 | webservice.default_api_version = "devel" | ||
276 | 4612 | response = webservice.named_post(repository_url, "issueAccessToken") | 4606 | response = webservice.named_post(repository_url, "issueAccessToken") |
277 | 4613 | self.assertEqual(401, response.status) | 4607 | self.assertEqual(401, response.status) |
278 | 4614 | self.assertEqual( | 4608 | self.assertEqual( |
279 | diff --git a/lib/lp/registry/browser/tests/test_person_webservice.py b/lib/lp/registry/browser/tests/test_person_webservice.py | |||
280 | index d9633f9..e59c87d 100644 | |||
281 | --- a/lib/lp/registry/browser/tests/test_person_webservice.py | |||
282 | +++ b/lib/lp/registry/browser/tests/test_person_webservice.py | |||
283 | @@ -33,7 +33,6 @@ from lp.testing import ( | |||
284 | 33 | api_url, | 33 | api_url, |
285 | 34 | launchpadlib_for, | 34 | launchpadlib_for, |
286 | 35 | login, | 35 | login, |
287 | 36 | logout, | ||
288 | 37 | person_logged_in, | 36 | person_logged_in, |
289 | 38 | record_two_runs, | 37 | record_two_runs, |
290 | 39 | TestCaseWithFactory, | 38 | TestCaseWithFactory, |
291 | @@ -252,8 +251,7 @@ class PersonSetWebServiceTests(TestCaseWithFactory): | |||
292 | 252 | 251 | ||
293 | 253 | def setUp(self): | 252 | def setUp(self): |
294 | 254 | super(PersonSetWebServiceTests, self).setUp() | 253 | super(PersonSetWebServiceTests, self).setUp() |
297 | 255 | self.webservice = LaunchpadWebServiceCaller('test', None) | 254 | self.webservice = webservice_for_person(None) |
296 | 256 | logout() | ||
298 | 257 | 255 | ||
299 | 258 | def assertReturnsPeople(self, expected_names, path): | 256 | def assertReturnsPeople(self, expected_names, path): |
300 | 259 | self.assertEqual( | 257 | self.assertEqual( |
301 | diff --git a/lib/lp/services/webhooks/tests/test_webservice.py b/lib/lp/services/webhooks/tests/test_webservice.py | |||
302 | index 4c90b0e..42408d5 100644 | |||
303 | --- a/lib/lp/services/webhooks/tests/test_webservice.py | |||
304 | +++ b/lib/lp/services/webhooks/tests/test_webservice.py | |||
305 | @@ -39,10 +39,7 @@ from lp.testing import ( | |||
306 | 39 | ) | 39 | ) |
307 | 40 | from lp.testing.layers import DatabaseFunctionalLayer | 40 | from lp.testing.layers import DatabaseFunctionalLayer |
308 | 41 | from lp.testing.matchers import HasQueryCount | 41 | from lp.testing.matchers import HasQueryCount |
313 | 42 | from lp.testing.pages import ( | 42 | from lp.testing.pages import webservice_for_person |
310 | 43 | LaunchpadWebServiceCaller, | ||
311 | 44 | webservice_for_person, | ||
312 | 45 | ) | ||
314 | 46 | 43 | ||
315 | 47 | 44 | ||
316 | 48 | class TestWebhook(TestCaseWithFactory): | 45 | class TestWebhook(TestCaseWithFactory): |
317 | @@ -124,7 +121,7 @@ class TestWebhook(TestCaseWithFactory): | |||
318 | 124 | u'hg:push:0.1').encode('ASCII'))) | 121 | u'hg:push:0.1').encode('ASCII'))) |
319 | 125 | 122 | ||
320 | 126 | def test_anon_forbidden(self): | 123 | def test_anon_forbidden(self): |
322 | 127 | response = LaunchpadWebServiceCaller().get( | 124 | response = webservice_for_person(None).get( |
323 | 128 | self.webhook_url, api_version='devel') | 125 | self.webhook_url, api_version='devel') |
324 | 129 | self.assertEqual(401, response.status) | 126 | self.assertEqual(401, response.status) |
325 | 130 | self.assertIn(b'launchpad.View', response.body) | 127 | self.assertIn(b'launchpad.View', response.body) |
326 | @@ -292,7 +289,7 @@ class TestWebhookTargetBase: | |||
327 | 292 | [entry['delivery_url'] for entry in representation['entries']]) | 289 | [entry['delivery_url'] for entry in representation['entries']]) |
328 | 293 | 290 | ||
329 | 294 | def test_webhooks_permissions(self): | 291 | def test_webhooks_permissions(self): |
331 | 295 | webservice = LaunchpadWebServiceCaller() | 292 | webservice = webservice_for_person(None) |
332 | 296 | response = webservice.get( | 293 | response = webservice.get( |
333 | 297 | self.target_url + '/webhooks', api_version='devel') | 294 | self.target_url + '/webhooks', api_version='devel') |
334 | 298 | self.assertEqual(401, response.status) | 295 | self.assertEqual(401, response.status) |
335 | @@ -347,7 +344,7 @@ class TestWebhookTargetBase: | |||
336 | 347 | 344 | ||
337 | 348 | def test_newWebhook_permissions(self): | 345 | def test_newWebhook_permissions(self): |
338 | 349 | self.useFixture(FeatureFixture({'webhooks.new.enabled': 'true'})) | 346 | self.useFixture(FeatureFixture({'webhooks.new.enabled': 'true'})) |
340 | 350 | webservice = LaunchpadWebServiceCaller() | 347 | webservice = webservice_for_person(None) |
341 | 351 | response = webservice.named_post( | 348 | response = webservice.named_post( |
342 | 352 | self.target_url, 'newWebhook', | 349 | self.target_url, 'newWebhook', |
343 | 353 | delivery_url='http://example.com/ep', | 350 | delivery_url='http://example.com/ep', |
344 | diff --git a/lib/lp/snappy/tests/test_snap.py b/lib/lp/snappy/tests/test_snap.py | |||
345 | index f827970..be338d7 100644 | |||
346 | --- a/lib/lp/snappy/tests/test_snap.py | |||
347 | +++ b/lib/lp/snappy/tests/test_snap.py | |||
348 | @@ -163,10 +163,7 @@ from lp.testing.matchers import ( | |||
349 | 163 | DoesNotSnapshot, | 163 | DoesNotSnapshot, |
350 | 164 | HasQueryCount, | 164 | HasQueryCount, |
351 | 165 | ) | 165 | ) |
356 | 166 | from lp.testing.pages import ( | 166 | from lp.testing.pages import webservice_for_person |
353 | 167 | LaunchpadWebServiceCaller, | ||
354 | 168 | webservice_for_person, | ||
355 | 169 | ) | ||
357 | 170 | 167 | ||
358 | 171 | 168 | ||
359 | 172 | class TestSnapFeatureFlag(TestCaseWithFactory): | 169 | class TestSnapFeatureFlag(TestCaseWithFactory): |
360 | @@ -3078,10 +3075,9 @@ class TestSnapWebservice(TestCaseWithFactory): | |||
361 | 3078 | self.webservice.getAbsoluteUrl(api_url(snap)) | 3075 | self.webservice.getAbsoluteUrl(api_url(snap)) |
362 | 3079 | for snap in snaps] | 3076 | for snap in snaps] |
363 | 3080 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner | 3077 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
364 | 3081 | logout() | ||
365 | 3082 | 3078 | ||
366 | 3083 | # Anonymous requests can only see public snaps. | 3079 | # Anonymous requests can only see public snaps. |
368 | 3084 | anon_webservice = LaunchpadWebServiceCaller("test", "") | 3080 | anon_webservice = webservice_for_person(None) |
369 | 3085 | response = anon_webservice.named_get( | 3081 | response = anon_webservice.named_get( |
370 | 3086 | "/+snaps", "findByOwner", owner=person_urls[0], | 3082 | "/+snaps", "findByOwner", owner=person_urls[0], |
371 | 3087 | api_version="devel") | 3083 | api_version="devel") |
372 | @@ -3145,10 +3141,9 @@ class TestSnapWebservice(TestCaseWithFactory): | |||
373 | 3145 | self.webservice.getAbsoluteUrl(api_url(snap)) | 3141 | self.webservice.getAbsoluteUrl(api_url(snap)) |
374 | 3146 | for snap in snaps] | 3142 | for snap in snaps] |
375 | 3147 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner | 3143 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
376 | 3148 | logout() | ||
377 | 3149 | 3144 | ||
378 | 3150 | # Anonymous requests can only see public snaps. | 3145 | # Anonymous requests can only see public snaps. |
380 | 3151 | anon_webservice = LaunchpadWebServiceCaller("test", "") | 3146 | anon_webservice = webservice_for_person(None) |
381 | 3152 | response = anon_webservice.named_get( | 3147 | response = anon_webservice.named_get( |
382 | 3153 | "/+snaps", "findByURL", url=urls[0], api_version="devel") | 3148 | "/+snaps", "findByURL", url=urls[0], api_version="devel") |
383 | 3154 | self.assertEqual(200, response.status) | 3149 | self.assertEqual(200, response.status) |
384 | @@ -3222,11 +3217,10 @@ class TestSnapWebservice(TestCaseWithFactory): | |||
385 | 3222 | self.webservice.getAbsoluteUrl(api_url(snap)) | 3217 | self.webservice.getAbsoluteUrl(api_url(snap)) |
386 | 3223 | for snap in snaps] | 3218 | for snap in snaps] |
387 | 3224 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner | 3219 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
388 | 3225 | logout() | ||
389 | 3226 | prefix = "https://git.example.org/foo/" | 3220 | prefix = "https://git.example.org/foo/" |
390 | 3227 | 3221 | ||
391 | 3228 | # Anonymous requests can only see public snaps. | 3222 | # Anonymous requests can only see public snaps. |
393 | 3229 | anon_webservice = LaunchpadWebServiceCaller("test", "") | 3223 | anon_webservice = webservice_for_person(None) |
394 | 3230 | response = anon_webservice.named_get( | 3224 | response = anon_webservice.named_get( |
395 | 3231 | "/+snaps", "findByURLPrefix", url_prefix=prefix, | 3225 | "/+snaps", "findByURLPrefix", url_prefix=prefix, |
396 | 3232 | api_version="devel") | 3226 | api_version="devel") |
397 | @@ -3305,12 +3299,11 @@ class TestSnapWebservice(TestCaseWithFactory): | |||
398 | 3305 | self.webservice.getAbsoluteUrl(api_url(snap)) | 3299 | self.webservice.getAbsoluteUrl(api_url(snap)) |
399 | 3306 | for snap in snaps] | 3300 | for snap in snaps] |
400 | 3307 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner | 3301 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
401 | 3308 | logout() | ||
402 | 3309 | prefixes = [ | 3302 | prefixes = [ |
403 | 3310 | "https://git.example.org/foo/", "https://git.example.org/bar/"] | 3303 | "https://git.example.org/foo/", "https://git.example.org/bar/"] |
404 | 3311 | 3304 | ||
405 | 3312 | # Anonymous requests can only see public snaps. | 3305 | # Anonymous requests can only see public snaps. |
407 | 3313 | anon_webservice = LaunchpadWebServiceCaller("test", "") | 3306 | anon_webservice = webservice_for_person(None) |
408 | 3314 | response = anon_webservice.named_get( | 3307 | response = anon_webservice.named_get( |
409 | 3315 | "/+snaps", "findByURLPrefixes", url_prefixes=prefixes, | 3308 | "/+snaps", "findByURLPrefixes", url_prefixes=prefixes, |
410 | 3316 | api_version="devel") | 3309 | api_version="devel") |
411 | @@ -3381,10 +3374,9 @@ class TestSnapWebservice(TestCaseWithFactory): | |||
412 | 3381 | self.webservice.getAbsoluteUrl(api_url(snap)) | 3374 | self.webservice.getAbsoluteUrl(api_url(snap)) |
413 | 3382 | for snap in snaps] | 3375 | for snap in snaps] |
414 | 3383 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner | 3376 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
415 | 3384 | logout() | ||
416 | 3385 | 3377 | ||
417 | 3386 | # Anonymous requests can only see public snaps. | 3378 | # Anonymous requests can only see public snaps. |
419 | 3387 | anon_webservice = LaunchpadWebServiceCaller("test", "") | 3379 | anon_webservice = webservice_for_person(None) |
420 | 3388 | response = anon_webservice.named_get( | 3380 | response = anon_webservice.named_get( |
421 | 3389 | "/+snaps", "findByStoreName", store_name=store_names[0], | 3381 | "/+snaps", "findByStoreName", store_name=store_names[0], |
422 | 3390 | api_version="devel") | 3382 | api_version="devel") |
423 | diff --git a/lib/lp/soyuz/browser/tests/test_archive_webservice.py b/lib/lp/soyuz/browser/tests/test_archive_webservice.py | |||
424 | index a0511d9..cf0e850 100644 | |||
425 | --- a/lib/lp/soyuz/browser/tests/test_archive_webservice.py | |||
426 | +++ b/lib/lp/soyuz/browser/tests/test_archive_webservice.py | |||
427 | @@ -46,10 +46,7 @@ from lp.testing import ( | |||
428 | 46 | from lp.testing.gpgkeys import gpgkeysdir | 46 | from lp.testing.gpgkeys import gpgkeysdir |
429 | 47 | from lp.testing.layers import DatabaseFunctionalLayer | 47 | from lp.testing.layers import DatabaseFunctionalLayer |
430 | 48 | from lp.testing.matchers import HasQueryCount | 48 | from lp.testing.matchers import HasQueryCount |
435 | 49 | from lp.testing.pages import ( | 49 | from lp.testing.pages import webservice_for_person |
432 | 50 | LaunchpadWebServiceCaller, | ||
433 | 51 | webservice_for_person, | ||
434 | 52 | ) | ||
436 | 53 | 50 | ||
437 | 54 | 51 | ||
438 | 55 | class TestArchiveWebservice(TestCaseWithFactory): | 52 | class TestArchiveWebservice(TestCaseWithFactory): |
439 | @@ -727,6 +724,7 @@ class TestGetPublishedBinaries(TestCaseWithFactory): | |||
440 | 727 | # getPublishedBinaries has a query count constant in the number of | 724 | # getPublishedBinaries has a query count constant in the number of |
441 | 728 | # packages returned. | 725 | # packages returned. |
442 | 729 | archive_url = api_url(self.archive) | 726 | archive_url = api_url(self.archive) |
443 | 727 | webservice = webservice_for_person(None) | ||
444 | 730 | 728 | ||
445 | 731 | def create_bpph(): | 729 | def create_bpph(): |
446 | 732 | with admin_logged_in(): | 730 | with admin_logged_in(): |
447 | @@ -734,7 +732,7 @@ class TestGetPublishedBinaries(TestCaseWithFactory): | |||
448 | 734 | archive=self.archive) | 732 | archive=self.archive) |
449 | 735 | 733 | ||
450 | 736 | def get_binaries(): | 734 | def get_binaries(): |
452 | 737 | LaunchpadWebServiceCaller('consumer', '').named_get( | 735 | webservice.named_get( |
453 | 738 | archive_url, 'getPublishedBinaries').jsonBody() | 736 | archive_url, 'getPublishedBinaries').jsonBody() |
454 | 739 | 737 | ||
455 | 740 | recorder1, recorder2 = record_two_runs(get_binaries, create_bpph, 1) | 738 | recorder1, recorder2 = record_two_runs(get_binaries, create_bpph, 1) |
456 | @@ -814,7 +812,7 @@ class TestArchiveSet(TestCaseWithFactory): | |||
457 | 814 | 812 | ||
458 | 815 | def test_getByReference(self): | 813 | def test_getByReference(self): |
459 | 816 | random = self.factory.makePerson() | 814 | random = self.factory.makePerson() |
461 | 817 | body = LaunchpadWebServiceCaller('consumer', '').named_get( | 815 | body = webservice_for_person(None).named_get( |
462 | 818 | '/archives', 'getByReference', reference='ubuntu', | 816 | '/archives', 'getByReference', reference='ubuntu', |
463 | 819 | api_version='devel').jsonBody() | 817 | api_version='devel').jsonBody() |
464 | 820 | self.assertEqual(body['reference'], 'ubuntu') | 818 | self.assertEqual(body['reference'], 'ubuntu') |
465 | @@ -824,13 +822,13 @@ class TestArchiveSet(TestCaseWithFactory): | |||
466 | 824 | self.assertEqual(body['reference'], 'ubuntu') | 822 | self.assertEqual(body['reference'], 'ubuntu') |
467 | 825 | 823 | ||
468 | 826 | def test_getByReference_ppa(self): | 824 | def test_getByReference_ppa(self): |
470 | 827 | body = LaunchpadWebServiceCaller('consumer', '').named_get( | 825 | body = webservice_for_person(None).named_get( |
471 | 828 | '/archives', 'getByReference', reference='~cprov/ubuntu/ppa', | 826 | '/archives', 'getByReference', reference='~cprov/ubuntu/ppa', |
472 | 829 | api_version='devel').jsonBody() | 827 | api_version='devel').jsonBody() |
473 | 830 | self.assertEqual(body['reference'], '~cprov/ubuntu/ppa') | 828 | self.assertEqual(body['reference'], '~cprov/ubuntu/ppa') |
474 | 831 | 829 | ||
475 | 832 | def test_getByReference_invalid(self): | 830 | def test_getByReference_invalid(self): |
477 | 833 | body = LaunchpadWebServiceCaller('consumer', '').named_get( | 831 | body = webservice_for_person(None).named_get( |
478 | 834 | '/archives', 'getByReference', reference='~cprov/ubuntu', | 832 | '/archives', 'getByReference', reference='~cprov/ubuntu', |
479 | 835 | api_version='devel').jsonBody() | 833 | api_version='devel').jsonBody() |
480 | 836 | self.assertIs(None, body) | 834 | self.assertIs(None, body) |
481 | @@ -841,7 +839,7 @@ class TestArchiveSet(TestCaseWithFactory): | |||
482 | 841 | owner = archive.owner | 839 | owner = archive.owner |
483 | 842 | reference = archive.reference | 840 | reference = archive.reference |
484 | 843 | random = self.factory.makePerson() | 841 | random = self.factory.makePerson() |
486 | 844 | body = LaunchpadWebServiceCaller('consumer', '').named_get( | 842 | body = webservice_for_person(None).named_get( |
487 | 845 | '/archives', 'getByReference', reference=reference, | 843 | '/archives', 'getByReference', reference=reference, |
488 | 846 | api_version='devel').jsonBody() | 844 | api_version='devel').jsonBody() |
489 | 847 | self.assertIs(None, body) | 845 | self.assertIs(None, body) |
490 | diff --git a/lib/lp/testing/pages.py b/lib/lp/testing/pages.py | |||
491 | index 8e54faa..2e2dc6e 100644 | |||
492 | --- a/lib/lp/testing/pages.py | |||
493 | +++ b/lib/lp/testing/pages.py | |||
494 | @@ -750,20 +750,24 @@ def webservice_for_person(person, consumer_key=u'launchpad-library', | |||
495 | 750 | Use this method to create a way to test the webservice that doesn't depend | 750 | Use this method to create a way to test the webservice that doesn't depend |
496 | 751 | on sample data. | 751 | on sample data. |
497 | 752 | """ | 752 | """ |
508 | 753 | if person.is_team: | 753 | kwargs = {} |
509 | 754 | raise AssertionError('This cannot be used with teams.') | 754 | if person is not None: |
510 | 755 | login(ANONYMOUS) | 755 | if person.is_team: |
511 | 756 | oacs = getUtility(IOAuthConsumerSet) | 756 | raise AssertionError('This cannot be used with teams.') |
512 | 757 | consumer = oacs.getByKey(consumer_key) | 757 | login(ANONYMOUS) |
513 | 758 | if consumer is None: | 758 | oacs = getUtility(IOAuthConsumerSet) |
514 | 759 | consumer = oacs.new(consumer_key) | 759 | consumer = oacs.getByKey(consumer_key) |
515 | 760 | request_token, _ = consumer.newRequestToken() | 760 | if consumer is None: |
516 | 761 | request_token.review(person, permission, context) | 761 | consumer = oacs.new(consumer_key) |
517 | 762 | access_token, access_secret = request_token.createAccessToken() | 762 | request_token, _ = consumer.newRequestToken() |
518 | 763 | request_token.review(person, permission, context) | ||
519 | 764 | access_token, access_secret = request_token.createAccessToken() | ||
520 | 765 | kwargs['oauth_consumer_key'] = consumer_key | ||
521 | 766 | kwargs['oauth_access_key'] = access_token.key | ||
522 | 767 | kwargs['oauth_access_secret'] = access_secret | ||
523 | 768 | kwargs['default_api_version'] = default_api_version | ||
524 | 763 | logout() | 769 | logout() |
528 | 764 | service = LaunchpadWebServiceCaller( | 770 | service = LaunchpadWebServiceCaller(**kwargs) |
526 | 765 | consumer_key, access_token.key, access_secret, | ||
527 | 766 | default_api_version=default_api_version) | ||
529 | 767 | service.user = person | 771 | service.user = person |
530 | 768 | return service | 772 | return service |
531 | 769 | 773 |