Beispiel #1
0
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",
    }
Beispiel #2
0
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",
    }
Beispiel #3
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/"
    }
Beispiel #4
0
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')",
    }