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 | from lp.services.webapp.publisher import canonical_url |
7 | from lp.services.webapp.servers import WebServiceTestRequest |
8 | from lp.testing import ( |
9 | - logout, |
10 | person_logged_in, |
11 | TestCaseWithFactory, |
12 | ) |
13 | from lp.testing.fixture import ZopeAdapterFixture |
14 | from lp.testing.layers import DatabaseFunctionalLayer |
15 | -from lp.testing.pages import ( |
16 | - LaunchpadWebServiceCaller, |
17 | - webservice_for_person, |
18 | - ) |
19 | +from lp.testing.pages import webservice_for_person |
20 | |
21 | |
22 | def ws_url(bug): |
23 | @@ -90,8 +86,7 @@ class TestWebServiceObfuscation(TestCaseWithFactory): |
24 | def test_email_address_obfuscated(self): |
25 | # Email addresses are obfuscated for anonymous users. |
26 | bug = self._makeBug() |
27 | - logout() |
28 | - webservice = LaunchpadWebServiceCaller() |
29 | + webservice = webservice_for_person(None) |
30 | result = webservice(ws_url(bug)).jsonBody() |
31 | self.assertEqual( |
32 | self.bug_title % self.email_address_obfuscated, |
33 | @@ -125,8 +120,7 @@ class TestWebServiceObfuscation(TestCaseWithFactory): |
34 | # Email addresses are obfuscated in the XML representation for |
35 | # anonymous users. |
36 | bug = self._makeBug() |
37 | - logout() |
38 | - webservice = LaunchpadWebServiceCaller() |
39 | + webservice = webservice_for_person(None) |
40 | result = webservice( |
41 | ws_url(bug), headers={'Accept': 'application/xhtml+xml'}) |
42 | self.assertNotIn(self.email_address.encode('UTF-8'), result.body) |
43 | @@ -146,8 +140,7 @@ class TestWebServiceObfuscation(TestCaseWithFactory): |
44 | user = self.factory.makePerson() |
45 | webservice = webservice_for_person(user) |
46 | etag_logged_in = webservice(ws_url(bug)).getheader('etag') |
47 | - logout() |
48 | - webservice = LaunchpadWebServiceCaller() |
49 | + webservice = webservice_for_person(None) |
50 | etag_logged_out = webservice(ws_url(bug)).getheader('etag') |
51 | self.assertNotEqual(etag_logged_in, etag_logged_out) |
52 | |
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 | admin_logged_in, |
59 | api_url, |
60 | login, |
61 | - logout, |
62 | person_logged_in, |
63 | TestCaseWithFactory, |
64 | ) |
65 | from lp.testing.layers import DatabaseFunctionalLayer |
66 | -from lp.testing.pages import ( |
67 | - LaunchpadWebServiceCaller, |
68 | - webservice_for_person, |
69 | - ) |
70 | +from lp.testing.pages import webservice_for_person |
71 | |
72 | |
73 | class SpecificationWebserviceTests(TestCaseWithFactory): |
74 | @@ -424,9 +420,7 @@ class IHasSpecificationsTests(TestCaseWithFactory): |
75 | self.factory.makeSpecification(product=product, name="spec1") |
76 | self.factory.makeSpecification(product=product, name="spec2") |
77 | product_url = api_url(product) |
78 | - logout() |
79 | - webservice = LaunchpadWebServiceCaller( |
80 | - "test", "", default_api_version="devel") |
81 | + webservice = webservice_for_person(None, default_api_version="devel") |
82 | response = webservice.get(product_url) |
83 | self.assertEqual(200, response.status) |
84 | 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 | from lp.testing import ( |
91 | api_url, |
92 | login_person, |
93 | - logout, |
94 | TestCaseWithFactory, |
95 | ) |
96 | from lp.testing.layers import LaunchpadFunctionalLayer |
97 | -from lp.testing.pages import ( |
98 | - LaunchpadWebServiceCaller, |
99 | - webservice_for_person, |
100 | - ) |
101 | +from lp.testing.pages import webservice_for_person |
102 | |
103 | |
104 | class TestAccessToBugAttachmentFiles(TestCaseWithFactory): |
105 | @@ -138,9 +134,7 @@ class TestWebserviceAccessToBugAttachmentFiles(TestCaseWithFactory): |
106 | |
107 | def test_anon_access_to_public_bug_attachment(self): |
108 | # Attachments of public bugs can be accessed by anonymous users. |
109 | - logout() |
110 | - webservice = LaunchpadWebServiceCaller( |
111 | - 'test', '', default_api_version='devel') |
112 | + webservice = webservice_for_person(None, default_api_version='devel') |
113 | ws_bug = self.getWebserviceJSON(webservice, self.bug_url) |
114 | ws_bug_attachment = self.getWebserviceJSON( |
115 | 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 | api_url, |
122 | launchpadlib_for, |
123 | login_celebrity, |
124 | - logout, |
125 | person_logged_in, |
126 | TestCaseWithFactory, |
127 | ) |
128 | @@ -29,10 +28,7 @@ from lp.testing.layers import ( |
129 | DatabaseFunctionalLayer, |
130 | LaunchpadFunctionalLayer, |
131 | ) |
132 | -from lp.testing.pages import ( |
133 | - LaunchpadWebServiceCaller, |
134 | - webservice_for_person, |
135 | - ) |
136 | +from lp.testing.pages import webservice_for_person |
137 | |
138 | |
139 | class TestMessageTraversal(TestCaseWithFactory): |
140 | @@ -104,9 +100,8 @@ class TestBugMessage(TestCaseWithFactory): |
141 | self.factory.makeBugAttachment(bug).id for i in range(3)) |
142 | bug_url = api_url(bug) |
143 | self.assertThat(created_attachment_ids, HasLength(3)) |
144 | - logout() |
145 | |
146 | - webservice = LaunchpadWebServiceCaller('test', None) |
147 | + webservice = webservice_for_person(None) |
148 | bug_attachments = webservice.get( |
149 | bug_url + '/attachments').jsonBody()['entries'] |
150 | 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 | from lp.services.database.interfaces import IStore |
157 | from lp.testing import ( |
158 | ExpectedException, |
159 | - logout, |
160 | TestCaseWithFactory, |
161 | ) |
162 | from lp.testing.layers import DatabaseFunctionalLayer |
163 | -from lp.testing.pages import LaunchpadWebServiceCaller |
164 | +from lp.testing.pages import webservice_for_person |
165 | |
166 | |
167 | class ProcessorSetTests(TestCaseWithFactory): |
168 | @@ -59,15 +58,11 @@ class ProcessorSetTests(TestCaseWithFactory): |
169 | class ProcessorSetWebServiceTests(TestCaseWithFactory): |
170 | layer = DatabaseFunctionalLayer |
171 | |
172 | - def setUp(self): |
173 | - super(ProcessorSetWebServiceTests, self).setUp() |
174 | - self.webservice = LaunchpadWebServiceCaller() |
175 | - |
176 | def test_getByName(self): |
177 | self.factory.makeProcessor(name='transmeta') |
178 | - logout() |
179 | |
180 | - processor = self.webservice.named_get( |
181 | + webservice = webservice_for_person(None) |
182 | + processor = webservice.named_get( |
183 | '/+processors', 'getByName', name='transmeta', |
184 | api_version='devel').jsonBody() |
185 | self.assertEqual('transmeta', processor['name']) |
186 | @@ -80,9 +75,8 @@ class ProcessorSetWebServiceTests(TestCaseWithFactory): |
187 | self.factory.makeProcessor(name='i686') |
188 | self.factory.makeProcessor(name='g4') |
189 | |
190 | - logout() |
191 | - |
192 | - collection = self.webservice.get( |
193 | + webservice = webservice_for_person(None) |
194 | + collection = webservice.get( |
195 | '/+processors?ws.size=10', api_version='devel').jsonBody() |
196 | self.assertEqual( |
197 | ['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 | from lp.services.propertycache import clear_property_cache |
204 | from lp.testing import ( |
205 | login_person, |
206 | - logout, |
207 | RequestTimelineCollector, |
208 | TestCaseWithFactory, |
209 | ) |
210 | from lp.testing.layers import DatabaseFunctionalLayer |
211 | from lp.testing.matchers import HasQueryCount |
212 | -from lp.testing.pages import LaunchpadWebServiceCaller |
213 | +from lp.testing.pages import webservice_for_person |
214 | |
215 | |
216 | class TestBranchSet(TestCaseWithFactory): |
217 | @@ -101,14 +100,13 @@ class TestBranchSet(TestCaseWithFactory): |
218 | None, order_by=BranchListingSort.MOST_RECENTLY_CHANGED_FIRST))) |
219 | |
220 | def test_api_branches_query_count(self): |
221 | - webservice = LaunchpadWebServiceCaller() |
222 | + webservice = webservice_for_person(None) |
223 | collector = RequestTimelineCollector() |
224 | collector.register() |
225 | self.addCleanup(collector.unregister) |
226 | # Get 'all' of the 50 branches this collection is limited to - rather |
227 | # than the default in-test-suite pagination size of 5. |
228 | url = "/branches?ws.size=50" |
229 | - logout() |
230 | response = webservice.get(url, |
231 | headers={'User-Agent': 'AnonNeedsThis'}) |
232 | 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 | api_url, |
239 | celebrity_logged_in, |
240 | login_person, |
241 | - logout, |
242 | person_logged_in, |
243 | record_two_runs, |
244 | StormStatementRecorder, |
245 | @@ -192,10 +191,7 @@ from lp.testing.matchers import ( |
246 | DoesNotSnapshot, |
247 | HasQueryCount, |
248 | ) |
249 | -from lp.testing.pages import ( |
250 | - LaunchpadWebServiceCaller, |
251 | - webservice_for_person, |
252 | - ) |
253 | +from lp.testing.pages import webservice_for_person |
254 | from lp.xmlrpc import faults |
255 | from lp.xmlrpc.interfaces import IPrivateApplication |
256 | |
257 | @@ -4582,8 +4578,8 @@ class TestGitRepositoryWebservice(TestCaseWithFactory): |
258 | with person_logged_in(requester): |
259 | repository_url = api_url(repository) |
260 | webservice = webservice_for_person( |
261 | - requester, permission=OAuthPermission.WRITE_PUBLIC) |
262 | - webservice.default_api_version = "devel" |
263 | + requester, permission=OAuthPermission.WRITE_PUBLIC, |
264 | + default_api_version="devel") |
265 | response = webservice.named_post(repository_url, "issueAccessToken") |
266 | self.assertEqual(200, response.status) |
267 | macaroon = Macaroon.deserialize(response.jsonBody()) |
268 | @@ -4606,9 +4602,7 @@ class TestGitRepositoryWebservice(TestCaseWithFactory): |
269 | repository = self.factory.makeGitRepository() |
270 | with person_logged_in(repository.owner): |
271 | repository_url = api_url(repository) |
272 | - logout() |
273 | - webservice = LaunchpadWebServiceCaller() |
274 | - webservice.default_api_version = "devel" |
275 | + webservice = webservice_for_person(None, default_api_version="devel") |
276 | response = webservice.named_post(repository_url, "issueAccessToken") |
277 | self.assertEqual(401, response.status) |
278 | 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 | api_url, |
285 | launchpadlib_for, |
286 | login, |
287 | - logout, |
288 | person_logged_in, |
289 | record_two_runs, |
290 | TestCaseWithFactory, |
291 | @@ -252,8 +251,7 @@ class PersonSetWebServiceTests(TestCaseWithFactory): |
292 | |
293 | def setUp(self): |
294 | super(PersonSetWebServiceTests, self).setUp() |
295 | - self.webservice = LaunchpadWebServiceCaller('test', None) |
296 | - logout() |
297 | + self.webservice = webservice_for_person(None) |
298 | |
299 | def assertReturnsPeople(self, expected_names, path): |
300 | 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 | ) |
307 | from lp.testing.layers import DatabaseFunctionalLayer |
308 | from lp.testing.matchers import HasQueryCount |
309 | -from lp.testing.pages import ( |
310 | - LaunchpadWebServiceCaller, |
311 | - webservice_for_person, |
312 | - ) |
313 | +from lp.testing.pages import webservice_for_person |
314 | |
315 | |
316 | class TestWebhook(TestCaseWithFactory): |
317 | @@ -124,7 +121,7 @@ class TestWebhook(TestCaseWithFactory): |
318 | u'hg:push:0.1').encode('ASCII'))) |
319 | |
320 | def test_anon_forbidden(self): |
321 | - response = LaunchpadWebServiceCaller().get( |
322 | + response = webservice_for_person(None).get( |
323 | self.webhook_url, api_version='devel') |
324 | self.assertEqual(401, response.status) |
325 | self.assertIn(b'launchpad.View', response.body) |
326 | @@ -292,7 +289,7 @@ class TestWebhookTargetBase: |
327 | [entry['delivery_url'] for entry in representation['entries']]) |
328 | |
329 | def test_webhooks_permissions(self): |
330 | - webservice = LaunchpadWebServiceCaller() |
331 | + webservice = webservice_for_person(None) |
332 | response = webservice.get( |
333 | self.target_url + '/webhooks', api_version='devel') |
334 | self.assertEqual(401, response.status) |
335 | @@ -347,7 +344,7 @@ class TestWebhookTargetBase: |
336 | |
337 | def test_newWebhook_permissions(self): |
338 | self.useFixture(FeatureFixture({'webhooks.new.enabled': 'true'})) |
339 | - webservice = LaunchpadWebServiceCaller() |
340 | + webservice = webservice_for_person(None) |
341 | response = webservice.named_post( |
342 | self.target_url, 'newWebhook', |
343 | 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 | DoesNotSnapshot, |
350 | HasQueryCount, |
351 | ) |
352 | -from lp.testing.pages import ( |
353 | - LaunchpadWebServiceCaller, |
354 | - webservice_for_person, |
355 | - ) |
356 | +from lp.testing.pages import webservice_for_person |
357 | |
358 | |
359 | class TestSnapFeatureFlag(TestCaseWithFactory): |
360 | @@ -3078,10 +3075,9 @@ class TestSnapWebservice(TestCaseWithFactory): |
361 | self.webservice.getAbsoluteUrl(api_url(snap)) |
362 | for snap in snaps] |
363 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
364 | - logout() |
365 | |
366 | # Anonymous requests can only see public snaps. |
367 | - anon_webservice = LaunchpadWebServiceCaller("test", "") |
368 | + anon_webservice = webservice_for_person(None) |
369 | response = anon_webservice.named_get( |
370 | "/+snaps", "findByOwner", owner=person_urls[0], |
371 | api_version="devel") |
372 | @@ -3145,10 +3141,9 @@ class TestSnapWebservice(TestCaseWithFactory): |
373 | self.webservice.getAbsoluteUrl(api_url(snap)) |
374 | for snap in snaps] |
375 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
376 | - logout() |
377 | |
378 | # Anonymous requests can only see public snaps. |
379 | - anon_webservice = LaunchpadWebServiceCaller("test", "") |
380 | + anon_webservice = webservice_for_person(None) |
381 | response = anon_webservice.named_get( |
382 | "/+snaps", "findByURL", url=urls[0], api_version="devel") |
383 | self.assertEqual(200, response.status) |
384 | @@ -3222,11 +3217,10 @@ class TestSnapWebservice(TestCaseWithFactory): |
385 | self.webservice.getAbsoluteUrl(api_url(snap)) |
386 | for snap in snaps] |
387 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
388 | - logout() |
389 | prefix = "https://git.example.org/foo/" |
390 | |
391 | # Anonymous requests can only see public snaps. |
392 | - anon_webservice = LaunchpadWebServiceCaller("test", "") |
393 | + anon_webservice = webservice_for_person(None) |
394 | response = anon_webservice.named_get( |
395 | "/+snaps", "findByURLPrefix", url_prefix=prefix, |
396 | api_version="devel") |
397 | @@ -3305,12 +3299,11 @@ class TestSnapWebservice(TestCaseWithFactory): |
398 | self.webservice.getAbsoluteUrl(api_url(snap)) |
399 | for snap in snaps] |
400 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
401 | - logout() |
402 | prefixes = [ |
403 | "https://git.example.org/foo/", "https://git.example.org/bar/"] |
404 | |
405 | # Anonymous requests can only see public snaps. |
406 | - anon_webservice = LaunchpadWebServiceCaller("test", "") |
407 | + anon_webservice = webservice_for_person(None) |
408 | response = anon_webservice.named_get( |
409 | "/+snaps", "findByURLPrefixes", url_prefixes=prefixes, |
410 | api_version="devel") |
411 | @@ -3381,10 +3374,9 @@ class TestSnapWebservice(TestCaseWithFactory): |
412 | self.webservice.getAbsoluteUrl(api_url(snap)) |
413 | for snap in snaps] |
414 | admin = getUtility(ILaunchpadCelebrities).admin.teamowner |
415 | - logout() |
416 | |
417 | # Anonymous requests can only see public snaps. |
418 | - anon_webservice = LaunchpadWebServiceCaller("test", "") |
419 | + anon_webservice = webservice_for_person(None) |
420 | response = anon_webservice.named_get( |
421 | "/+snaps", "findByStoreName", store_name=store_names[0], |
422 | 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 | from lp.testing.gpgkeys import gpgkeysdir |
429 | from lp.testing.layers import DatabaseFunctionalLayer |
430 | from lp.testing.matchers import HasQueryCount |
431 | -from lp.testing.pages import ( |
432 | - LaunchpadWebServiceCaller, |
433 | - webservice_for_person, |
434 | - ) |
435 | +from lp.testing.pages import webservice_for_person |
436 | |
437 | |
438 | class TestArchiveWebservice(TestCaseWithFactory): |
439 | @@ -727,6 +724,7 @@ class TestGetPublishedBinaries(TestCaseWithFactory): |
440 | # getPublishedBinaries has a query count constant in the number of |
441 | # packages returned. |
442 | archive_url = api_url(self.archive) |
443 | + webservice = webservice_for_person(None) |
444 | |
445 | def create_bpph(): |
446 | with admin_logged_in(): |
447 | @@ -734,7 +732,7 @@ class TestGetPublishedBinaries(TestCaseWithFactory): |
448 | archive=self.archive) |
449 | |
450 | def get_binaries(): |
451 | - LaunchpadWebServiceCaller('consumer', '').named_get( |
452 | + webservice.named_get( |
453 | archive_url, 'getPublishedBinaries').jsonBody() |
454 | |
455 | recorder1, recorder2 = record_two_runs(get_binaries, create_bpph, 1) |
456 | @@ -814,7 +812,7 @@ class TestArchiveSet(TestCaseWithFactory): |
457 | |
458 | def test_getByReference(self): |
459 | random = self.factory.makePerson() |
460 | - body = LaunchpadWebServiceCaller('consumer', '').named_get( |
461 | + body = webservice_for_person(None).named_get( |
462 | '/archives', 'getByReference', reference='ubuntu', |
463 | api_version='devel').jsonBody() |
464 | self.assertEqual(body['reference'], 'ubuntu') |
465 | @@ -824,13 +822,13 @@ class TestArchiveSet(TestCaseWithFactory): |
466 | self.assertEqual(body['reference'], 'ubuntu') |
467 | |
468 | def test_getByReference_ppa(self): |
469 | - body = LaunchpadWebServiceCaller('consumer', '').named_get( |
470 | + body = webservice_for_person(None).named_get( |
471 | '/archives', 'getByReference', reference='~cprov/ubuntu/ppa', |
472 | api_version='devel').jsonBody() |
473 | self.assertEqual(body['reference'], '~cprov/ubuntu/ppa') |
474 | |
475 | def test_getByReference_invalid(self): |
476 | - body = LaunchpadWebServiceCaller('consumer', '').named_get( |
477 | + body = webservice_for_person(None).named_get( |
478 | '/archives', 'getByReference', reference='~cprov/ubuntu', |
479 | api_version='devel').jsonBody() |
480 | self.assertIs(None, body) |
481 | @@ -841,7 +839,7 @@ class TestArchiveSet(TestCaseWithFactory): |
482 | owner = archive.owner |
483 | reference = archive.reference |
484 | random = self.factory.makePerson() |
485 | - body = LaunchpadWebServiceCaller('consumer', '').named_get( |
486 | + body = webservice_for_person(None).named_get( |
487 | '/archives', 'getByReference', reference=reference, |
488 | api_version='devel').jsonBody() |
489 | 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 | Use this method to create a way to test the webservice that doesn't depend |
496 | on sample data. |
497 | """ |
498 | - if person.is_team: |
499 | - raise AssertionError('This cannot be used with teams.') |
500 | - login(ANONYMOUS) |
501 | - oacs = getUtility(IOAuthConsumerSet) |
502 | - consumer = oacs.getByKey(consumer_key) |
503 | - if consumer is None: |
504 | - consumer = oacs.new(consumer_key) |
505 | - request_token, _ = consumer.newRequestToken() |
506 | - request_token.review(person, permission, context) |
507 | - access_token, access_secret = request_token.createAccessToken() |
508 | + kwargs = {} |
509 | + if person is not None: |
510 | + if person.is_team: |
511 | + raise AssertionError('This cannot be used with teams.') |
512 | + login(ANONYMOUS) |
513 | + oacs = getUtility(IOAuthConsumerSet) |
514 | + consumer = oacs.getByKey(consumer_key) |
515 | + if consumer is None: |
516 | + consumer = oacs.new(consumer_key) |
517 | + request_token, _ = consumer.newRequestToken() |
518 | + request_token.review(person, permission, context) |
519 | + access_token, access_secret = request_token.createAccessToken() |
520 | + kwargs['oauth_consumer_key'] = consumer_key |
521 | + kwargs['oauth_access_key'] = access_token.key |
522 | + kwargs['oauth_access_secret'] = access_secret |
523 | + kwargs['default_api_version'] = default_api_version |
524 | logout() |
525 | - service = LaunchpadWebServiceCaller( |
526 | - consumer_key, access_token.key, access_secret, |
527 | - default_api_version=default_api_version) |
528 | + service = LaunchpadWebServiceCaller(**kwargs) |
529 | service.user = person |
530 | return service |
531 |