def test_create_missing_fields(event_loop, server, client, file_server): # Start a new session. response, index = yield from get_json( client, server, ) with autoclose(response): assert response.status == 200 def without(d, key): return {k: v for k, v in d.items() if k != key} # Full request that works. req = { 'app': 'foo', 'node': 'web.0', 'source_url': file_server.url('stuff.zip'), 'process_type': 'web', } # App field is required. response = yield from client.post( index['create'], data=json.dumps(without(req, 'app')), ) with autoclose(response): assert response.status == 400
def post_json(client, url, payload, headers={}): response = yield from client.post( url, data=json.dumps(payload), headers=headers ) with autoclose(response): body = yield from response.read() return response, json.loads(body.decode('utf-8'))
def test_unknown_slug(event_loop, server, client): # Try to query an unknown process. response = yield from client.get( urllib.parse.urljoin(server, '/process-status/unknown'), data=json.dumps({}), ) with autoclose(response): assert response.status == 404 # Try to delete an unknown process. response = yield from client.post( urllib.parse.urljoin(server, '/delete-process/unknown'), data=json.dumps({}), ) with autoclose(response): assert response.status == 404 # Try to attach to an unknown process. with pytest.raises(aiohttp.errors.WSServerHandshakeError): stream = yield from client.ws_connect( urllib.parse.urljoin(server, '/attach-console/unknown'), ) print(stream)
def test_create_duplicate(event_loop, server, client, file_server): # Create an application. archive_path = file_server.provide('stuff.zip') with zipfile.ZipFile(archive_path, 'w') as archive: archive.writestr('Procfile', 'web: python dots.py') archive.writestr('requirements.txt', 'Flask==0.10.1') # Start a new session. response, index = yield from get_json( client, server, ) assert response.status == 200 # Create a new process. response, process = yield from post_json( client, index['create'], { 'app': 'foo', 'node': 'web.0', 'source_url': file_server.url('stuff.zip'), 'process_type': 'web', }, ) assert response.status == 201 # Try to create the same process again. response = yield from client.post( index['create'], data=json.dumps({ 'app': 'foo', 'node': 'web.0', 'source_url': file_server.url('stuff.zip'), 'process_type': 'web', }), ) with autoclose(response): assert response.status == 409 # Now, delete the process. response, delete = yield from post_json( client, process['delete'], {}, ) assert response.status == 200
def client(event_loop): session = aiohttp.ClientSession(loop=event_loop) with autoclose(session): yield session
def get_json(client, url): response = yield from client.get(url) with autoclose(response): body = yield from response.read() return response, json.loads(body.decode('utf-8'))