Send new requests to requests-queue

This commit is contained in:
richard-dds 2018-06-18 11:14:27 -04:00
parent b51955771f
commit 8b1410aed5
4 changed files with 28 additions and 7 deletions

View File

@ -43,4 +43,5 @@ class ApiClient(object):
if response.headers['Content-Type'] == 'application/json':
json = loads(response.body)
setattr(response, 'json', json)
setattr(response, 'ok', 200 <= response.code < 300)
return response

View File

@ -45,13 +45,18 @@ class RequestNew(BaseHandler):
self.requests_client = requests_client
@tornado.web.authenticated
@tornado.gen.coroutine
def post(self, screen = 1):
self.check_xsrf_cookie()
screen = int(screen)
form = self.screens[ screen - 1 ]['form'](self.request.arguments)
if form.validate():
where = self.application.default_router.reverse_url('request_form', str(screen + 1))
self.redirect(where)
response = yield self.create_or_update_request(form.data)
if response.ok:
where = self.application.default_router.reverse_url('request_form', str(screen + 1))
self.redirect(where)
else:
self.set_status(response.code)
else:
self.show_form(screen, form)
@ -68,3 +73,12 @@ class RequestNew(BaseHandler):
screens = self.screens,
current = int(screen),
next_screen = int(screen) + 1 )
@tornado.gen.coroutine
def create_or_update_request(self, form_data):
request_data = {
'creator_id': self.current_user,
'request': form_data
}
response = yield self.requests_client.post('/requests', json=request_data)
return response

View File

@ -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",

View File

@ -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
@ -27,6 +29,8 @@ class MockApiClient(object):
return self._get_response('DELETE', path)
def _get_response(self, verb, path):
response = HTTPResponse(request=HTTPRequest(path, verb), code=200)
setattr(response, 'json', {})
return response
response = HTTPResponse(
request=HTTPRequest(path, verb),
code=200,
headers={'Content-Type': 'application-json'})
return self.adapt_response(response)