|
1 | | -from datetime import UTC, datetime |
| 1 | +from datetime import UTC, datetime, timedelta |
| 2 | +from uuid import uuid4 |
2 | 3 |
|
3 | 4 | from django.core.cache import cache |
4 | | -from django.test import override_settings |
5 | 5 | from django.urls import reverse |
6 | 6 | from rest_framework import status |
7 | 7 | from rest_framework.test import APITestCase |
@@ -39,14 +39,6 @@ def _sample_status_payload(server_token: str) -> dict[str, object]: |
39 | 39 | } |
40 | 40 |
|
41 | 41 |
|
42 | | -@override_settings( |
43 | | - CACHES={ |
44 | | - "default": { |
45 | | - "BACKEND": "django.core.cache.backends.locmem.LocMemCache", |
46 | | - "LOCATION": "baby-serverlist-tests", |
47 | | - } |
48 | | - } |
49 | | -) |
50 | 42 | class BabyServerAPITests(APITestCase): |
51 | 43 | def setUp(self) -> None: |
52 | 44 | self.user = Account.objects.create_user( |
@@ -102,6 +94,17 @@ def test_regenerate_token_rejects_non_owner(self) -> None: |
102 | 94 |
|
103 | 95 | self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) |
104 | 96 |
|
| 97 | + def test_regenerate_token_not_found_returns_404(self) -> None: |
| 98 | + self.client.force_authenticate(self.user) |
| 99 | + |
| 100 | + response = self.client.post( |
| 101 | + reverse("baby_serverlist:regenerate-token"), |
| 102 | + {"server_id": str(uuid4())}, |
| 103 | + format="json", |
| 104 | + ) |
| 105 | + |
| 106 | + self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) |
| 107 | + |
105 | 108 | def test_post_server_status_stores_payload_in_cache(self) -> None: |
106 | 109 | baby_server = BabyServer.objects.create(owner=self.user, whitelisted=True) |
107 | 110 | payload = _sample_status_payload(baby_server.serverlist_token) |
@@ -151,6 +154,12 @@ def test_list_owned_baby_servers_live_flag(self) -> None: |
151 | 154 | response = self.client.get(reverse("baby_serverlist:list-owned")) |
152 | 155 | self.assertTrue(response.json()[0]["live"]) |
153 | 156 |
|
| 157 | + stale_time = datetime.now(tz=UTC) - timedelta(seconds=13) |
| 158 | + set_baby_server_heartbeat(str(baby_server.id), stale_time.isoformat()) |
| 159 | + |
| 160 | + response = self.client.get(reverse("baby_serverlist:list-owned")) |
| 161 | + self.assertFalse(response.json()[0]["live"]) |
| 162 | + |
154 | 163 | def test_list_baby_servers_returns_whitelisted_status(self) -> None: |
155 | 164 | baby_server = BabyServer.objects.create(owner=self.user, whitelisted=True) |
156 | 165 | status_data = _sample_status_payload(baby_server.serverlist_token) |
|
0 commit comments