Close /api/health details and API docs to the public
Health: public gets only ok/error; details need X-Internal-Key. Docs/schema: admin session only. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -36,6 +36,7 @@ class _Quiet:
|
||||
|
||||
|
||||
@override_settings(CACHES=_caches('redis://127.0.0.1:1/0'))
|
||||
@override_settings(INTERNAL_SERVICE_KEY='k')
|
||||
class RedisDownTests(_Quiet, TestCase):
|
||||
"""پورتِ ۱ بسته است: هر اتصال فوراً رد میشود."""
|
||||
|
||||
@@ -86,7 +87,7 @@ class RedisDownTests(_Quiet, TestCase):
|
||||
self.assertNotEqual(response.status_code, 500)
|
||||
|
||||
def test_health_says_so(self):
|
||||
response = APIClient().get('/api/health')
|
||||
response = APIClient().get('/api/health', HTTP_X_INTERNAL_KEY='k')
|
||||
self.assertEqual(response.status_code, 503)
|
||||
self.assertIs(response.json()['checks']['cache']['ok'], False)
|
||||
|
||||
@@ -107,6 +108,7 @@ def _free_port():
|
||||
|
||||
|
||||
@unittest.skipUnless(shutil.which('redis-server'), 'redis-server نصب نیست')
|
||||
@override_settings(INTERNAL_SERVICE_KEY='k')
|
||||
class RealRedisTests(_Quiet, TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
@@ -155,7 +157,7 @@ class RealRedisTests(_Quiet, TestCase):
|
||||
|
||||
def test_throttle_is_shared_and_health_is_ok(self):
|
||||
with override_settings(CACHES=_caches(f'redis://127.0.0.1:{self.port}/1')):
|
||||
response = APIClient().get('/api/health')
|
||||
response = APIClient().get('/api/health', HTTP_X_INTERNAL_KEY='k')
|
||||
self.assertIs(response.json()['checks']['cache']['ok'], True)
|
||||
|
||||
def test_redis_dying_mid_flight_and_coming_back_without_restarting_the_app(self):
|
||||
@@ -168,9 +170,9 @@ class RealRedisTests(_Quiet, TestCase):
|
||||
with self.assertLogs('config.cache', 'ERROR'):
|
||||
self.assertEqual(c.get('k', 'miss'), 'miss')
|
||||
self.assertEqual(APIClient().get('/api/grades').status_code, 200)
|
||||
self.assertEqual(APIClient().get('/api/health').status_code, 503)
|
||||
self.assertEqual(APIClient().get('/api/health', HTTP_X_INTERNAL_KEY='k').status_code, 503)
|
||||
|
||||
self.start() # برمیگردد، بدونِ ریاستارتِ برنامه
|
||||
c.set('k2', 'after', 60)
|
||||
self.assertEqual(c.get('k2'), 'after')
|
||||
self.assertEqual(APIClient().get('/api/health').status_code, 200)
|
||||
self.assertEqual(APIClient().get('/api/health', HTTP_X_INTERNAL_KEY='k').status_code, 200)
|
||||
|
||||
Reference in New Issue
Block a user