-
+ {% if request_id %} + + {% else %} + + {% end %} + {% module xsrf_form_html() %} {% block form %} form goes here diff --git a/tests/conftest.py b/tests/conftest.py index 5f28746d..5ad43b74 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,14 +1,14 @@ import pytest from atst.app import make_app, make_deps, make_config -from tests.mocks import MockApiClient +from tests.mocks import MockApiClient, MockRequestsClient @pytest.fixture def app(): TEST_DEPS = { 'authz_client': MockApiClient('authz'), - 'requests_client': MockApiClient('requests'), + 'requests_client': MockRequestsClient('requests'), 'authnid_client': MockApiClient('authnid'), } diff --git a/tests/handlers/test_request_new.py b/tests/handlers/test_request_new.py index ddaad13e..175206df 100644 --- a/tests/handlers/test_request_new.py +++ b/tests/handlers/test_request_new.py @@ -1,9 +1,9 @@ import re import pytest - ERROR_CLASS = 'usa-input-error-message' + @pytest.mark.gen_test def test_submit_invalid_request_form(monkeypatch, http_client, base_url): monkeypatch.setattr('atst.handlers.request_new.RequestNew.get_current_user', lambda s: True) @@ -18,11 +18,13 @@ def test_submit_invalid_request_form(monkeypatch, http_client, base_url): assert response.effective_url == base_url + '/requests/new' assert re.search(ERROR_CLASS, response.body.decode()) + @pytest.mark.gen_test def test_submit_valid_request_form(monkeypatch, http_client, base_url): monkeypatch.setattr('atst.handlers.request_new.RequestNew.get_current_user', lambda s: True) monkeypatch.setattr('atst.handlers.request_new.RequestNew.check_xsrf_cookie', lambda s: True) monkeypatch.setattr('atst.forms.request.RequestForm.validate', lambda s: True) + # this just needs to send a known invalid form value response = yield http_client.fetch( base_url + "/requests/new", @@ -30,4 +32,4 @@ def test_submit_valid_request_form(monkeypatch, http_client, base_url): headers={"Content-Type": "application/x-www-form-urlencoded"}, body="meaning=42", ) - assert response.effective_url == base_url + '/requests/new/2' + assert '/requests/new/2' in response.effective_url diff --git a/tests/mocks.py b/tests/mocks.py index e58e46d8..e378a7ed 100644 --- a/tests/mocks.py +++ b/tests/mocks.py @@ -1,8 +1,10 @@ import tornado.gen from tornado.httpclient import HTTPRequest, HTTPResponse +from atst.api_client import ApiClient -class MockApiClient(object): + +class MockApiClient(ApiClient): def __init__(self, service): self.service = service @@ -26,7 +28,35 @@ class MockApiClient(object): def delete(self, path, **kwargs): return self._get_response('DELETE', path) - def _get_response(self, verb, path): - response = HTTPResponse(request=HTTPRequest(path, verb), code=200) - setattr(response, 'json', {}) + def _get_response(self, verb, path, code=200, json=None): + response = HTTPResponse( + request=HTTPRequest(path, verb), + code=code, + headers={'Content-Type': 'application/json'}) + + setattr(response, 'ok', 200 <= code < 300) + if json: + setattr(response, 'json', json) + return response + + +class MockRequestsClient(MockApiClient): + @tornado.gen.coroutine + def get(self, path, **kwargs): + json = { + 'id': '66b8ef71-86d3-48ef-abc2-51bfa1732b6b', + 'creator': '49903ae7-da4a-49bf-a6dc-9dff5d004238', + 'body': {} + } + return self._get_response('GET', path, 200, json=json) + + @tornado.gen.coroutine + def post(self, path, **kwargs): + json = { + 'id': '66b8ef71-86d3-48ef-abc2-51bfa1732b6b', + 'creator': '49903ae7-da4a-49bf-a6dc-9dff5d004238', + 'body': {} + } + return self._get_response('POST', path, 202, json=json) +