diff options
author | 2018-08-16 20:54:01 +0200 | |
---|---|---|
committer | 2018-08-16 20:54:01 +0200 | |
commit | 9766d41be89a6889b3c99af890f362e18f57d391 (patch) | |
tree | 9aa20328d1f374a49e8363e1efa3fc5cd2634900 /api | |
parent | Small documentation fixes. (diff) |
Add a `HealthcheckView`.
Diffstat (limited to 'api')
-rw-r--r-- | api/tests/test_healthcheck.py | 16 | ||||
-rw-r--r-- | api/urls.py | 2 | ||||
-rw-r--r-- | api/views.py | 27 |
3 files changed, 45 insertions, 0 deletions
diff --git a/api/tests/test_healthcheck.py b/api/tests/test_healthcheck.py new file mode 100644 index 00000000..b0fd71bf --- /dev/null +++ b/api/tests/test_healthcheck.py @@ -0,0 +1,16 @@ +from django_hosts.resolvers import reverse + +from .base import APISubdomainTestCase + + +class UnauthedHealthcheckAPITests(APISubdomainTestCase): + def setUp(self): + super().setUp() + self.client.force_authenticate(user=None) + + def test_can_access_healthcheck_view(self): + url = reverse('healthcheck', host='api') + response = self.client.get(url) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.json(), {'status': 'ok'}) diff --git a/api/urls.py b/api/urls.py index dfc739bb..b0e104cd 100644 --- a/api/urls.py +++ b/api/urls.py @@ -1,6 +1,7 @@ from django.urls import include, path from rest_framework.routers import SimpleRouter +from .views import HealthcheckView from .viewsets import SnakeNameViewSet @@ -15,4 +16,5 @@ urlpatterns = ( # from django_hosts.resolvers import reverse # snake_name_endpoint = reverse('bot:snakename-list', host='api') # `bot/` endpoints path('bot/', include((bot_router.urls, 'api'), namespace='bot')), + path('healthcheck', HealthcheckView.as_view(), name='healthcheck') ) diff --git a/api/views.py b/api/views.py new file mode 100644 index 00000000..dbc04b56 --- /dev/null +++ b/api/views.py @@ -0,0 +1,27 @@ +from rest_framework.response import Response +from rest_framework.views import APIView + + +class HealthcheckView(APIView): + """ + Provides a simple view to check that the website is alive and well. + + ## Routes + ### GET /healthcheck + Returns a simple JSON document showcasing whether the system is working: + + >>> { + ... 'status': 'ok' + ... } + + Seems to be. + + ## Authentication + Does not require any authentication nor permissions.. + """ + + authentication_classes = () + permission_classes = () + + def get(self, request, format=None): + return Response({'status': 'ok'}) |