Moved api to an own module. Improved member-tests.

This commit is contained in:
Robert Kolner committed 2013-02-01 13:43:38 +01:00
1 parent c4da4f4393
commit 520e8f8872
5 files changed
+65 -17

No files matched your search

-10
View File
@@ -1,10 +0,0 @@
from tastypie.resources import ModelResource
from tastypie.authorization import Authorization
from main.models import *
class MemberResource(ModelResource):
class Meta:
queryset = Member.objects.all()
resource_name = 'member'
authorization= Authorization() # for dev (VERY INSECURE)
View File
Whitespace-only changes.
+21
View File
@@ -0,0 +1,21 @@
from tastypie.resources import ModelResource, ALL
from tastypie.authorization import Authorization
from main.models import *
class MemberResource(ModelResource):
"""
This class provides following endpoints:
(1) /api/v1/member/
(2) /api/v1/member/{id}/
"""
class Meta:
queryset = Member.objects.all()
resource_name = 'member'
list_allowed_methods = [ 'get', 'post' ]
detail_allowed_methods = [ 'get', 'post' ]
authorization = Authorization() # TODO: for dev (VERY INSECURE)
filtering = {
'username' : ALL
}
+43 -6
View File
@@ -6,6 +6,10 @@ from main.models import Member
class MemberTest(ResourceTestCase):
fixtures = [ 'members.json' ]
def assertValidMemberData(self, member):
self.assertEquals(type(member), dict)
self.assertKeys(member, [ u'member_id', u'email', u'username', u'phonenumber', u'givenname', u'dateofbirth', u'surname', u'resource_uri' ])
def setUp(self):
super(MemberTest, self).setUp()
@@ -18,6 +22,23 @@ class MemberTest(ResourceTestCase):
self.all_members_url = '/api/v1/member/'
self.member_url = self.all_members_url + '{}/'.format(self.member.pk)
def test_check_request_types(self):
"""
Tests that the endpoint responds to correct types of requests.
"""
resp = self.api_client.get(self.all_members_url, format='json')
self.assertNotEquals(resp.status_code, 405)
resp = self.api_client.post(self.all_members_url)
self.assertNotEquals(resp.status_code, 405)
resp = self.api_client.put(self.all_members_url)
self.assertHttpMethodNotAllowed(resp)
resp = self.api_client.delete(self.all_members_url)
self.assertHttpMethodNotAllowed(resp)
def test_get_member(self):
"""
Tests that we can get a premade user correctly.
@@ -27,14 +48,11 @@ class MemberTest(ResourceTestCase):
# Check if the returned data is correct:
member = self.deserialize(resp)
self.assertKeys(member, [ u'member_id', u'email', u'username', u'phonenumber', u'givenname', u'dateofbirth', u'surname', u'resource_uri' ])
self.assertEqual(member['username'], 'robertko')
self.assertEqual(member['email'], 'robert.kolner@studentersamfundet.no')
self.assertValidMemberData(member)
def test_get_all_members(self):
"""
Tests that we can get multiple users from the api.
Tests that we can get all users from the api.
"""
resp = self.api_client.get(self.all_members_url, format='json')
self.assertValidJSONResponse(resp)
@@ -43,5 +61,24 @@ class MemberTest(ResourceTestCase):
all_members = self.deserialize(resp)['objects']
self.assertEqual(len(all_members), 2)
# TODO: Check for correctness of data.
for index in range(len(all_members)):
self.assertValidMemberData(all_members[index])
def test_get_filtered_members(self):
"""
Tests that we can get a filtered list from the api.
"""
data = {
"username" : "robertko"
}
resp = self.api_client.get(self.all_members_url, format='json', data=data)
self.assertValidJSONResponse(resp)
# Check if the returned data is correct:
all_members = self.deserialize(resp)['objects']
self.assertEqual(len(all_members), 1)
member = all_members[0]
self.assertValidMemberData(member)
+1 -1
View File
@@ -1,6 +1,6 @@
from django.conf.urls.defaults import *
from tastypie.api import Api
from main.api import MemberResource
from main.api.member import MemberResource
v1_api = Api(api_name='v1')
v1_api.register(MemberResource())