Archived
Not working version of tests. I fail english.
This commit is contained in:
1 parent
d7d4e10995
commit
96c3a6faba
3 files changed
+77
-26
No files matched your search
+34
-8
@@ -3,9 +3,10 @@ from django.contrib.auth.models import User
|
||||
from django.conf.urls import url
|
||||
from django.shortcuts import get_object_or_404
|
||||
from tastypie import fields
|
||||
from tastypie.authorization import Authorization
|
||||
from tastypie.authentication import ApiKeyAuthentication
|
||||
from tastypie.authorization import DjangoAuthorization
|
||||
from tastypie.exceptions import ImmediateHttpResponse
|
||||
from tastypie.http import HttpForbidden, HttpNoContent, HttpResponse
|
||||
from tastypie.http import HttpForbidden, HttpNoContent, HttpResponse, HttpAccepted
|
||||
from tastypie.resources import ModelResource, ALL
|
||||
from dusken.models import *
|
||||
from dusken.api.groupsbymember import GroupsByMemberResource
|
||||
@@ -22,10 +23,10 @@ class MemberResource(ModelResource):
|
||||
resource_name = 'member'
|
||||
list_allowed_methods = [ 'get', 'post' ]
|
||||
detail_allowed_methods = [ 'get', 'patch', 'delete' ]
|
||||
authorization = Authorization() # TODO: for dev (VERY INSECURE)
|
||||
authentication = ApiKeyAuthentication()
|
||||
authorization = DjangoAuthorization()
|
||||
excludes = [ 'date_joined', 'password', 'is_active', 'is_staff', 'is_superuser', 'last_login' ]
|
||||
filtering = {
|
||||
'username' : [ 'exact' ],
|
||||
'email' : [ 'exact' ],
|
||||
'first_name' : [ 'exact' ],
|
||||
'last_name' : [ 'exact' ],
|
||||
@@ -133,12 +134,37 @@ class MemberResource(ModelResource):
|
||||
|
||||
return bundle
|
||||
|
||||
def post(self, request, **kwargs):
|
||||
pass #TODO Activate user or...
|
||||
return super(MemberResource, self).post(request, **kwargs)
|
||||
|
||||
def get_list(self, request, **kwargs):
|
||||
return super(MemberResource, self).get_list(request, **kwargs)
|
||||
|
||||
def get_detail(self, request, **kwargs):
|
||||
return super(MemberResource, self).get_detail(request, **kwargs)
|
||||
|
||||
def post_list(self, request, **kwargs):
|
||||
return super(MemberResource, self).post_list(request, **kwargs)
|
||||
|
||||
def post_detail(self, request, **kwargs):
|
||||
try:
|
||||
member = MemberResource.objects.get(kwargs['pk'])
|
||||
member.is_active = True
|
||||
member.save()
|
||||
return HttpAccepted()
|
||||
except MemberResource.DoesNotExist:
|
||||
pass
|
||||
return super(MemberResource, self).post_detail(request, **kwargs)
|
||||
|
||||
def patch_list(self, request, **kwargs):
|
||||
return super(MemberResource, self).patch_list(request, **kwargs)
|
||||
|
||||
def patch_detail(self, request, **kwargs):
|
||||
return super(MemberResource, self).patch_detail(request, **kwargs)
|
||||
|
||||
def delete_list(self, request, **kwargs):
|
||||
return super(MemberResource, self).delete_list(request, **kwargs)
|
||||
|
||||
def delete_detail(self, request, **kwargs):
|
||||
member = Member.objects.get(kwargs['pk'])
|
||||
member = MemberResource.objects.get(kwargs['pk'])
|
||||
member.is_active = False
|
||||
member.save()
|
||||
return HttpNoContent()
|
||||
@@ -1,5 +1,6 @@
|
||||
import django
|
||||
from django.db import models
|
||||
from tastypie.models import create_api_key
|
||||
|
||||
class Country(models.Model):
|
||||
class Meta:
|
||||
@@ -152,3 +153,8 @@ class Group(django.contrib.auth.models.Group):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
|
||||
###########
|
||||
# SIGNALS #
|
||||
###########
|
||||
models.signals.post_save.connect(create_api_key, sender=Member)
|
||||
|
||||
+37
-18
@@ -1,8 +1,8 @@
|
||||
import logging
|
||||
|
||||
from support.test import ResourceTestCase
|
||||
from dusken.models import Address, Country, Member
|
||||
|
||||
from support.test import ResourceTestCase
|
||||
from tastypie.models import ApiKey
|
||||
from utils.tests import test_fixtures
|
||||
|
||||
class MemberTestBase(ResourceTestCase):
|
||||
@@ -13,17 +13,22 @@ class MemberTestBase(ResourceTestCase):
|
||||
# TODO use fixtures for this
|
||||
# Get the preloaded member, which will be used for
|
||||
# comparison with fetched object.
|
||||
self.member = Member(username='robert', email='robert.kolner@gmail.com', phone_number=90567268)
|
||||
self.member = Member(username='robert', password='pass', email='robert.kolner@gmail.com', phone_number=90567268)
|
||||
self.member.is_staff = True
|
||||
self.member.is_admin = True
|
||||
self.member.save()
|
||||
|
||||
self.member2 = Member(username='test', email='test@test.com')
|
||||
self.member2 = Member(username='test', password='pass', email='test@test.com')
|
||||
self.member2.save()
|
||||
|
||||
# create credentials for both members:
|
||||
self.creds = self.create_apikey(username=self.member.username, api_key=ApiKey.objects.get(user=self.member).key)
|
||||
self.creds2 = self.create_apikey(username=self.member2.username, api_key=ApiKey.objects.get(user=self.member2).key)
|
||||
|
||||
# URIs to the member api
|
||||
self.all_members_url = '/api/v1/member/'
|
||||
self.member_url = self.all_members_url + '{}/'
|
||||
|
||||
|
||||
class MemberTest(MemberTestBase):
|
||||
def assertValidMemberData(self, member):
|
||||
self.assertEquals(type(member), dict)
|
||||
@@ -47,22 +52,28 @@ class MemberTest(MemberTestBase):
|
||||
self.assertNotEquals(None,member['updated'])
|
||||
self.assertNotEquals(None,member['resource_uri'])
|
||||
|
||||
def test_get_member_unauthorized(self):
|
||||
self.assertHttpUnauthorized(self.api_client.get(self.member_url.format(self.member.pk), format='json'))
|
||||
|
||||
def test_get_member(self):
|
||||
"""
|
||||
Tests that we can get a premade user correctly.
|
||||
"""
|
||||
resp = self.api_client.get(self.member_url.format(self.member.pk), format='json')
|
||||
resp = self.api_client.get(self.member_url.format(self.member.pk), format='json', authentication=self.creds)
|
||||
self.assertValidJSONResponse(resp)
|
||||
|
||||
# Check if the returned data is correct:
|
||||
member = self.deserialize(resp)
|
||||
self.assertValidMemberData(member)
|
||||
|
||||
def test_get_member_unauthorized(self):
|
||||
self.assertHttpUnauthorized(self.api_client.get(self.all_members_url, format='json'))
|
||||
|
||||
def test_get_all_members(self):
|
||||
"""
|
||||
Tests that we can get all users from the api.
|
||||
"""
|
||||
resp = self.api_client.get(self.all_members_url, format='json')
|
||||
resp = self.api_client.get(self.all_members_url, format='json', authentication=self.creds)
|
||||
self.assertValidJSONResponse(resp)
|
||||
|
||||
# Check if the returned data is correct:
|
||||
@@ -83,7 +94,7 @@ class MemberTest(MemberTestBase):
|
||||
}
|
||||
|
||||
for key, value in data.items():
|
||||
resp = self.api_client.get(self.all_members_url, format='json', data={ key : value })
|
||||
resp = self.api_client.get(self.all_members_url, format='json', data={ key : value }, authentication=self.creds)
|
||||
self.assertValidJSONResponse(resp)
|
||||
|
||||
# Check if the returned data is correct:
|
||||
@@ -106,7 +117,8 @@ class MemberTest(MemberTestBase):
|
||||
|
||||
resp = self.api_client.post(self.all_members_url,
|
||||
format='json',
|
||||
data=data)
|
||||
data=data,
|
||||
authentication=str(self.creds))
|
||||
self.assertHttpCreated(resp)
|
||||
|
||||
# Check if user was actually put into database:
|
||||
@@ -132,7 +144,8 @@ class MemberTest(MemberTestBase):
|
||||
|
||||
resp = self.api_client.post(self.all_members_url,
|
||||
format = 'json',
|
||||
data = data)
|
||||
data = data,
|
||||
authentication=self.creds)
|
||||
self.assertHttpForbidden(resp)
|
||||
|
||||
def test_patch_change_member(self):
|
||||
@@ -147,7 +160,8 @@ class MemberTest(MemberTestBase):
|
||||
|
||||
resp = self.api_client.patch(self.member_url.format(self.member.pk),
|
||||
format='json',
|
||||
data=data)
|
||||
data=data,
|
||||
authentication=self.creds)
|
||||
self.assertHttpAccepted(resp)
|
||||
|
||||
# Check if user was actually updated:
|
||||
@@ -164,7 +178,7 @@ class MemberTest(MemberTestBase):
|
||||
newusername = oldusername + 'lolzorz'
|
||||
|
||||
data = { 'username' : newusername }
|
||||
resp = self.api_client.patch(self.member_url.format(self.member.pk), format='json', data=data)
|
||||
resp = self.api_client.patch(self.member_url.format(self.member.pk), format='json', data=data, authentication=self.creds)
|
||||
self.assertHttpForbidden(resp)
|
||||
|
||||
try:
|
||||
@@ -202,7 +216,8 @@ class MemberAddressTest(MemberTestBase):
|
||||
response = self.api_client.patch(
|
||||
self.member_url.format(self.user_id),
|
||||
format='json',
|
||||
data=data)
|
||||
data=data,
|
||||
authentication=self.creds)
|
||||
|
||||
self.assertHttpAccepted(response)
|
||||
self.assertEquals('somestreet 2', Member.objects.get(id=self.user_id).address.street_address)
|
||||
@@ -217,8 +232,9 @@ class MemberAddressTest(MemberTestBase):
|
||||
response = self.api_client.patch(
|
||||
self.member_url.format(self.user_id),
|
||||
format='json',
|
||||
data=data)
|
||||
|
||||
data=data,
|
||||
authentication=self.creds)
|
||||
|
||||
self.assertHttpAccepted(response)
|
||||
self.assertEquals('Amsterdam', Member.objects.get(id=self.user_id).address.city)
|
||||
|
||||
@@ -232,7 +248,8 @@ class MemberAddressTest(MemberTestBase):
|
||||
response = self.api_client.patch(
|
||||
self.member_url.format(self.user_id),
|
||||
format='json',
|
||||
data=data)
|
||||
data=data,
|
||||
authentication=self.creds)
|
||||
|
||||
self.assertHttpAccepted(response)
|
||||
self.assertEquals('0977RT', Member.objects.get(id=self.user_id).address.postal_code)
|
||||
@@ -247,7 +264,8 @@ class MemberAddressTest(MemberTestBase):
|
||||
response = self.api_client.patch(
|
||||
self.member_url.format(self.user_id),
|
||||
format='json',
|
||||
data=data)
|
||||
data=data,
|
||||
authentication=self.creds)
|
||||
|
||||
self.assertHttpAccepted(response)
|
||||
self.assertEquals(
|
||||
@@ -264,7 +282,8 @@ class MemberAddressTest(MemberTestBase):
|
||||
response = self.api_client.patch(
|
||||
self.member_url.format(self.user_id),
|
||||
format='json',
|
||||
data=data)
|
||||
data=data,
|
||||
authentication=self.creds)
|
||||
|
||||
self.assertHttpForbidden(response)
|
||||
self.assertEquals('The country "unknown" does not exist.', response.content)
|
||||
|
||||
Reference in new issue
Block a user