def test_main_ok_with_evaluated_key(self): params = { 'queryStringParameters': { 'limit': '3', 'article_id': 'testid000002', 'sort_key': '1520150272000002' }, 'requestContext': { 'authorizer': { 'claims': { 'cognito:username': '******', 'phone_number_verified': 'true', 'email_verified': 'true' } } } } response = MeArticlesDraftsIndex(params, {}, self.dynamodb).main() expected_items = [{ 'article_id': 'testid000001', 'user_id': 'test_user_id', 'status': 'draft', 'sort_key': 1520150272000001 }] self.assertEqual(response['statusCode'], 200) self.assertEqual(json.loads(response['body'])['Items'], expected_items)
def test_main_ok_with_evaluated_key_with_no_limit(self): table = self.dynamodb.Table('ArticleInfo') for i in range(11): table.put_item( Item={ 'user_id': 'test_user_id', 'article_id': 'test_limit_number' + str(i), 'status': 'draft', 'sort_key': 1520150273000000 + i }) params = { 'queryStringParameters': None, 'requestContext': { 'authorizer': { 'claims': { 'cognito:username': '******', 'phone_number_verified': 'true', 'email_verified': 'true' } } } } response = MeArticlesDraftsIndex(params, {}, self.dynamodb).main() self.assertEqual(response['statusCode'], 200) self.assertEqual(len(json.loads(response['body'])['Items']), 10)
def test_main_ok(self): params = { 'queryStringParameters': { 'limit': '2' }, 'requestContext': { 'authorizer': { 'claims': { 'cognito:username': '******' } } } } response = MeArticlesDraftsIndex(params, {}, self.dynamodb).main() expected_items = [{ 'article_id': 'testid000004', 'user_id': 'test_user_id', 'status': 'draft', 'sort_key': 1520150272000004 }, { 'article_id': 'testid000002', 'user_id': 'test_user_id', 'status': 'draft', 'sort_key': 1520150272000002 }] self.assertEqual(response['statusCode'], 200) self.assertEqual(json.loads(response['body'])['Items'], expected_items)
def test_validation_with_no_query_params(self): params = { 'queryStringParameters': None, 'requestContext': { 'authorizer': { 'claims': { 'cognito:username': '******' } } } } response = MeArticlesDraftsIndex(params, {}, self.dynamodb).main() self.assertEqual(response['statusCode'], 200)
def test_main_with_no_recource(self): params = { 'queryStringParameters': { 'limit': '3' }, 'requestContext': { 'authorizer': { 'claims': { 'cognito:username': '******' } } } } response = MeArticlesDraftsIndex(params, {}, self.dynamodb).main() self.assertEqual(response['statusCode'], 200) self.assertEqual(json.loads(response['body'])['Items'], [])
def test_main_ok_with_pubilc_articles(self): table = self.dynamodb.Table('ArticleInfo') for i in range(10): # draft,public,public,draft,public,public,draft,draft,draft,draft # の順でステータスが検索されるようにテストデータを生成する status = 'draft' if i % 3 == 0 or i < 4 else 'public' table.put_item( Item={ 'user_id': 'public_test_user', 'article_id': 'test_limit_' + str(i), 'status': status, 'sort_key': 1520150273000000 + i }) params = { 'queryStringParameters': { 'limit': '3' }, 'requestContext': { 'authorizer': { 'claims': { 'cognito:username': '******', 'phone_number_verified': 'true', 'email_verified': 'true' } } } } response = MeArticlesDraftsIndex(params, {}, self.dynamodb).main() self.assertEqual(response['statusCode'], 200) self.assertEqual(len(json.loads(response['body'])['Items']), 3) expected_evaluated_key = { 'user_id': 'public_test_user', 'article_id': 'test_limit_3', 'sort_key': 1520150273000003 } self.assertEqual( json.loads(response['body'])['LastEvaluatedKey'], expected_evaluated_key)
def assert_bad_request(self, params): function = MeArticlesDraftsIndex(params, {}, self.dynamodb) response = function.main() self.assertEqual(response['statusCode'], 400)
def lambda_handler(event, context): me_articles_drafts_index = MeArticlesDraftsIndex(event, context, dynamodb) return me_articles_drafts_index.main()