Skip to content

Commit 92f2d02

Browse files
committed
Fix /api/v2/person/person to work with Robot apikey. Commit ready for merge.
- Legacy-Id: 19101
1 parent c8ed251 commit 92f2d02

4 files changed

Lines changed: 12 additions & 19 deletions

File tree

ietf/api/tests.py

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,9 @@ def test_person_export(self):
257257

258258
def test_api_v2_person_export_view(self):
259259
url = urlreverse('ietf.api.views.ApiV2PersonExportView')
260-
secretariat_role = RoleFactory(group__acronym='secretariat', name_id='secr')
261-
secretariat = secretariat_role.person
262-
apikey = PersonalApiKey.objects.create(endpoint=url, person=secretariat)
260+
robot = PersonFactory(user__is_staff=True)
261+
RoleFactory(name_id='robot', person=robot, email=robot.email(), group__acronym='secretariat')
262+
apikey = PersonalApiKey.objects.create(endpoint=url, person=robot)
263263

264264
# error cases
265265
r = self.client.post(url, {})
@@ -270,25 +270,19 @@ def test_api_v2_person_export_view(self):
270270
badrole.person.user.last_login = timezone.now()
271271
badrole.person.user.save()
272272
r = self.client.post(url, {'apikey': badapikey.hash()})
273-
self.assertContains(r, "Restricted to role: Secretariat", status_code=403)
274-
275-
r = self.client.post(url, {'apikey': apikey.hash()})
276-
self.assertContains(r, "Too long since last regular login", status_code=400)
277-
secretariat.user.last_login = timezone.now()
278-
secretariat.user.save()
273+
self.assertContains(r, "Restricted to role: Robot", status_code=403)
279274

280275
r = self.client.post(url, {'apikey': apikey.hash()})
281276
self.assertContains(r, "No filters provided", status_code=400)
282277

283278
# working case
284-
r = self.client.post(url, {'apikey': apikey.hash(), 'email': secretariat.email().address, '_expand': 'user'})
279+
r = self.client.post(url, {'apikey': apikey.hash(), 'email': robot.email().address, '_expand': 'user'})
285280
self.assertEqual(r.status_code, 200)
286281
jsondata = r.json()
287-
data = jsondata['person.person'][str(secretariat.id)]
288-
self.assertEqual(data['name'], secretariat.name)
289-
self.assertEqual(data['ascii'], secretariat.ascii)
290-
self.assertEqual(data['user']['email'], secretariat.user.email)
291-
282+
data = jsondata['person.person'][str(robot.id)]
283+
self.assertEqual(data['name'], robot.name)
284+
self.assertEqual(data['ascii'], robot.ascii)
285+
self.assertEqual(data['user']['email'], robot.user.email)
292286

293287
def test_api_new_meeting_registration(self):
294288
meeting = MeetingFactory(type_id='ietf')

ietf/api/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ def get(self, request):
9191
return self.json_view(request, filter={'id':person.id}, expand=expand)
9292

9393

94-
@method_decorator((csrf_exempt, require_api_key, role_required('Secretariat')), name='dispatch')
94+
@method_decorator((csrf_exempt, require_api_key, role_required('Robot')), name='dispatch')
9595
class ApiV2PersonExportView(DetailView, JsonExportMixin):
9696
model = Person
9797

@@ -214,4 +214,4 @@ def version(request):
214214
}),
215215
content_type='application/json',
216216
)
217-
217+

ietf/ietfauth/tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ def test_change_username(self):
531531

532532
def test_apikey_management(self):
533533
# Create a person with a role that will give at least one valid apikey
534-
person = RoleFactory(name_id='secr', group__acronym='secretariat').person
534+
person = RoleFactory(name_id='robot', group__acronym='secretariat').person
535535

536536
url = urlreverse('ietf.ietfauth.views.apikey_index')
537537

ietf/person/models.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,6 @@ def salt():
348348
# Manual maintenance: List all endpoints that use @require_api_key here
349349
PERSON_API_KEY_VALUES = [
350350
("/api/iesg/position", "/api/iesg/position", "Area Director"),
351-
("/api/v2/person/person", "/api/v2/person/person", "Secretariat"),
352351
("/api/v2/person/person", "/api/v2/person/person", "Robot"),
353352
("/api/meeting/session/video/url", "/api/meeting/session/video/url", "Recording Manager"),
354353
("/api/notify/meeting/registration", "/api/notify/meeting/registration", "Robot"),

0 commit comments

Comments
 (0)