mirror of
https://github.com/daniviga/bite.git
synced 2025-04-18 22:00:11 +02:00
Add some tests
This commit is contained in:
parent
b18030f5e5
commit
68e7dc737c
@ -1,3 +1,26 @@
|
||||
from django.test import TestCase
|
||||
from django.test import TestCase, Client
|
||||
from api.models import Device, WhiteList
|
||||
|
||||
# Create your tests here.
|
||||
|
||||
class ApiTestCase(TestCase):
|
||||
c = Client()
|
||||
|
||||
def setUp(self):
|
||||
WhiteList.objects.create(serial='test1234')
|
||||
Device.objects.create(serial='test1234')
|
||||
|
||||
def test_no_whitelist(self):
|
||||
response = self.c.post('/api/device/subscribe/',
|
||||
{'serial': 'test12345'})
|
||||
self.assertEqual(response.status_code, 400)
|
||||
|
||||
def test_subscribe_post(self):
|
||||
WhiteList.objects.create(serial='test12345')
|
||||
response = self.c.post('/api/device/subscribe/',
|
||||
{'serial': 'test12345'})
|
||||
self.assertEqual(response.status_code, 201)
|
||||
|
||||
def test_subscribe_get(self):
|
||||
response = self.c.get('/api/device/list/')
|
||||
self.assertEqual(
|
||||
response.json()[0]['serial'], 'test1234')
|
||||
|
20
bite/telemetry/migrations/0008_auto_20200619_1627.py
Normal file
20
bite/telemetry/migrations/0008_auto_20200619_1627.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Generated by Django 3.0.7 on 2020-06-19 16:27
|
||||
|
||||
import django.contrib.postgres.fields.jsonb
|
||||
from django.db import migrations
|
||||
import telemetry.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('telemetry', '0007_telemetry_transport'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='telemetry',
|
||||
name='payload',
|
||||
field=django.contrib.postgres.fields.jsonb.JSONField(validators=[telemetry.models.telemetry_validation]),
|
||||
),
|
||||
]
|
@ -1,10 +1,16 @@
|
||||
from django.db import models
|
||||
from django.core.validators import MinValueValidator
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.contrib.postgres.fields import JSONField
|
||||
|
||||
from api.models import Device
|
||||
|
||||
|
||||
def telemetry_validation(value):
|
||||
if not value:
|
||||
raise ValidationError("No telemetry has been sent")
|
||||
|
||||
|
||||
class Telemetry(models.Model):
|
||||
device = models.ForeignKey(Device, on_delete=models.CASCADE)
|
||||
time = models.DateTimeField(primary_key=True, auto_now_add=True)
|
||||
@ -14,7 +20,7 @@ class Telemetry(models.Model):
|
||||
clock = models.IntegerField(
|
||||
validators=[MinValueValidator(0)],
|
||||
null=True)
|
||||
payload = JSONField()
|
||||
payload = JSONField(validators=[telemetry_validation])
|
||||
|
||||
class Meta:
|
||||
ordering = ['-time', 'device']
|
||||
|
@ -1,3 +1,53 @@
|
||||
from django.test import TestCase
|
||||
import json
|
||||
from django.test import TestCase, Client
|
||||
from api.models import Device, WhiteList
|
||||
|
||||
# Create your tests here.
|
||||
|
||||
class ApiTestCase(TestCase):
|
||||
c = Client()
|
||||
|
||||
payload = {
|
||||
'id': 'sensor.server.domain',
|
||||
'light': 434,
|
||||
'temperature': {
|
||||
'celsius': 27.02149,
|
||||
'raw': 239,
|
||||
'volts': 0.770215
|
||||
}
|
||||
}
|
||||
|
||||
telemetry = {
|
||||
'device': 'test1234',
|
||||
'clock': 1591194712,
|
||||
'payload': json.dumps(payload)
|
||||
}
|
||||
|
||||
def setUp(self):
|
||||
WhiteList.objects.create(serial='test1234')
|
||||
Device.objects.create(serial='test1234')
|
||||
|
||||
def test_no_device(self):
|
||||
fake_telemetry = dict(self.telemetry) # make a copy of the dict
|
||||
fake_telemetry['device'] = '1234test'
|
||||
response = self.c.post('/telemetry/', fake_telemetry)
|
||||
self.assertEqual(response.status_code, 400)
|
||||
|
||||
def test_empty_telemetry(self):
|
||||
fake_telemetry = dict(self.telemetry) # make a copy of the dict
|
||||
fake_telemetry['payload'] = ''
|
||||
response = self.c.post('/telemetry/', fake_telemetry)
|
||||
self.assertEqual(response.status_code, 400)
|
||||
|
||||
def test_telemetry_post(self):
|
||||
response = self.c.post('/telemetry/', self.telemetry)
|
||||
self.assertEqual(response.status_code, 201)
|
||||
|
||||
def test_telemetry_get(self):
|
||||
response = self.c.post('/telemetry/', self.telemetry)
|
||||
response = self.c.get('/telemetry/test1234/last/')
|
||||
self.assertEqual(
|
||||
response.json()['device'], 'test1234')
|
||||
self.assertEqual(
|
||||
response.json()['transport'], 'http')
|
||||
self.assertJSONEqual(
|
||||
json.dumps(response.json()['payload']), self.payload)
|
||||
|
Loading…
Reference in New Issue
Block a user