def test_lambda_handler_calls_auth_check_with_request(auth_check): """Test that lambda_handler calls authentication_check with request.""" request = make_request() lambda_handler(request, authentication_check=auth_check) auth_check.assert_called_with(request)
def test_lambda_handler_converts_auth_check_fail_to_403(auth_check): """Tests that lambda_handler returns 403 on auth_check failures.""" request = make_request() auth_check.side_effect = ForbiddenException("failed authentication") response = lambda_handler(request, authentication_check=auth_check) assert response["statusCode"] == 403 assert json.loads(response["body"]) == ["failed authentication"]
def test_lambda_handler_saves_complaints_to_storage(dynamodb, auth_check): """Tests that lambda_handler saves complaints.""" text = "dynamo db serializes objects" username = "******" body = {"text": text, "user_name": username} request = make_request(body) lambda_handler(request, authentication_check=auth_check) assert len(dynamodb.put_item.mock_calls) == 1 args, kwargs = dynamodb.put_item.call_args item = kwargs["Item"] assert item["uuid"]["S"] assert item["timestamp"]["N"] assert item["reporter"]["S"] == username assert item["complaint"]["S"] == text
def test_lambda_handler_quotes_the_complaint(auth_check): """Test that the lambda_handler returns the complaint as a quote.""" complaint = "about foo and bar" request_body = {"text": complaint} request = make_request(request_body) response = lambda_handler(request, authentication_check=auth_check) assert f'\n> {complaint}' in json.loads(response['body'])['text']
def test_lambda_handler_returns_a_total_number_of_complaints(dynamodb, auth_check): """Tests that lambda_handler is counting the complaints.""" count = 774 dynamodb.scan.return_value = {"Count": 774} request = make_request() response = lambda_handler(request, authentication_check=auth_check) response_text = json.loads(response['body'])['text'] assert f"\nCurtis has *{count}* recorded complaints." in response_text
def test_lambda_handler_returns_200(auth_check): """Test that lambda_handler returns a 200 status code.""" request = make_request() response = lambda_handler(request, authentication_check=auth_check) assert response['statusCode'] == 200
def test_lambda_handler_returns_a_channel_visible_response(auth_check): """Tests that lambda_handler yells curtis's complaints to the channel.""" request = make_request() response = lambda_handler(request, authentication_check=auth_check) assert json.loads(response['body'])['response_type'] == 'in_channel'