Merge ~cjwatson/launchpad:webservice-for-person-anonymous into launchpad: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)
Reviewer Review Type Date Requested Status
Ioana Lasc (community) Approve
Review via email: mp+400966@code.launchpad.net

Commit message

Extend webservice_for_person to support anonymous login

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
diff --git a/lib/lp/app/webservice/tests/test_marshallers.py b/lib/lp/app/webservice/tests/test_marshallers.py
index e689d96..08c2068 100644
--- a/lib/lp/app/webservice/tests/test_marshallers.py
+++ b/lib/lp/app/webservice/tests/test_marshallers.py
@@ -30,16 +30,12 @@ from lp.services.job.interfaces.job import JobStatus
30from lp.services.webapp.publisher import canonical_url30from lp.services.webapp.publisher import canonical_url
31from lp.services.webapp.servers import WebServiceTestRequest31from lp.services.webapp.servers import WebServiceTestRequest
32from lp.testing import (32from lp.testing import (
33 logout,
34 person_logged_in,33 person_logged_in,
35 TestCaseWithFactory,34 TestCaseWithFactory,
36 )35 )
37from lp.testing.fixture import ZopeAdapterFixture36from lp.testing.fixture import ZopeAdapterFixture
38from lp.testing.layers import DatabaseFunctionalLayer37from lp.testing.layers import DatabaseFunctionalLayer
39from lp.testing.pages import (38from lp.testing.pages import webservice_for_person
40 LaunchpadWebServiceCaller,
41 webservice_for_person,
42 )
4339
4440
45def ws_url(bug):41def ws_url(bug):
@@ -90,8 +86,7 @@ class TestWebServiceObfuscation(TestCaseWithFactory):
90 def test_email_address_obfuscated(self):86 def test_email_address_obfuscated(self):
91 # Email addresses are obfuscated for anonymous users.87 # Email addresses are obfuscated for anonymous users.
92 bug = self._makeBug()88 bug = self._makeBug()
93 logout()89 webservice = webservice_for_person(None)
94 webservice = LaunchpadWebServiceCaller()
95 result = webservice(ws_url(bug)).jsonBody()90 result = webservice(ws_url(bug)).jsonBody()
96 self.assertEqual(91 self.assertEqual(
97 self.bug_title % self.email_address_obfuscated,92 self.bug_title % self.email_address_obfuscated,
@@ -125,8 +120,7 @@ class TestWebServiceObfuscation(TestCaseWithFactory):
125 # Email addresses are obfuscated in the XML representation for120 # Email addresses are obfuscated in the XML representation for
126 # anonymous users.121 # anonymous users.
127 bug = self._makeBug()122 bug = self._makeBug()
128 logout()123 webservice = webservice_for_person(None)
129 webservice = LaunchpadWebServiceCaller()
130 result = webservice(124 result = webservice(
131 ws_url(bug), headers={'Accept': 'application/xhtml+xml'})125 ws_url(bug), headers={'Accept': 'application/xhtml+xml'})
132 self.assertNotIn(self.email_address.encode('UTF-8'), result.body)126 self.assertNotIn(self.email_address.encode('UTF-8'), result.body)
@@ -146,8 +140,7 @@ class TestWebServiceObfuscation(TestCaseWithFactory):
146 user = self.factory.makePerson()140 user = self.factory.makePerson()
147 webservice = webservice_for_person(user)141 webservice = webservice_for_person(user)
148 etag_logged_in = webservice(ws_url(bug)).getheader('etag')142 etag_logged_in = webservice(ws_url(bug)).getheader('etag')
149 logout()143 webservice = webservice_for_person(None)
150 webservice = LaunchpadWebServiceCaller()
151 etag_logged_out = webservice(ws_url(bug)).getheader('etag')144 etag_logged_out = webservice(ws_url(bug)).getheader('etag')
152 self.assertNotEqual(etag_logged_in, etag_logged_out)145 self.assertNotEqual(etag_logged_in, etag_logged_out)
153146
diff --git a/lib/lp/blueprints/tests/test_webservice.py b/lib/lp/blueprints/tests/test_webservice.py
index 7ff1ce7..39f1b92 100644
--- a/lib/lp/blueprints/tests/test_webservice.py
+++ b/lib/lp/blueprints/tests/test_webservice.py
@@ -28,15 +28,11 @@ from lp.testing import (
28 admin_logged_in,28 admin_logged_in,
29 api_url,29 api_url,
30 login,30 login,
31 logout,
32 person_logged_in,31 person_logged_in,
33 TestCaseWithFactory,32 TestCaseWithFactory,
34 )33 )
35from lp.testing.layers import DatabaseFunctionalLayer34from lp.testing.layers import DatabaseFunctionalLayer
36from lp.testing.pages import (35from lp.testing.pages import webservice_for_person
37 LaunchpadWebServiceCaller,
38 webservice_for_person,
39 )
4036
4137
42class SpecificationWebserviceTests(TestCaseWithFactory):38class SpecificationWebserviceTests(TestCaseWithFactory):
@@ -424,9 +420,7 @@ class IHasSpecificationsTests(TestCaseWithFactory):
424 self.factory.makeSpecification(product=product, name="spec1")420 self.factory.makeSpecification(product=product, name="spec1")
425 self.factory.makeSpecification(product=product, name="spec2")421 self.factory.makeSpecification(product=product, name="spec2")
426 product_url = api_url(product)422 product_url = api_url(product)
427 logout()423 webservice = webservice_for_person(None, default_api_version="devel")
428 webservice = LaunchpadWebServiceCaller(
429 "test", "", default_api_version="devel")
430 response = webservice.get(product_url)424 response = webservice.get(product_url)
431 self.assertEqual(200, response.status)425 self.assertEqual(200, response.status)
432 response = webservice.get(426 response = webservice.get(
diff --git a/lib/lp/bugs/browser/tests/test_bugattachment_file_access.py b/lib/lp/bugs/browser/tests/test_bugattachment_file_access.py
index 4faa851..a517d97 100644
--- a/lib/lp/bugs/browser/tests/test_bugattachment_file_access.py
+++ b/lib/lp/bugs/browser/tests/test_bugattachment_file_access.py
@@ -31,14 +31,10 @@ from lp.services.webapp.servers import LaunchpadTestRequest
31from lp.testing import (31from lp.testing import (
32 api_url,32 api_url,
33 login_person,33 login_person,
34 logout,
35 TestCaseWithFactory,34 TestCaseWithFactory,
36 )35 )
37from lp.testing.layers import LaunchpadFunctionalLayer36from lp.testing.layers import LaunchpadFunctionalLayer
38from lp.testing.pages import (37from lp.testing.pages import webservice_for_person
39 LaunchpadWebServiceCaller,
40 webservice_for_person,
41 )
4238
4339
44class TestAccessToBugAttachmentFiles(TestCaseWithFactory):40class TestAccessToBugAttachmentFiles(TestCaseWithFactory):
@@ -138,9 +134,7 @@ class TestWebserviceAccessToBugAttachmentFiles(TestCaseWithFactory):
138134
139 def test_anon_access_to_public_bug_attachment(self):135 def test_anon_access_to_public_bug_attachment(self):
140 # Attachments of public bugs can be accessed by anonymous users.136 # Attachments of public bugs can be accessed by anonymous users.
141 logout()137 webservice = webservice_for_person(None, default_api_version='devel')
142 webservice = LaunchpadWebServiceCaller(
143 'test', '', default_api_version='devel')
144 ws_bug = self.getWebserviceJSON(webservice, self.bug_url)138 ws_bug = self.getWebserviceJSON(webservice, self.bug_url)
145 ws_bug_attachment = self.getWebserviceJSON(139 ws_bug_attachment = self.getWebserviceJSON(
146 webservice, ws_bug['attachments_collection_link'])['entries'][0]140 webservice, ws_bug['attachments_collection_link'])['entries'][0]
diff --git a/lib/lp/bugs/tests/test_bug_messages_webservice.py b/lib/lp/bugs/tests/test_bug_messages_webservice.py
index 5faae0e..dbd3507 100644
--- a/lib/lp/bugs/tests/test_bug_messages_webservice.py
+++ b/lib/lp/bugs/tests/test_bug_messages_webservice.py
@@ -21,7 +21,6 @@ from lp.testing import (
21 api_url,21 api_url,
22 launchpadlib_for,22 launchpadlib_for,
23 login_celebrity,23 login_celebrity,
24 logout,
25 person_logged_in,24 person_logged_in,
26 TestCaseWithFactory,25 TestCaseWithFactory,
27 )26 )
@@ -29,10 +28,7 @@ from lp.testing.layers import (
29 DatabaseFunctionalLayer,28 DatabaseFunctionalLayer,
30 LaunchpadFunctionalLayer,29 LaunchpadFunctionalLayer,
31 )30 )
32from lp.testing.pages import (31from lp.testing.pages import webservice_for_person
33 LaunchpadWebServiceCaller,
34 webservice_for_person,
35 )
3632
3733
38class TestMessageTraversal(TestCaseWithFactory):34class TestMessageTraversal(TestCaseWithFactory):
@@ -104,9 +100,8 @@ class TestBugMessage(TestCaseWithFactory):
104 self.factory.makeBugAttachment(bug).id for i in range(3))100 self.factory.makeBugAttachment(bug).id for i in range(3))
105 bug_url = api_url(bug)101 bug_url = api_url(bug)
106 self.assertThat(created_attachment_ids, HasLength(3))102 self.assertThat(created_attachment_ids, HasLength(3))
107 logout()
108103
109 webservice = LaunchpadWebServiceCaller('test', None)104 webservice = webservice_for_person(None)
110 bug_attachments = webservice.get(105 bug_attachments = webservice.get(
111 bug_url + '/attachments').jsonBody()['entries']106 bug_url + '/attachments').jsonBody()['entries']
112 bug_attachment_ids = set(107 bug_attachment_ids = set(
diff --git a/lib/lp/buildmaster/tests/test_processor.py b/lib/lp/buildmaster/tests/test_processor.py
index a639b7a..7bd8269 100644
--- a/lib/lp/buildmaster/tests/test_processor.py
+++ b/lib/lp/buildmaster/tests/test_processor.py
@@ -16,11 +16,10 @@ from lp.buildmaster.model.processor import Processor
16from lp.services.database.interfaces import IStore16from lp.services.database.interfaces import IStore
17from lp.testing import (17from lp.testing import (
18 ExpectedException,18 ExpectedException,
19 logout,
20 TestCaseWithFactory,19 TestCaseWithFactory,
21 )20 )
22from lp.testing.layers import DatabaseFunctionalLayer21from lp.testing.layers import DatabaseFunctionalLayer
23from lp.testing.pages import LaunchpadWebServiceCaller22from lp.testing.pages import webservice_for_person
2423
2524
26class ProcessorSetTests(TestCaseWithFactory):25class ProcessorSetTests(TestCaseWithFactory):
@@ -59,15 +58,11 @@ class ProcessorSetTests(TestCaseWithFactory):
59class ProcessorSetWebServiceTests(TestCaseWithFactory):58class ProcessorSetWebServiceTests(TestCaseWithFactory):
60 layer = DatabaseFunctionalLayer59 layer = DatabaseFunctionalLayer
6160
62 def setUp(self):
63 super(ProcessorSetWebServiceTests, self).setUp()
64 self.webservice = LaunchpadWebServiceCaller()
65
66 def test_getByName(self):61 def test_getByName(self):
67 self.factory.makeProcessor(name='transmeta')62 self.factory.makeProcessor(name='transmeta')
68 logout()
6963
70 processor = self.webservice.named_get(64 webservice = webservice_for_person(None)
65 processor = webservice.named_get(
71 '/+processors', 'getByName', name='transmeta',66 '/+processors', 'getByName', name='transmeta',
72 api_version='devel').jsonBody()67 api_version='devel').jsonBody()
73 self.assertEqual('transmeta', processor['name'])68 self.assertEqual('transmeta', processor['name'])
@@ -80,9 +75,8 @@ class ProcessorSetWebServiceTests(TestCaseWithFactory):
80 self.factory.makeProcessor(name='i686')75 self.factory.makeProcessor(name='i686')
81 self.factory.makeProcessor(name='g4')76 self.factory.makeProcessor(name='g4')
8277
83 logout()78 webservice = webservice_for_person(None)
8479 collection = webservice.get(
85 collection = self.webservice.get(
86 '/+processors?ws.size=10', api_version='devel').jsonBody()80 '/+processors?ws.size=10', api_version='devel').jsonBody()
87 self.assertEqual(81 self.assertEqual(
88 ['g4', 'i686', 'q1'],82 ['g4', 'i686', 'q1'],
diff --git a/lib/lp/code/model/tests/test_branchset.py b/lib/lp/code/model/tests/test_branchset.py
index 9de4d0a..6f742eb 100644
--- a/lib/lp/code/model/tests/test_branchset.py
+++ b/lib/lp/code/model/tests/test_branchset.py
@@ -23,13 +23,12 @@ from lp.code.model.branch import BranchSet
23from lp.services.propertycache import clear_property_cache23from lp.services.propertycache import clear_property_cache
24from lp.testing import (24from lp.testing import (
25 login_person,25 login_person,
26 logout,
27 RequestTimelineCollector,26 RequestTimelineCollector,
28 TestCaseWithFactory,27 TestCaseWithFactory,
29 )28 )
30from lp.testing.layers import DatabaseFunctionalLayer29from lp.testing.layers import DatabaseFunctionalLayer
31from lp.testing.matchers import HasQueryCount30from lp.testing.matchers import HasQueryCount
32from lp.testing.pages import LaunchpadWebServiceCaller31from lp.testing.pages import webservice_for_person
3332
3433
35class TestBranchSet(TestCaseWithFactory):34class TestBranchSet(TestCaseWithFactory):
@@ -101,14 +100,13 @@ class TestBranchSet(TestCaseWithFactory):
101 None, order_by=BranchListingSort.MOST_RECENTLY_CHANGED_FIRST)))100 None, order_by=BranchListingSort.MOST_RECENTLY_CHANGED_FIRST)))
102101
103 def test_api_branches_query_count(self):102 def test_api_branches_query_count(self):
104 webservice = LaunchpadWebServiceCaller()103 webservice = webservice_for_person(None)
105 collector = RequestTimelineCollector()104 collector = RequestTimelineCollector()
106 collector.register()105 collector.register()
107 self.addCleanup(collector.unregister)106 self.addCleanup(collector.unregister)
108 # Get 'all' of the 50 branches this collection is limited to - rather107 # Get 'all' of the 50 branches this collection is limited to - rather
109 # than the default in-test-suite pagination size of 5.108 # than the default in-test-suite pagination size of 5.
110 url = "/branches?ws.size=50"109 url = "/branches?ws.size=50"
111 logout()
112 response = webservice.get(url,110 response = webservice.get(url,
113 headers={'User-Agent': 'AnonNeedsThis'})111 headers={'User-Agent': 'AnonNeedsThis'})
114 self.assertEqual(response.status, 200,112 self.assertEqual(response.status, 200,
diff --git a/lib/lp/code/model/tests/test_gitrepository.py b/lib/lp/code/model/tests/test_gitrepository.py
index 6cec839..5790338 100644
--- a/lib/lp/code/model/tests/test_gitrepository.py
+++ b/lib/lp/code/model/tests/test_gitrepository.py
@@ -174,7 +174,6 @@ from lp.testing import (
174 api_url,174 api_url,
175 celebrity_logged_in,175 celebrity_logged_in,
176 login_person,176 login_person,
177 logout,
178 person_logged_in,177 person_logged_in,
179 record_two_runs,178 record_two_runs,
180 StormStatementRecorder,179 StormStatementRecorder,
@@ -192,10 +191,7 @@ from lp.testing.matchers import (
192 DoesNotSnapshot,191 DoesNotSnapshot,
193 HasQueryCount,192 HasQueryCount,
194 )193 )
195from lp.testing.pages import (194from lp.testing.pages import webservice_for_person
196 LaunchpadWebServiceCaller,
197 webservice_for_person,
198 )
199from lp.xmlrpc import faults195from lp.xmlrpc import faults
200from lp.xmlrpc.interfaces import IPrivateApplication196from lp.xmlrpc.interfaces import IPrivateApplication
201197
@@ -4582,8 +4578,8 @@ class TestGitRepositoryWebservice(TestCaseWithFactory):
4582 with person_logged_in(requester):4578 with person_logged_in(requester):
4583 repository_url = api_url(repository)4579 repository_url = api_url(repository)
4584 webservice = webservice_for_person(4580 webservice = webservice_for_person(
4585 requester, permission=OAuthPermission.WRITE_PUBLIC)4581 requester, permission=OAuthPermission.WRITE_PUBLIC,
4586 webservice.default_api_version = "devel"4582 default_api_version="devel")
4587 response = webservice.named_post(repository_url, "issueAccessToken")4583 response = webservice.named_post(repository_url, "issueAccessToken")
4588 self.assertEqual(200, response.status)4584 self.assertEqual(200, response.status)
4589 macaroon = Macaroon.deserialize(response.jsonBody())4585 macaroon = Macaroon.deserialize(response.jsonBody())
@@ -4606,9 +4602,7 @@ class TestGitRepositoryWebservice(TestCaseWithFactory):
4606 repository = self.factory.makeGitRepository()4602 repository = self.factory.makeGitRepository()
4607 with person_logged_in(repository.owner):4603 with person_logged_in(repository.owner):
4608 repository_url = api_url(repository)4604 repository_url = api_url(repository)
4609 logout()4605 webservice = webservice_for_person(None, default_api_version="devel")
4610 webservice = LaunchpadWebServiceCaller()
4611 webservice.default_api_version = "devel"
4612 response = webservice.named_post(repository_url, "issueAccessToken")4606 response = webservice.named_post(repository_url, "issueAccessToken")
4613 self.assertEqual(401, response.status)4607 self.assertEqual(401, response.status)
4614 self.assertEqual(4608 self.assertEqual(
diff --git a/lib/lp/registry/browser/tests/test_person_webservice.py b/lib/lp/registry/browser/tests/test_person_webservice.py
index d9633f9..e59c87d 100644
--- a/lib/lp/registry/browser/tests/test_person_webservice.py
+++ b/lib/lp/registry/browser/tests/test_person_webservice.py
@@ -33,7 +33,6 @@ from lp.testing import (
33 api_url,33 api_url,
34 launchpadlib_for,34 launchpadlib_for,
35 login,35 login,
36 logout,
37 person_logged_in,36 person_logged_in,
38 record_two_runs,37 record_two_runs,
39 TestCaseWithFactory,38 TestCaseWithFactory,
@@ -252,8 +251,7 @@ class PersonSetWebServiceTests(TestCaseWithFactory):
252251
253 def setUp(self):252 def setUp(self):
254 super(PersonSetWebServiceTests, self).setUp()253 super(PersonSetWebServiceTests, self).setUp()
255 self.webservice = LaunchpadWebServiceCaller('test', None)254 self.webservice = webservice_for_person(None)
256 logout()
257255
258 def assertReturnsPeople(self, expected_names, path):256 def assertReturnsPeople(self, expected_names, path):
259 self.assertEqual(257 self.assertEqual(
diff --git a/lib/lp/services/webhooks/tests/test_webservice.py b/lib/lp/services/webhooks/tests/test_webservice.py
index 4c90b0e..42408d5 100644
--- a/lib/lp/services/webhooks/tests/test_webservice.py
+++ b/lib/lp/services/webhooks/tests/test_webservice.py
@@ -39,10 +39,7 @@ from lp.testing import (
39 )39 )
40from lp.testing.layers import DatabaseFunctionalLayer40from lp.testing.layers import DatabaseFunctionalLayer
41from lp.testing.matchers import HasQueryCount41from lp.testing.matchers import HasQueryCount
42from lp.testing.pages import (42from lp.testing.pages import webservice_for_person
43 LaunchpadWebServiceCaller,
44 webservice_for_person,
45 )
4643
4744
48class TestWebhook(TestCaseWithFactory):45class TestWebhook(TestCaseWithFactory):
@@ -124,7 +121,7 @@ class TestWebhook(TestCaseWithFactory):
124 u'hg:push:0.1').encode('ASCII')))121 u'hg:push:0.1').encode('ASCII')))
125122
126 def test_anon_forbidden(self):123 def test_anon_forbidden(self):
127 response = LaunchpadWebServiceCaller().get(124 response = webservice_for_person(None).get(
128 self.webhook_url, api_version='devel')125 self.webhook_url, api_version='devel')
129 self.assertEqual(401, response.status)126 self.assertEqual(401, response.status)
130 self.assertIn(b'launchpad.View', response.body)127 self.assertIn(b'launchpad.View', response.body)
@@ -292,7 +289,7 @@ class TestWebhookTargetBase:
292 [entry['delivery_url'] for entry in representation['entries']])289 [entry['delivery_url'] for entry in representation['entries']])
293290
294 def test_webhooks_permissions(self):291 def test_webhooks_permissions(self):
295 webservice = LaunchpadWebServiceCaller()292 webservice = webservice_for_person(None)
296 response = webservice.get(293 response = webservice.get(
297 self.target_url + '/webhooks', api_version='devel')294 self.target_url + '/webhooks', api_version='devel')
298 self.assertEqual(401, response.status)295 self.assertEqual(401, response.status)
@@ -347,7 +344,7 @@ class TestWebhookTargetBase:
347344
348 def test_newWebhook_permissions(self):345 def test_newWebhook_permissions(self):
349 self.useFixture(FeatureFixture({'webhooks.new.enabled': 'true'}))346 self.useFixture(FeatureFixture({'webhooks.new.enabled': 'true'}))
350 webservice = LaunchpadWebServiceCaller()347 webservice = webservice_for_person(None)
351 response = webservice.named_post(348 response = webservice.named_post(
352 self.target_url, 'newWebhook',349 self.target_url, 'newWebhook',
353 delivery_url='http://example.com/ep',350 delivery_url='http://example.com/ep',
diff --git a/lib/lp/snappy/tests/test_snap.py b/lib/lp/snappy/tests/test_snap.py
index f827970..be338d7 100644
--- a/lib/lp/snappy/tests/test_snap.py
+++ b/lib/lp/snappy/tests/test_snap.py
@@ -163,10 +163,7 @@ from lp.testing.matchers import (
163 DoesNotSnapshot,163 DoesNotSnapshot,
164 HasQueryCount,164 HasQueryCount,
165 )165 )
166from lp.testing.pages import (166from lp.testing.pages import webservice_for_person
167 LaunchpadWebServiceCaller,
168 webservice_for_person,
169 )
170167
171168
172class TestSnapFeatureFlag(TestCaseWithFactory):169class TestSnapFeatureFlag(TestCaseWithFactory):
@@ -3078,10 +3075,9 @@ class TestSnapWebservice(TestCaseWithFactory):
3078 self.webservice.getAbsoluteUrl(api_url(snap))3075 self.webservice.getAbsoluteUrl(api_url(snap))
3079 for snap in snaps]3076 for snap in snaps]
3080 admin = getUtility(ILaunchpadCelebrities).admin.teamowner3077 admin = getUtility(ILaunchpadCelebrities).admin.teamowner
3081 logout()
30823078
3083 # Anonymous requests can only see public snaps.3079 # Anonymous requests can only see public snaps.
3084 anon_webservice = LaunchpadWebServiceCaller("test", "")3080 anon_webservice = webservice_for_person(None)
3085 response = anon_webservice.named_get(3081 response = anon_webservice.named_get(
3086 "/+snaps", "findByOwner", owner=person_urls[0],3082 "/+snaps", "findByOwner", owner=person_urls[0],
3087 api_version="devel")3083 api_version="devel")
@@ -3145,10 +3141,9 @@ class TestSnapWebservice(TestCaseWithFactory):
3145 self.webservice.getAbsoluteUrl(api_url(snap))3141 self.webservice.getAbsoluteUrl(api_url(snap))
3146 for snap in snaps]3142 for snap in snaps]
3147 admin = getUtility(ILaunchpadCelebrities).admin.teamowner3143 admin = getUtility(ILaunchpadCelebrities).admin.teamowner
3148 logout()
31493144
3150 # Anonymous requests can only see public snaps.3145 # Anonymous requests can only see public snaps.
3151 anon_webservice = LaunchpadWebServiceCaller("test", "")3146 anon_webservice = webservice_for_person(None)
3152 response = anon_webservice.named_get(3147 response = anon_webservice.named_get(
3153 "/+snaps", "findByURL", url=urls[0], api_version="devel")3148 "/+snaps", "findByURL", url=urls[0], api_version="devel")
3154 self.assertEqual(200, response.status)3149 self.assertEqual(200, response.status)
@@ -3222,11 +3217,10 @@ class TestSnapWebservice(TestCaseWithFactory):
3222 self.webservice.getAbsoluteUrl(api_url(snap))3217 self.webservice.getAbsoluteUrl(api_url(snap))
3223 for snap in snaps]3218 for snap in snaps]
3224 admin = getUtility(ILaunchpadCelebrities).admin.teamowner3219 admin = getUtility(ILaunchpadCelebrities).admin.teamowner
3225 logout()
3226 prefix = "https://git.example.org/foo/"3220 prefix = "https://git.example.org/foo/"
32273221
3228 # Anonymous requests can only see public snaps.3222 # Anonymous requests can only see public snaps.
3229 anon_webservice = LaunchpadWebServiceCaller("test", "")3223 anon_webservice = webservice_for_person(None)
3230 response = anon_webservice.named_get(3224 response = anon_webservice.named_get(
3231 "/+snaps", "findByURLPrefix", url_prefix=prefix,3225 "/+snaps", "findByURLPrefix", url_prefix=prefix,
3232 api_version="devel")3226 api_version="devel")
@@ -3305,12 +3299,11 @@ class TestSnapWebservice(TestCaseWithFactory):
3305 self.webservice.getAbsoluteUrl(api_url(snap))3299 self.webservice.getAbsoluteUrl(api_url(snap))
3306 for snap in snaps]3300 for snap in snaps]
3307 admin = getUtility(ILaunchpadCelebrities).admin.teamowner3301 admin = getUtility(ILaunchpadCelebrities).admin.teamowner
3308 logout()
3309 prefixes = [3302 prefixes = [
3310 "https://git.example.org/foo/", "https://git.example.org/bar/"]3303 "https://git.example.org/foo/", "https://git.example.org/bar/"]
33113304
3312 # Anonymous requests can only see public snaps.3305 # Anonymous requests can only see public snaps.
3313 anon_webservice = LaunchpadWebServiceCaller("test", "")3306 anon_webservice = webservice_for_person(None)
3314 response = anon_webservice.named_get(3307 response = anon_webservice.named_get(
3315 "/+snaps", "findByURLPrefixes", url_prefixes=prefixes,3308 "/+snaps", "findByURLPrefixes", url_prefixes=prefixes,
3316 api_version="devel")3309 api_version="devel")
@@ -3381,10 +3374,9 @@ class TestSnapWebservice(TestCaseWithFactory):
3381 self.webservice.getAbsoluteUrl(api_url(snap))3374 self.webservice.getAbsoluteUrl(api_url(snap))
3382 for snap in snaps]3375 for snap in snaps]
3383 admin = getUtility(ILaunchpadCelebrities).admin.teamowner3376 admin = getUtility(ILaunchpadCelebrities).admin.teamowner
3384 logout()
33853377
3386 # Anonymous requests can only see public snaps.3378 # Anonymous requests can only see public snaps.
3387 anon_webservice = LaunchpadWebServiceCaller("test", "")3379 anon_webservice = webservice_for_person(None)
3388 response = anon_webservice.named_get(3380 response = anon_webservice.named_get(
3389 "/+snaps", "findByStoreName", store_name=store_names[0],3381 "/+snaps", "findByStoreName", store_name=store_names[0],
3390 api_version="devel")3382 api_version="devel")
diff --git a/lib/lp/soyuz/browser/tests/test_archive_webservice.py b/lib/lp/soyuz/browser/tests/test_archive_webservice.py
index a0511d9..cf0e850 100644
--- a/lib/lp/soyuz/browser/tests/test_archive_webservice.py
+++ b/lib/lp/soyuz/browser/tests/test_archive_webservice.py
@@ -46,10 +46,7 @@ from lp.testing import (
46from lp.testing.gpgkeys import gpgkeysdir46from lp.testing.gpgkeys import gpgkeysdir
47from lp.testing.layers import DatabaseFunctionalLayer47from lp.testing.layers import DatabaseFunctionalLayer
48from lp.testing.matchers import HasQueryCount48from lp.testing.matchers import HasQueryCount
49from lp.testing.pages import (49from lp.testing.pages import webservice_for_person
50 LaunchpadWebServiceCaller,
51 webservice_for_person,
52 )
5350
5451
55class TestArchiveWebservice(TestCaseWithFactory):52class TestArchiveWebservice(TestCaseWithFactory):
@@ -727,6 +724,7 @@ class TestGetPublishedBinaries(TestCaseWithFactory):
727 # getPublishedBinaries has a query count constant in the number of724 # getPublishedBinaries has a query count constant in the number of
728 # packages returned.725 # packages returned.
729 archive_url = api_url(self.archive)726 archive_url = api_url(self.archive)
727 webservice = webservice_for_person(None)
730728
731 def create_bpph():729 def create_bpph():
732 with admin_logged_in():730 with admin_logged_in():
@@ -734,7 +732,7 @@ class TestGetPublishedBinaries(TestCaseWithFactory):
734 archive=self.archive)732 archive=self.archive)
735733
736 def get_binaries():734 def get_binaries():
737 LaunchpadWebServiceCaller('consumer', '').named_get(735 webservice.named_get(
738 archive_url, 'getPublishedBinaries').jsonBody()736 archive_url, 'getPublishedBinaries').jsonBody()
739737
740 recorder1, recorder2 = record_two_runs(get_binaries, create_bpph, 1)738 recorder1, recorder2 = record_two_runs(get_binaries, create_bpph, 1)
@@ -814,7 +812,7 @@ class TestArchiveSet(TestCaseWithFactory):
814812
815 def test_getByReference(self):813 def test_getByReference(self):
816 random = self.factory.makePerson()814 random = self.factory.makePerson()
817 body = LaunchpadWebServiceCaller('consumer', '').named_get(815 body = webservice_for_person(None).named_get(
818 '/archives', 'getByReference', reference='ubuntu',816 '/archives', 'getByReference', reference='ubuntu',
819 api_version='devel').jsonBody()817 api_version='devel').jsonBody()
820 self.assertEqual(body['reference'], 'ubuntu')818 self.assertEqual(body['reference'], 'ubuntu')
@@ -824,13 +822,13 @@ class TestArchiveSet(TestCaseWithFactory):
824 self.assertEqual(body['reference'], 'ubuntu')822 self.assertEqual(body['reference'], 'ubuntu')
825823
826 def test_getByReference_ppa(self):824 def test_getByReference_ppa(self):
827 body = LaunchpadWebServiceCaller('consumer', '').named_get(825 body = webservice_for_person(None).named_get(
828 '/archives', 'getByReference', reference='~cprov/ubuntu/ppa',826 '/archives', 'getByReference', reference='~cprov/ubuntu/ppa',
829 api_version='devel').jsonBody()827 api_version='devel').jsonBody()
830 self.assertEqual(body['reference'], '~cprov/ubuntu/ppa')828 self.assertEqual(body['reference'], '~cprov/ubuntu/ppa')
831829
832 def test_getByReference_invalid(self):830 def test_getByReference_invalid(self):
833 body = LaunchpadWebServiceCaller('consumer', '').named_get(831 body = webservice_for_person(None).named_get(
834 '/archives', 'getByReference', reference='~cprov/ubuntu',832 '/archives', 'getByReference', reference='~cprov/ubuntu',
835 api_version='devel').jsonBody()833 api_version='devel').jsonBody()
836 self.assertIs(None, body)834 self.assertIs(None, body)
@@ -841,7 +839,7 @@ class TestArchiveSet(TestCaseWithFactory):
841 owner = archive.owner839 owner = archive.owner
842 reference = archive.reference840 reference = archive.reference
843 random = self.factory.makePerson()841 random = self.factory.makePerson()
844 body = LaunchpadWebServiceCaller('consumer', '').named_get(842 body = webservice_for_person(None).named_get(
845 '/archives', 'getByReference', reference=reference,843 '/archives', 'getByReference', reference=reference,
846 api_version='devel').jsonBody()844 api_version='devel').jsonBody()
847 self.assertIs(None, body)845 self.assertIs(None, body)
diff --git a/lib/lp/testing/pages.py b/lib/lp/testing/pages.py
index 8e54faa..2e2dc6e 100644
--- a/lib/lp/testing/pages.py
+++ b/lib/lp/testing/pages.py
@@ -750,20 +750,24 @@ def webservice_for_person(person, consumer_key=u'launchpad-library',
750 Use this method to create a way to test the webservice that doesn't depend750 Use this method to create a way to test the webservice that doesn't depend
751 on sample data.751 on sample data.
752 """752 """
753 if person.is_team:753 kwargs = {}
754 raise AssertionError('This cannot be used with teams.')754 if person is not None:
755 login(ANONYMOUS)755 if person.is_team:
756 oacs = getUtility(IOAuthConsumerSet)756 raise AssertionError('This cannot be used with teams.')
757 consumer = oacs.getByKey(consumer_key)757 login(ANONYMOUS)
758 if consumer is None:758 oacs = getUtility(IOAuthConsumerSet)
759 consumer = oacs.new(consumer_key)759 consumer = oacs.getByKey(consumer_key)
760 request_token, _ = consumer.newRequestToken()760 if consumer is None:
761 request_token.review(person, permission, context)761 consumer = oacs.new(consumer_key)
762 access_token, access_secret = request_token.createAccessToken()762 request_token, _ = consumer.newRequestToken()
763 request_token.review(person, permission, context)
764 access_token, access_secret = request_token.createAccessToken()
765 kwargs['oauth_consumer_key'] = consumer_key
766 kwargs['oauth_access_key'] = access_token.key
767 kwargs['oauth_access_secret'] = access_secret
768 kwargs['default_api_version'] = default_api_version
763 logout()769 logout()
764 service = LaunchpadWebServiceCaller(770 service = LaunchpadWebServiceCaller(**kwargs)
765 consumer_key, access_token.key, access_secret,
766 default_api_version=default_api_version)
767 service.user = person771 service.user = person
768 return service772 return service
769773

Subscribers

People subscribed via source and target branches

to status/vote changes: