Archived
Added /group/<id>/members/(<id>)? endpoints and updated tests somewhat.
This commit is contained in:
1 parent
2c50b83c7c
commit
3e2601f84e
3 files changed
+37
-36
No files matched your search
+29
-14
@@ -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)
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in new issue
Block a user