async def test_status_response_handle_client_errors(cli): async def error_task(product, version): raise ClientError('Error message') error_endpoint = status_response(error_task) request = mock.MagicMock() request.match_info = {"product": "firefox", "version": "57.0"} resp = await error_endpoint(request) assert json.loads(resp.body.decode()) == { "status": Status.ERROR.value, "message": "Error message", }
async def test_status_response_validates_devedition_version(cli): async def dummy_task(product, version): return True error_endpoint = status_response(dummy_task) request = mock.MagicMock() request.match_info = {"product": "devedition", "version": "58.0"} resp = await error_endpoint(request) assert resp.status == 404 assert json.loads(resp.body.decode()) == { "status": 404, "message": "Invalid version number for devedition: 58.0", }
async def test_status_response_handle_task_errors_with_links(cli): async def error_task(product, version): raise TaskError('Error message', url='http://www.perdu.com/') error_endpoint = status_response(error_task) request = mock.MagicMock() request.match_info = {"product": "firefox", "version": "57.0"} resp = await error_endpoint(request) assert json.loads(resp.body.decode()) == { "status": Status.ERROR.value, "message": "Error message", "link": "http://www.perdu.com/" }
async def test_status_response_validates_product_name(cli): async def dummy_task(product, version): return True error_endpoint = status_response(dummy_task) request = mock.MagicMock() request.match_info = {"product": "invalid-product", "version": "57.0"} resp = await error_endpoint(request) assert resp.status == 404 assert json.loads(resp.body.decode()) == { "status": 404, "message": "Invalid product: invalid-product not in ('firefox', 'devedition')", }