diff --git a/dusken/main/api/group.py b/dusken/main/api/group.py new file mode 100644 index 0000000..fd84f9c --- /dev/null +++ b/dusken/main/api/group.py @@ -0,0 +1,20 @@ +from tastypie.resources import ModelResource, ALL +from tastypie.authorization import Authorization +from main.models import * + + +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 = { + } + diff --git a/dusken/main/tests/group.py b/dusken/main/tests/group.py new file mode 100644 index 0000000..1a82776 --- /dev/null +++ b/dusken/main/tests/group.py @@ -0,0 +1,47 @@ +import logging + +from support.test import ResourceTestCase +from main.models import Group + +class GroupTest(ResourceTestCase): + fixtures = [ 'testdata.json' ] + + def assertValidMemberData(self, member): + self.assertEquals(type(member), dict) + self.assertKeys(member, [ + u'id', + u'name', + u'posix_name', + u'created', + u'updated', + u'resource_uri' + ]) + self.assertNotEquals(None,member['id']) + self.assertNotEquals(None,member['name']) + self.assertNotEquals(None,member['posix_name']) + self.assertNotEquals(None,member['created']) + self.assertNotEquals(None,member['updated']) + self.assertNotEquals(None,member['resource_uri']) + + def setUp(self): + super(Group, self).setUp() + + # URI to get all groups + self.all_groups_url = '/api/v1/group/' + + def test_request_types(self): + """ + Tests that the endpoint responds to correct types of requests. + """ + resp = self.api_client.get(self.all_groups_url, format='json') + self.assertNotEquals(resp.status_code, 405) + + resp = self.api_client.post(self.all_groups_url) + self.assertNotEquals(resp.status_code, 405) + + resp = self.api_client.put(self.all_groups_url) + self.assertHttpMethodNotAllowed(resp) + + resp = self.api_client.delete(self.all_groups_url) + self.assertHttpMethodNotAllowed(resp) + diff --git a/dusken/main/urls.py b/dusken/main/urls.py index 07bcb79..29234c0 100644 --- a/dusken/main/urls.py +++ b/dusken/main/urls.py @@ -1,9 +1,11 @@ from django.conf.urls.defaults import * from tastypie.api import Api from main.api.member import MemberResource +from main.api.group import GroupResource v1_api = Api(api_name='v1') v1_api.register(MemberResource()) +v1_api.register(GroupResource()) urlpatterns = patterns('', (r'^api/', include(v1_api.urls)),