diff --git a/callbacks/tests/test_views.py b/callbacks/tests/test_views.py index bf373c8..544d472 100644 --- a/callbacks/tests/test_views.py +++ b/callbacks/tests/test_views.py @@ -64,3 +64,13 @@ def test_callback_view_filters_excluded_headers(settings, monkeypatch): assert "headers" in data assert "Excluded" not in data["headers"].keys() assert "Not-Excluded" in data["headers"].keys() + + +@pytest.mark.parametrize("status", [200, 201, 400, 401, 403, 404, 500]) +def test_callback_view_non_default_response(status, monkeypatch): + monkeypatch.setattr("callbacks.views.async_to_sync", lambda x: lambda x, y: None) + callback = uuid.uuid4() + res = Client().get( + reverse("callback-submit-response", kwargs={"uuid": callback, "status": status}) + ) + assert res.status_code == status diff --git a/callbacks/views.py b/callbacks/views.py index 1d7c17a..7028ab4 100644 --- a/callbacks/views.py +++ b/callbacks/views.py @@ -42,7 +42,8 @@ class CallbackView(View): async_to_sync(channel_layer.group_send)( kwargs["uuid"], {"type": "new_request", "data": self._request_data(request)} ) - return HttpResponse() + response_status = kwargs.get("status", 200) + return HttpResponse(status=response_status) def _request_data(self, request): body = request.body.decode("utf-8") diff --git a/webhook_logger/urls.py b/webhook_logger/urls.py index cc04a1e..b31f268 100644 --- a/webhook_logger/urls.py +++ b/webhook_logger/urls.py @@ -19,5 +19,6 @@ from callbacks.views import HomeView, CheckView, CallbackView urlpatterns = [ path("check", CheckView.as_view(), name="callback-check"), path("", CallbackView.as_view(), name="callback-submit"), + path("/", CallbackView.as_view(), name="callback-submit-response"), path("", HomeView.as_view(), name="callback-home"), ]