Basic Working tests to build on
This commit is contained in:
parent
48c90c95f5
commit
54f89e8b5b
|
@ -7,7 +7,7 @@ from mhackspace.rfid.models import Device, Rfid
|
||||||
|
|
||||||
@admin.register(Device)
|
@admin.register(Device)
|
||||||
class DeviceAdmin(ModelAdmin):
|
class DeviceAdmin(ModelAdmin):
|
||||||
list_display = ('name',)
|
list_display = ('name', 'identifier')
|
||||||
|
|
||||||
@admin.register(Rfid)
|
@admin.register(Rfid)
|
||||||
class RfidAdmin(ModelAdmin):
|
class RfidAdmin(ModelAdmin):
|
||||||
|
|
|
@ -17,7 +17,8 @@ class DeviceSerializer(serializers.ModelSerializer):
|
||||||
class AuthSerializer(serializers.Serializer):
|
class AuthSerializer(serializers.Serializer):
|
||||||
name = serializers.CharField(max_length=255)
|
name = serializers.CharField(max_length=255)
|
||||||
rfid = serializers.CharField(max_length=255)
|
rfid = serializers.CharField(max_length=255)
|
||||||
device_id = serializers.CharField(max_length=255)
|
# device = serializers.UUIDField(format='hex_verbose')
|
||||||
|
device = serializers.CharField(max_length=255)
|
||||||
|
|
||||||
# def create(self, validated_data):
|
# def create(self, validated_data):
|
||||||
# return Task(id=None, **validated_data)
|
# return Task(id=None, **validated_data)
|
||||||
|
|
|
@ -24,28 +24,43 @@ class MigrationTestCase(TestCase):
|
||||||
|
|
||||||
|
|
||||||
class ApiTests(TestCase):
|
class ApiTests(TestCase):
|
||||||
|
maxDiff = None
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.device = Device(name='device01')
|
|
||||||
self.device.save()
|
|
||||||
self.user = User(name='User01')
|
self.user = User(name='User01')
|
||||||
self.user.save()
|
self.user.save()
|
||||||
self.rfid = Rfid(code=1, user=self.user)
|
self.device = Device(name='device01', user=self.user)
|
||||||
|
self.device.save()
|
||||||
|
self.rfid = Rfid(code='1', user=self.user)
|
||||||
self.rfid.save()
|
self.rfid.save()
|
||||||
|
|
||||||
def testAuth(self):
|
def testAuth(self):
|
||||||
factory = APIRequestFactory()
|
factory = APIRequestFactory()
|
||||||
request = factory.get('/rfid/')
|
request = factory.get('/rfid/')
|
||||||
|
|
||||||
def testSamsMadness(self):
|
def testValidAuthCase(self):
|
||||||
client = RequestsClient()
|
client = RequestsClient()
|
||||||
response = client.post(
|
response = client.post(
|
||||||
'http://127.0.0.1:8180/api/v1/rfidAuth/',
|
'http://127.0.0.1:8180/api/v1/rfidAuth/',
|
||||||
data={'rfid':'1', 'device': '1'})
|
data={'rfid': '1', 'device': self.device.identifier})
|
||||||
# print(response.json())
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
expected_result = {'rfid': self.rfid.code, 'name': 'device01', 'device': str(self.device.identifier)}
|
||||||
self.assertEquals(
|
self.assertEquals(
|
||||||
response.json(),
|
response.json(),
|
||||||
[{'rfid': self.rfid.code, 'name': 'device01', 'device_id': self.device.identification}])
|
expected_result
|
||||||
|
)
|
||||||
|
|
||||||
|
def testInValidAuthCase(self):
|
||||||
|
client = RequestsClient()
|
||||||
|
response = client.post(
|
||||||
|
'http://127.0.0.1:8180/api/v1/rfidAuth/',
|
||||||
|
data={'rfid': '99', 'device': str(self.device.identifier)})
|
||||||
|
assert response.status_code == 404
|
||||||
|
|
||||||
|
# response = client.post(
|
||||||
|
# 'http://127.0.0.1:8180/api/v1/rfidAuth/',
|
||||||
|
# data={'rfid': '1', 'device': 'test%s' % str(self.device.identifier)[3:]})
|
||||||
|
# assert response.status_code == 404
|
||||||
|
|
||||||
|
|
||||||
def testAuthUserWithDevice(self):
|
def testAuthUserWithDevice(self):
|
||||||
client = RequestsClient()
|
client = RequestsClient()
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
|
import logging
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from mhackspace.rfid.models import Device, Rfid
|
from mhackspace.rfid.models import Device, Rfid
|
||||||
from mhackspace.rfid.serializers import DeviceSerializer, AuthSerializer
|
from mhackspace.rfid.serializers import DeviceSerializer, AuthSerializer
|
||||||
from django.shortcuts import get_list_or_404, get_object_or_404
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class DeviceViewSet(viewsets.ModelViewSet):
|
class DeviceViewSet(viewsets.ModelViewSet):
|
||||||
|
@ -14,20 +16,23 @@ class DeviceViewSet(viewsets.ModelViewSet):
|
||||||
|
|
||||||
# https://medium.com/django-rest-framework/django-rest-framework-viewset-when-you-don-t-have-a-model-335a0490ba6f
|
# https://medium.com/django-rest-framework/django-rest-framework-viewset-when-you-don-t-have-a-model-335a0490ba6f
|
||||||
class AuthUserWithDeviceViewSet(viewsets.ViewSet):
|
class AuthUserWithDeviceViewSet(viewsets.ViewSet):
|
||||||
http_method_names = ['post']
|
# http_method_names = ['post']
|
||||||
serializer_class = AuthSerializer
|
serializer_class = AuthSerializer
|
||||||
|
|
||||||
def list(self, request):
|
def list(self, request):
|
||||||
serializer = AuthSerializer(
|
serializer = AuthSerializer(
|
||||||
instance={'name': '1', 'rfid': '1', 'device_id': '1'})
|
instance={'name': '1', 'rfid': '1', 'device': '1'})
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
def post(self, request, format=None):
|
def post(self, request, format=None):
|
||||||
try:
|
try:
|
||||||
rfid = Rfid.objects.get(code=request.data.get('rfid'))
|
rfid = Rfid.objects.get(code=request.data.get('rfid'))
|
||||||
device = Device.objects.get(user=rfid.user, identifier=request.data.get('device_id'))
|
device = Device.objects.get(user=rfid.user, identifier=request.data.get('device'))
|
||||||
except:
|
except ObjectDoesNotExist:
|
||||||
return Response(status=status.HTTP_404_NOT_FOUND)
|
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||||
|
except:
|
||||||
|
logger.exception("An error occurred")
|
||||||
|
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
serializer = AuthSerializer(
|
serializer = AuthSerializer(
|
||||||
instance={'name': device.name, 'rfid': rfid.code, 'device_id': device.identifier})
|
instance={'name': device.name, 'rfid': rfid.code, 'device': device.identifier})
|
||||||
return Response(serializer.data, status=200)
|
return Response(serializer.data, status=200)
|
||||||
|
|
Loading…
Reference in New Issue