def test_non_limit_param_will_return_100pets(): for i in range(101): pets_table.put_item(Item={ 'id': i + 1, 'name': f'pet{i + 1}', }) event = { 'queryStringParameters': None, 'headers': { 'Host': '1234567890.execute-api.us-east-1.amazonaws.com', 'X-Forwarded-Proto': 'https' }, 'requestContext': { 'path': '/prod/pets' } } res = handler(event, {}) assert res['statusCode'] == HTTPStatus.OK pets = JsonUtil.loads(res['body']) assert len(pets) == 100 x_next = res['headers']['x-next'] assert x_next == '<https://1234567890.execute-api.us-east-1.amazonaws.com/prod/pets?' \ 'last_evaluated_key=100>; rel="next"'
def test_last_evaluated_key(last_evaluated_key, expect_pets_len): for i in range(100): pets_table.put_item(Item={ 'id': i + 1, 'name': f'pet{i + 1}', }) event = { 'queryStringParameters': { 'last_evaluated_key': last_evaluated_key }, 'headers': { 'Host': '1234567890.execute-api.us-east-1.amazonaws.com', 'X-Forwarded-Proto': 'https' }, 'requestContext': { 'path': '/prod/pets' } } res = handler(event, {}) assert res['statusCode'] == HTTPStatus.OK pets = JsonUtil.loads(res['body']) assert len(pets) == expect_pets_len
def test_invalid_qs_will_return_bad_request(query_string_param, expect_msg): event = { 'queryStringParameters': query_string_param, 'headers': { 'Host': '1234567890.execute-api.us-east-1.amazonaws.com', 'X-Forwarded-Proto': 'https' }, 'requestContext': { 'path': '/prod/pets' } } res = handler(event, {}) assert res['statusCode'] == HTTPStatus.BAD_REQUEST body = JsonUtil.loads(res['body']) assert body['message'] == expect_msg
def test_no_pets_will_return_empty_pet_list(): event = { 'queryStringParameters': None, 'headers': { 'Host': '1234567890.execute-api.us-east-1.amazonaws.com', 'X-Forwarded-Proto': 'https' }, 'requestContext': { 'path': '/prod/pets' } } res = handler(event, {}) assert res['statusCode'] == HTTPStatus.OK pets = JsonUtil.loads(res['body']) assert pets == []
def test_return_pets_list(): pets_table.put_item(Item={ 'id': 1, 'name': 'dog', }) pets_table.put_item(Item={ 'id': 2, 'name': 'cat', 'tags': [{ 'id': 1, 'name': 'some tag' }] }) event = { 'queryStringParameters': None, 'headers': { 'Host': '1234567890.execute-api.us-east-1.amazonaws.com', 'X-Forwarded-Proto': 'https' }, 'requestContext': { 'path': '/prod/pets' } } res = handler(event, {}) assert res['statusCode'] == HTTPStatus.OK pets = JsonUtil.loads(res['body']) assert len(pets) == 2 assert pets[0]['id'] == 1 assert pets[0]['name'] == 'dog' assert pets[1]['id'] == 2 assert pets[1]['name'] == 'cat' assert pets[1]['tags'][0]['id'] == 1 assert pets[1]['tags'][0]['name'] == 'some tag'