Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
    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'], [])
Exemple #6
0
    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)
Exemple #7
0
    def assert_bad_request(self, params):
        function = MeArticlesDraftsIndex(params, {}, self.dynamodb)
        response = function.main()

        self.assertEqual(response['statusCode'], 400)
Exemple #8
0
def lambda_handler(event, context):
    me_articles_drafts_index = MeArticlesDraftsIndex(event, context, dynamodb)
    return me_articles_drafts_index.main()