27 lines
1.0 KiB
Python
27 lines
1.0 KiB
Python
from django.test import TestCase
|
|
|
|
from apps.live_monitoring.models import Camera
|
|
from apps.live_monitoring.services import StreamAccessService
|
|
|
|
|
|
class StreamAccessTests(TestCase):
|
|
def setUp(self):
|
|
self.camera = Camera.objects.create(name="Cam1", stream_url="https://example.com/live.m3u8")
|
|
self.service = StreamAccessService()
|
|
|
|
def test_issue_and_verify_token(self):
|
|
token, exp = self.service.issue_token(self.camera)
|
|
payload = self.service.verify_token(token)
|
|
self.assertIsNotNone(payload)
|
|
self.assertEqual(payload["camera"], str(self.camera.id))
|
|
self.assertGreater(payload["exp"], exp - 1)
|
|
|
|
def test_tampered_token_rejected(self):
|
|
token, _ = self.service.issue_token(self.camera)
|
|
raw, _sig = token.split(".", 1)
|
|
self.assertIsNone(self.service.verify_token(raw + ".deadbeef"))
|
|
|
|
def test_expired_token_rejected(self):
|
|
token, _ = self.service.issue_token(self.camera, ttl=-1)
|
|
self.assertIsNone(self.service.verify_token(token))
|