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))