Simplified the URL and view code for the personal meetecho access API endpoint, and added test code.
- Legacy-Id: 17642
This commit is contained in:
parent
e01d41169a
commit
eedd48d455
|
@ -179,6 +179,25 @@ class CustomApiTestCase(TestCase):
|
|||
self.assertEqual(data['user']['email'], secretariat.user.email)
|
||||
|
||||
|
||||
def test_api_v2_person_access_meetecho(self):
|
||||
url = urlreverse('ietf.api.views.person_access_meetecho')
|
||||
person = PersonFactory()
|
||||
apikey = PersonalApiKey.objects.create(endpoint=url, person=person)
|
||||
|
||||
# error cases
|
||||
r = self.client.get(url, {'apikey': apikey.hash()})
|
||||
self.assertContains(r, "Too long since last regular login", status_code=400)
|
||||
person.user.last_login = timezone.now()
|
||||
person.user.save()
|
||||
|
||||
# working case
|
||||
r = self.client.get(url, {'apikey': apikey.hash()})
|
||||
self.assertEqual(r.status_code, 200)
|
||||
data = r.json()
|
||||
self.assertEqual(data['name'], person.name)
|
||||
self.assertEqual(data['email'], person.email().address)
|
||||
|
||||
|
||||
class TastypieApiTestCase(ResourceTestCaseMixin, TestCase):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.apps = {}
|
||||
|
|
|
@ -25,7 +25,7 @@ urlpatterns = [
|
|||
# For mailarchive use, requires secretariat role
|
||||
url(r'^v2/person/person', api_views.ApiV2PersonExportView.as_view()),
|
||||
# For meetecho access
|
||||
url(r'^v2/person/access/meetecho', api_views.PersonAccessMeetechoView.as_view()),
|
||||
url(r'^person/access/meetecho', api_views.person_access_meetecho),
|
||||
]
|
||||
|
||||
# Additional (standard) Tastypie endpoints
|
||||
|
|
|
@ -95,13 +95,8 @@ class ApiV2PersonExportView(DetailView, JsonExportMixin):
|
|||
|
||||
return self.json_view(request, filter=querydict.dict(), expand=expand)
|
||||
|
||||
@method_decorator((csrf_exempt, require_api_key), name='dispatch')
|
||||
class PersonAccessMeetechoView(DetailView, JsonExportMixin):
|
||||
model = Person
|
||||
|
||||
def err(self, code, text):
|
||||
return HttpResponse(text, status=code, content_type='text/plain')
|
||||
|
||||
def get(self, request):
|
||||
person = get_object_or_404(self.model, user=request.user)
|
||||
return HttpResponse(json.dumps({ 'name' : person.name, 'email': person.email().address, }), content_type='application/json')
|
||||
@require_api_key
|
||||
@csrf_exempt
|
||||
def person_access_meetecho(request):
|
||||
person = get_object_or_404(Person, user=request.user)
|
||||
return HttpResponse(json.dumps({ 'name' : person.name, 'email': person.email().address, }), content_type='application/json')
|
||||
|
|
Loading…
Reference in a new issue