Beispiel #1
0
def handler(event, context, **kwargs):
    """
    Handler.

    Handle the lambda function event and return a response with
    a body containing the url and the key, if it exists.

    response body: '{"url": <string>, "key": <string>}'
    """
    squrlifier = kwargs.get("squrl", Squrl(getenv("S3_BUCKET")))
    registry = kwargs.get(
        "registry",
        {
            "GET": squrlifier.get,
            "POST": squrlifier.create,
            "PUT": squrlifier.create
        },
    )
    method, body = ApiHandler.parse_event(event)

    if method not in registry.keys():
        error = ValueError(f"Unsupported method: {method}")

        return ApiHandler.get_response(error=error)

    else:
        url = unquote_plus(body["url"])
        key = registry[method](url)

        return ApiHandler.get_response(response={"url": url, "key": key})
Beispiel #2
0
def test_call_handler(event, context):
    key = "response"
    mock_handler = MagicMock(return_value=key)
    api_handler = ApiHandler(mock_handler)
    response = api_handler(event, context)

    mock_handler.assert_called_once_with(event, context)
    assert response == key
Beispiel #3
0
def test_get_response_ok(response):
    expected_response = {
        "statusCode": "200",
        "body": dumps(response),
        "headers": {
            "Content-Type": "application/json",
        },
    }
    actual_response = ApiHandler.get_response(response=response)

    assert expected_response == actual_response
Beispiel #4
0
def test_parse_event(event, method, url):
    event["httpMethod"] = method

    if method == "GET":
        event["queryStringParameters"] = dumps({"url": url})
    else:
        event["body"] = dumps({"url": url})

    method, body = ApiHandler.parse_event(event)

    assert method == method
    assert body["url"] == url
Beispiel #5
0
def test_get_response_error():
    error = ValueError("test-error")
    expected_response = {
        "statusCode": "400",
        "body": str(error),
        "headers": {
            "Content-Type": "application/json",
        },
    }
    actual_response = ApiHandler.get_response(error=error)

    assert expected_response == actual_response
Beispiel #6
0
def test_handler_post(post_event, context, squrl_create):
    api_handler = ApiHandler(handler)
    response = api_handler(post_event, context, squrl=squrl_create)

    assert response["statusCode"] == "200"
Beispiel #7
0
def test_handler_get(get_event, context, squrl_get):
    api_handler = ApiHandler(handler)
    response = api_handler(get_event, context, squrl=squrl_get)

    assert response["statusCode"] == "200"
Beispiel #8
0
def test_handler_error(unsupported_event, context):
    api_handler = ApiHandler(handler)
    response = api_handler(unsupported_event, context)

    assert response["statusCode"] == "400"