Added /group/<id>/members/(<id>)? endpoints and updated tests somewhat.

This commit is contained in:
Robert Kolner committed 2013-07-20 22:27:44 +02:00
1 parent 2c50b83c7c
commit 3e2601f84e
3 files changed
+37 -36

No files matched your search

+29 -14
View File
@@ -1,20 +1,35 @@
from django.conf.urls import url
from tastypie.authorization import Authorization
from tastypie.resources import ModelResource, ALL
from dusken.models import Group
from dusken.models import Group
from dusken.api.membersbygroup import MembersByGroupResource
class GroupResource(ModelResource):
"""
This class provides following endpoints:
(1) /api/v1/group/
(2) /api/v1/group/{id}/
"""
class Meta:
queryset = Group.objects.all()
resource_name = 'group'
list_allowed_methods = [ 'get', 'post' ]
detail_allowed_methods = [ 'get', 'post' ]
authorization = Authorization() # TODO: for dev (VERY INSECURE)
filtering = {
}
"""
This class provides following endpoints:
(1) /api/v1/group/
(2) /api/v1/group/{id}/
"""
class Meta:
queryset = Group.objects.all()
resource_name = 'group'
list_allowed_methods = [ 'get', 'post' ]
detail_allowed_methods = [ 'get', 'post' ]
authorization = Authorization() # TODO: for dev (VERY INSECURE)
filtering = {
}
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<group_id>\d+)/members/$" % (self._meta.resource_name), self.wrap_view("members"), name="api_members"),
url(r"^(?P<resource_name>%s)/(?P<group_id>\d+)/members/(?P<member_id>\d+)/$" % (self._meta.resource_name), self.wrap_view("detail_members"), name="api_detail_members"),
]
def members(self, request, **kwargs):
resource = MembersByGroupResource()
return resource.dispatch_list(request, **kwargs)
def detail_members(self, request, **kwargs):
resource = MembersByGroupResource()
return resource.dispatch_detail(request, **kwargs)
-1
View File
@@ -8,7 +8,6 @@ from tastypie.exceptions import ImmediateHttpResponse
from tastypie.http import HttpForbidden, HttpNoContent, HttpResponse
from tastypie.resources import ModelResource, ALL
from dusken.models import *
from dusken.api.membersbygroup import MembersByGroupResource
from dusken.api.groupsbymember import GroupsByMemberResource
+8 -21
View File
@@ -16,34 +16,21 @@ class MembersByGroupTest(ResourceTestCase):
self.group.save()
# URI to get all members by group relations (not functional, needs more things at the end)
self.url = '/api/v1/membersbygroup/'
def test_request_types(self):
"""
Tests that the endpoint responds to correct types of requests.
"""
resp = self.api_client.get(self.url, format='json')
self.assertHttpMethodNotAllowed(resp)
resp = self.api_client.post(self.url)
self.assertHttpMethodNotAllowed(resp)
resp = self.api_client.put(self.url)
self.assertHttpMethodNotAllowed(resp)
resp = self.api_client.delete(self.url)
self.assertHttpMethodNotAllowed(resp)
self.url = '/api/v1/group/{member_id}/member/'.format(member_id=self.group.id)
def test_get_all_relations(self):
url = self.url + str(self.group.pk) + "/"
url = self.url + str(self.member.id) + "/"
resp = self.api_client.get(url, format="json")
self.assertValidJSONResponse(resp)
data = self.deserialize(resp)
self.assertEquals(len(data['members']), self.group.user_set.count())
self.assertEquals(data['members'][0], self.member.pk)
groupmembers = data['objects']
self.assertEquals(len(groupmembers), self.group.user_set.count())
self.assertEquals(int(groupmembers[0]['member_id']), self.member.pk)
def test_get_a_relation(self):
url = self.url + str(self.group.pk) +"/" +str(self.member.pk) +"/"
url = self.url + str(self.group.pk) +"/"
resp = self.api_client.get(url, format='json')
self.assertValidJSONResponse(resp)