diff --git a/mhackspace/rfid/serializers.py b/mhackspace/rfid/serializers.py index f5db4ff..2e3ffb1 100644 --- a/mhackspace/rfid/serializers.py +++ b/mhackspace/rfid/serializers.py @@ -8,7 +8,6 @@ class Task(object): for field in ('id', 'name', 'owner', 'status'): setattr(self, field, kwargs.get(field, None)) - class DeviceSerializer(serializers.ModelSerializer): class Meta: model = Device diff --git a/mhackspace/rfid/tests/tests.py b/mhackspace/rfid/tests/tests.py index d9537ef..2356a54 100644 --- a/mhackspace/rfid/tests/tests.py +++ b/mhackspace/rfid/tests/tests.py @@ -7,8 +7,8 @@ from test_plus.test import TestCase from rest_framework.test import APIRequestFactory from rest_framework.test import RequestsClient -from mhackspace.rfid.models import Device -from mhackspace.user.models import User +from mhackspace.rfid.models import Device, Rfid +from mhackspace.users.models import User # http://www.django-rest-framework.org/api-guide/testing/ @@ -22,11 +22,15 @@ class MigrationTestCase(TestCase): call_command('migrate', 'rfid', stdout=out) self.assertIn("... OK\n", out.getvalue()) + class ApiTests(TestCase): def setUp(self): - Device(name='device01').save() - User(name='User01').save() - Rfid(code=1, user=1).save() + self.device = Device(name='device01') + self.device.save() + self.user = User(name='User01') + self.user.save() + self.rfid = Rfid(code=1, user=self.user) + self.rfid.save() def testAuth(self): factory = APIRequestFactory() @@ -35,12 +39,13 @@ class ApiTests(TestCase): def testSamsMadness(self): client = RequestsClient() response = client.post( - 'http://127.0.0.1:8180/api/v1/rfidAuth/?format=json', + 'http://127.0.0.1:8180/api/v1/rfidAuth/', data={'rfid':'1', 'device': '1'}) - print(response) + # print(response.json()) assert response.status_code == 200 - self.assertEquals(response.json().get('results'), [{'name': 'device01'}]) - + self.assertEquals( + response.json(), + [{'rfid': self.rfid.code, 'name': 'device01', 'device_id': self.device.identification}]) def testAuthUserWithDevice(self): client = RequestsClient() @@ -48,11 +53,9 @@ class ApiTests(TestCase): assert response.status_code == 200 self.assertEquals(response.json().get('results'), [{'name': 'device01'}]) - def testFetchDeviceList(self): client = RequestsClient() response = client.get('http://127.0.0.1:8180/api/v1/rfid/?format=json') assert response.status_code == 200 self.assertEquals(response.json().get('results'), [{'name': 'device01'}]) - diff --git a/mhackspace/rfid/views.py b/mhackspace/rfid/views.py index e1648af..8918452 100644 --- a/mhackspace/rfid/views.py +++ b/mhackspace/rfid/views.py @@ -1,6 +1,7 @@ from rest_framework.response import Response from rest_framework.views import APIView from rest_framework import viewsets +from rest_framework import status from mhackspace.rfid.models import Device, Rfid from mhackspace.rfid.serializers import DeviceSerializer, AuthSerializer from django.shortcuts import get_list_or_404, get_object_or_404 @@ -11,22 +12,22 @@ class DeviceViewSet(viewsets.ModelViewSet): serializer_class = DeviceSerializer -#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): - # http_method_names = ['get', 'post', 'head'] + http_method_names = ['post'] serializer_class = AuthSerializer def list(self, request): - serializer = AuthSerializer(instance={'name': '1','rfid': '1', 'device_id': '1'}) + serializer = AuthSerializer( + instance={'name': '1', 'rfid': '1', 'device_id': '1'}) return Response(serializer.data) def post(self, request, format=None): - rfid = Rfid.objects.get(code=request.GET.get('rfid_id')) - - print(rfid.user.device__set(device=request.GET.get('rfid_id'))) - # = get_object_or_404(Disease, pk=disease_id) - - - # Device(rfid, device) - serializer = AuthSerializer(instance={'name': '1', 'rfid': '1', 'device_id': '1'}) - return Response(serializer.data) + try: + rfid = Rfid.objects.get(code=request.data.get('rfid')) + device = Device.objects.get(user=rfid.user, identifier=request.data.get('device_id')) + except: + return Response(status=status.HTTP_404_NOT_FOUND) + serializer = AuthSerializer( + instance={'name': device.name, 'rfid': rfid.code, 'device_id': device.identifier}) + return Response(serializer.data, status=200)