Пример #1
0
    def test_main_ok_with_evaluated_key_with_no_limit(self):
        paid_articles_table = self.dynamodb.Table('PaidArticles')

        for i in range(11):
            paid_articles_table.put_item(
                Item={
                    'article_id':
                    'test_limit_number' + str(i),
                    'article_user_id':
                    'test_article_user_01',
                    'user_id':
                    'test_user_01',
                    'sort_key':
                    1520150273000000 + i,
                    'history_created_at':
                    152015028 + i,
                    'created_at':
                    152015028 + i,
                    'transaction':
                    '0x100000000000000000000000000000000000000' + str(i),
                    'status':
                    'done',
                    'price':
                    1000
                })

        article_info_table = self.dynamodb.Table('ArticleInfo')

        for i in range(11):
            article_info_table.put_item(
                Item={
                    'user_id': 'test_user_id',
                    'article_id': 'test_limit_number' + str(i),
                    'status': 'public',
                    'sort_key': 1520150273000000 + i
                })

        params = {
            'queryStringParameters': None,
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        response = MeArticlesPurchasedIndex(params, {}, self.dynamodb).main()

        self.assertEqual(response['statusCode'], 200)
        self.assertEqual(len(json.loads(response['body'])['Items']), 10)
Пример #2
0
    def test_validation_with_no_query_params(self):
        params = {
            'queryStringParameters': None,
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        response = MeArticlesPurchasedIndex(params, {}, self.dynamodb).main()

        self.assertEqual(response['statusCode'], 200)
Пример #3
0
    def test_main_with_no_recourse(self):
        params = {
            'queryStringParameters': {
                'limit': '3'
            },
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        response = MeArticlesPurchasedIndex(params, {}, self.dynamodb).main()

        self.assertEqual(response['statusCode'], 200)
        self.assertEqual(json.loads(response['body'])['Items'], [])
Пример #4
0
    def test_main_ng_with_no_article_info(self):
        params = {
            'queryStringParameters': {
                'limit': '1',
                'article_id': 'publicId0001',
                'sort_key': '1520150272000000'
            },
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        response = MeArticlesPurchasedIndex(params, {}, self.dynamodb).main()

        self.assertEqual(response['statusCode'], 500)
Пример #5
0
    def test_main_ok_with_only_sort_key(self):
        params = {
            'queryStringParameters': {
                'sort_key': '1520150272000002',
                'limit': '1'
            },
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        response = MeArticlesPurchasedIndex(params, {}, self.dynamodb).main()

        not_expected_response = [self.article_info_items[0]]

        self.assertEqual(response['statusCode'], 200)
        self.assertNotEqual(
            json.loads(response['body'])['Items'], not_expected_response)
Пример #6
0
    def test_main_ok(self):
        params = {
            'queryStringParameters': {
                'limit': '2'
            },
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        response = MeArticlesPurchasedIndex(params, {}, self.dynamodb).main()

        expected_items = [
            self.article_info_items[3], self.article_info_items[2]
        ]

        self.assertEqual(response['statusCode'], 200)
        self.assertEqual(json.loads(response['body'])['Items'], expected_items)
Пример #7
0
def lambda_handler(event, context):
    me_articles_purchased_index = MeArticlesPurchasedIndex(
        event, context, dynamodb)
    return me_articles_purchased_index.main()
Пример #8
0
    def test_main_ok_with_doing_articles(self):
        paid_articles_table = self.dynamodb.Table('PaidArticles')

        for i in range(10):
            # done, doing, doing, done, doing, doing, done, done, done, done
            # の順でステータスが検索されるようにテストデータを生成する
            status = 'done' if i % 3 == 0 or i < 4 else 'doing'

            paid_articles_table.put_item(
                Item={
                    'article_id':
                    'test_limit_' + str(i),
                    'article_user_id':
                    'test_article_user_01',
                    'user_id':
                    'test_user_id',
                    'sort_key':
                    1520150273000000 + i,
                    'history_created_at':
                    152015028 + i,
                    'created_at':
                    152015028 + i,
                    'transaction':
                    '0x100000000000000000000000000000000000000' + str(i),
                    'status':
                    status,
                    'price':
                    1000
                })

        article_info_table = self.dynamodb.Table('ArticleInfo')

        for i in range(10):
            article_info_table.put_item(
                Item={
                    'user_id': 'test_user_id',
                    'article_id': 'test_limit_' + str(i),
                    'status': 'public',
                    'sort_key': 1520150273000000 + i
                })

        params = {
            'queryStringParameters': {
                'limit': '3'
            },
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        response = MeArticlesPurchasedIndex(params, {}, self.dynamodb).main()

        self.assertEqual(response['statusCode'], 200)
        self.assertEqual(len(json.loads(response['body'])['Items']), 3)

        expected_evaluated_key = {
            'article_id': 'test_limit_3',
            'user_id': 'test_user_id',
            'sort_key': 1520150273000003
        }
        self.assertEqual(
            json.loads(response['body'])['LastEvaluatedKey'],
            expected_evaluated_key)
Пример #9
0
    def assert_bad_request(self, params):
        function = MeArticlesPurchasedIndex(params, {}, self.dynamodb)
        response = function.main()

        self.assertEqual(response['statusCode'], 400)