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.authorization import Authorization
|
||||||
from tastypie.resources import ModelResource, ALL
|
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):
|
class GroupResource(ModelResource):
|
||||||
"""
|
"""
|
||||||
This class provides following endpoints:
|
This class provides following endpoints:
|
||||||
(1) /api/v1/group/
|
(1) /api/v1/group/
|
||||||
(2) /api/v1/group/{id}/
|
(2) /api/v1/group/{id}/
|
||||||
"""
|
"""
|
||||||
class Meta:
|
class Meta:
|
||||||
queryset = Group.objects.all()
|
queryset = Group.objects.all()
|
||||||
resource_name = 'group'
|
resource_name = 'group'
|
||||||
list_allowed_methods = [ 'get', 'post' ]
|
list_allowed_methods = [ 'get', 'post' ]
|
||||||
detail_allowed_methods = [ 'get', 'post' ]
|
detail_allowed_methods = [ 'get', 'post' ]
|
||||||
authorization = Authorization() # TODO: for dev (VERY INSECURE)
|
authorization = Authorization() # TODO: for dev (VERY INSECURE)
|
||||||
filtering = {
|
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.http import HttpForbidden, HttpNoContent, HttpResponse
|
||||||
from tastypie.resources import ModelResource, ALL
|
from tastypie.resources import ModelResource, ALL
|
||||||
from dusken.models import *
|
from dusken.models import *
|
||||||
from dusken.api.membersbygroup import MembersByGroupResource
|
|
||||||
from dusken.api.groupsbymember import GroupsByMemberResource
|
from dusken.api.groupsbymember import GroupsByMemberResource
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,34 +16,21 @@ class MembersByGroupTest(ResourceTestCase):
|
|||||||
self.group.save()
|
self.group.save()
|
||||||
|
|
||||||
# URI to get all members by group relations (not functional, needs more things at the end)
|
# URI to get all members by group relations (not functional, needs more things at the end)
|
||||||
self.url = '/api/v1/membersbygroup/'
|
self.url = '/api/v1/group/{member_id}/member/'.format(member_id=self.group.id)
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
def test_get_all_relations(self):
|
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")
|
resp = self.api_client.get(url, format="json")
|
||||||
self.assertValidJSONResponse(resp)
|
self.assertValidJSONResponse(resp)
|
||||||
data = self.deserialize(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):
|
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')
|
resp = self.api_client.get(url, format='json')
|
||||||
self.assertValidJSONResponse(resp)
|
self.assertValidJSONResponse(resp)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user