From 5d0fa76a3f2d0dfd06759d69439053fd707d0c59 Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Fri, 13 Jul 2018 17:10:53 +0900 Subject: [PATCH 01/10] =?UTF-8?q?=E9=81=95=E5=8F=8D=E5=A0=B1=E5=91=8A?= =?UTF-8?q?=E7=B3=BB=E3=81=AE=E5=AE=9A=E6=95=B0=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/settings.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/common/settings.py b/src/common/settings.py index 8061204d..abd30e9e 100644 --- a/src/common/settings.py +++ b/src/common/settings.py @@ -136,7 +136,6 @@ 'xml', 'year' ] - LIKED_RETRY_COUNT = 3 ARTICLE_IMAGE_MAX_WIDTH = 3840 @@ -150,3 +149,16 @@ LIKE_NOTIFICATION_TYPE = 'like' COMMENT_NOTIFICATION_TYPE = 'comment' + +FRAUD_REASONS = [ + 'violence', + 'spam', + 'plagiarism', + 'slander', + 'illegal', + 'other' +] + +FRAUD_NEED_ORIGINAL_REASONS = ['plagiarism'] + +FRAUD_NEED_DETAIL_REASONS = ['illegal', 'other'] From 2758d53a5f96830a5788c8666605dc033dd26d37 Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Fri, 13 Jul 2018 17:16:36 +0900 Subject: [PATCH 02/10] =?UTF-8?q?=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E3=81=AB=E9=81=95=E5=8F=8D=E5=A0=B1=E5=91=8A?= =?UTF-8?q?=E3=81=AE=E8=A9=B3=E7=B4=B0=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api-template.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/api-template.yaml b/api-template.yaml index 48490daf..e74df376 100644 --- a/api-template.yaml +++ b/api-template.yaml @@ -214,6 +214,17 @@ Resources: type: string created_at: type: integer + MeArticlesFraudCreate: + type: object + properties: + reason: + type: string + plagiarism_url: + type: string + plagiarism_description: + type: string + illegal_content: + type: string paths: /articles/recent: get: @@ -813,6 +824,11 @@ Resources: description: '対象記事の指定するために使用' required: true type: 'string' + - name: 'FraudContents' + in: 'body' + description: '違反報告の内容' + schema: + $ref: '#/definitions/MeArticlesFraudCreate' responses: '200': description: '不正報告の実施成功' From e777782135444f21f8d0ee5bf56bbb9ea5cc1616 Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Fri, 13 Jul 2018 18:28:00 +0900 Subject: [PATCH 03/10] =?UTF-8?q?=E5=85=A5=E5=8A=9B=E3=81=AE=E6=A4=9C?= =?UTF-8?q?=E8=A8=BC=E3=82=92=E8=BF=BD=E5=8A=A0=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fraud/create/me_articles_fraud_create.py | 22 +++++--- .../create/test_me_articles_fraud_create.py | 53 ++++++++++++++++++- 2 files changed, 68 insertions(+), 7 deletions(-) diff --git a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py index 33e1472c..b7c05de2 100644 --- a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py +++ b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py @@ -14,20 +14,24 @@ def get_schema(self): return { 'type': 'object', 'properties': { - 'article_id': settings.parameters['article_id'] + 'article_id': settings.parameters['article_id'], + 'reason': { + 'type': 'string', + 'enum': settings.FRAUD_REASONS + } }, 'required': ['article_id'] } def validate_params(self): - # single - if self.event.get('pathParameters') is None: - raise ValidationError('pathParameters is required') - validate(self.event.get('pathParameters'), self.get_schema()) + if not self.event.get('body'): + raise ValidationError('Request parameter is required') + + validate(self.params, self.get_schema()) # relation DBUtil.validate_article_existence( self.dynamodb, - self.event['pathParameters']['article_id'], + self.params['article_id'], status='public' ) @@ -36,6 +40,7 @@ def exec_main_proc(self): article_fraud_user_table = self.dynamodb.Table(os.environ['ARTICLE_FRAUD_USER_TABLE_NAME']) self.__create_article_fraud_user(article_fraud_user_table) except ClientError as e: + print(e) if e.response['Error']['Code'] == 'ConditionalCheckFailedException': return { 'statusCode': 400, @@ -58,3 +63,8 @@ def __create_article_fraud_user(self, article_fraud_user_table): Item=article_fraud_user, ConditionExpression='attribute_not_exists(article_id)' ) + + def __validate_plagiarism(self): + # TODO: + + diff --git a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py index 75c8e00d..2f3ef80a 100644 --- a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py +++ b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py @@ -1,4 +1,5 @@ import os +import json from tests_util import TestsUtil from unittest import TestCase from me_articles_fraud_create import MeArticlesFraudCreate @@ -19,16 +20,19 @@ def setUpClass(cls): { 'article_id': 'testid000000', 'user_id': 'test01', + 'reason': 'violence', 'created_at': 1520150272 }, { 'article_id': 'testid000001', 'user_id': 'test01', + 'reason': 'violence', 'created_at': 1520150273 }, { 'article_id': 'testid000002', 'user_id': 'test02', + 'reason': 'violence', 'created_at': 1520150273 } ] @@ -52,8 +56,13 @@ def setUpClass(cls): }, { 'article_id': 'testid000002', - 'status': 'draft', + 'status': 'public', 'sort_key': 1520150272000002 + }, + { + 'article_id': 'testid000003', + 'status': 'draft', + 'sort_key': 1520150272000003 } ] TestsUtil.create_table( @@ -78,6 +87,7 @@ def test_main_ok_exist_article_id(self): 'pathParameters': { 'article_id': self.article_fraud_user_table_items[0]['article_id'] }, + 'body': json.dumps({'reason': self.article_fraud_user_table_items[0]['reason']}), 'requestContext': { 'authorizer': { 'claims': { @@ -97,12 +107,14 @@ def test_main_ok_exist_article_id(self): target_article_id = params['pathParameters']['article_id'] target_user_id = params['requestContext']['authorizer']['claims']['cognito:username'] + target_reason = json.loads(params['body'])['reason'] article_fraud_user = self.get_article_fraud_user(target_article_id, target_user_id) expected_items = { 'article_id': target_article_id, 'user_id': target_user_id, + 'reason': target_reason, 'created_at': 1520150272000003 } @@ -117,6 +129,7 @@ def test_call_validate_article_existence(self): 'pathParameters': { 'article_id': 'testid000002' }, + 'body': json.dumps({'reason': self.article_fraud_user_table_items[0]['reason']}), 'requestContext': { 'authorizer': { 'claims': { @@ -141,6 +154,7 @@ def test_main_ng_exist_user_id(self): 'pathParameters': { 'article_id': self.article_fraud_user_table_items[0]['article_id'] }, + 'body': json.dumps({'reason': self.article_fraud_user_table_items[0]['reason']}), 'requestContext': { 'authorizer': { 'claims': { @@ -177,6 +191,43 @@ def test_validation_article_id_min(self): self.assert_bad_request(params) + def test_validation_invalid_reason(self): + params = { + 'pathParameters': { + 'article_id': self.article_fraud_user_table_items[1]['article_id'] + }, + 'body': json.dumps({'reason': 'abcde'}), + 'requestContext': { + 'authorizer': { + 'claims': { + 'cognito:username': 'test03' + } + } + } + } + self.assert_bad_request(params) + + def test_validation_required_plagiarism_url_when_reason_is_plagiarism(self): + params = { + 'pathParameters': { + 'article_id': self.article_fraud_user_table_items[2]['article_id'] + }, + 'body': json.dumps( + { + 'reason': 'plagiarism', + 'plagiarism_url': '', + } + ), + 'requestContext': { + 'authorizer': { + 'claims': { + 'cognito:username': 'test03' + } + } + } + } + self.assert_bad_request(params) + def get_article_fraud_user(self, article_id, user_id): query_params = { 'KeyConditionExpression': Key('article_id').eq(article_id) & Key('user_id').eq(user_id) From 1b4a741a7bd101f23353a42590b10c13479bed0a Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Fri, 13 Jul 2018 18:35:05 +0900 Subject: [PATCH 04/10] =?UTF-8?q?print=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/articles/fraud/create/me_articles_fraud_create.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py index b7c05de2..c108742b 100644 --- a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py +++ b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py @@ -40,7 +40,6 @@ def exec_main_proc(self): article_fraud_user_table = self.dynamodb.Table(os.environ['ARTICLE_FRAUD_USER_TABLE_NAME']) self.__create_article_fraud_user(article_fraud_user_table) except ClientError as e: - print(e) if e.response['Error']['Code'] == 'ConditionalCheckFailedException': return { 'statusCode': 400, From 9bc31666ece5f450e7f172e094b52926346e2365 Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Sat, 14 Jul 2018 17:24:34 +0900 Subject: [PATCH 05/10] =?UTF-8?q?=E7=89=B9=E5=AE=9A=E3=81=AE=E7=90=86?= =?UTF-8?q?=E7=94=B1=E3=81=AE=E6=99=82=E3=81=AB=E4=BE=9D=E5=AD=98=E9=A0=85?= =?UTF-8?q?=E7=9B=AE=E3=81=AE=E5=85=A5=E5=8A=9B=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=20(jsonschema=E3=81=A7=E3=82=84=E3=82=8A=E3=81=9F?= =?UTF-8?q?=E3=81=8F=E3=81=A6=E8=89=B2=E3=80=85=E8=AA=BF=E3=81=B9=E3=81=9F?= =?UTF-8?q?=E3=81=8C=E3=80=81draft-07=E3=81=A7=E5=88=9D=E3=82=81=E3=81=A6i?= =?UTF-8?q?f=E3=81=8C=E7=99=BB=E5=A0=B4=E3=81=97=E3=81=A6=E3=81=9F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fraud/create/me_articles_fraud_create.py | 28 +++++++++++++++---- .../create/test_me_articles_fraud_create.py | 8 ------ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py index c108742b..cfaac53a 100644 --- a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py +++ b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py @@ -18,16 +18,25 @@ def get_schema(self): 'reason': { 'type': 'string', 'enum': settings.FRAUD_REASONS - } + }, + 'plagiarism_url': { + 'type': 'string', + }, + 'plagiarism_description': { + 'type': 'string' + }, + 'illegal_content': { + 'type': 'string' + }, }, 'required': ['article_id'] } def validate_params(self): - if not self.event.get('body'): + if self.event.get('pathParameters') is None: raise ValidationError('Request parameter is required') - validate(self.params, self.get_schema()) + self.__validate_reason_dependencies(self.params) # relation DBUtil.validate_article_existence( self.dynamodb, @@ -63,7 +72,16 @@ def __create_article_fraud_user(self, article_fraud_user_table): ConditionExpression='attribute_not_exists(article_id)' ) - def __validate_plagiarism(self): - # TODO: + def __validate_reason_dependencies(self, params): + reason = params.get('reason', '') + if reason in settings.FRAUD_NEED_ORIGINAL_REASONS: + self.__validate_dependencies(params, ['plagiarism_url', 'plagiarism_description']) + + if reason in settings.FRAUD_NEED_DETAIL_REASONS: + self.__validate_dependencies(params, ['illegal_content']) + def __validate_dependencies(self, params, required_items): + for item in required_items: + if not params[item]: + raise ValidationError("%s is required" % item) diff --git a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py index 2f3ef80a..e1adc2f8 100644 --- a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py +++ b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py @@ -20,19 +20,16 @@ def setUpClass(cls): { 'article_id': 'testid000000', 'user_id': 'test01', - 'reason': 'violence', 'created_at': 1520150272 }, { 'article_id': 'testid000001', 'user_id': 'test01', - 'reason': 'violence', 'created_at': 1520150273 }, { 'article_id': 'testid000002', 'user_id': 'test02', - 'reason': 'violence', 'created_at': 1520150273 } ] @@ -87,7 +84,6 @@ def test_main_ok_exist_article_id(self): 'pathParameters': { 'article_id': self.article_fraud_user_table_items[0]['article_id'] }, - 'body': json.dumps({'reason': self.article_fraud_user_table_items[0]['reason']}), 'requestContext': { 'authorizer': { 'claims': { @@ -107,14 +103,12 @@ def test_main_ok_exist_article_id(self): target_article_id = params['pathParameters']['article_id'] target_user_id = params['requestContext']['authorizer']['claims']['cognito:username'] - target_reason = json.loads(params['body'])['reason'] article_fraud_user = self.get_article_fraud_user(target_article_id, target_user_id) expected_items = { 'article_id': target_article_id, 'user_id': target_user_id, - 'reason': target_reason, 'created_at': 1520150272000003 } @@ -129,7 +123,6 @@ def test_call_validate_article_existence(self): 'pathParameters': { 'article_id': 'testid000002' }, - 'body': json.dumps({'reason': self.article_fraud_user_table_items[0]['reason']}), 'requestContext': { 'authorizer': { 'claims': { @@ -154,7 +147,6 @@ def test_main_ng_exist_user_id(self): 'pathParameters': { 'article_id': self.article_fraud_user_table_items[0]['article_id'] }, - 'body': json.dumps({'reason': self.article_fraud_user_table_items[0]['reason']}), 'requestContext': { 'authorizer': { 'claims': { From a0394dfb71b127a36405b03ad627a237a46f9cb9 Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Sat, 14 Jul 2018 18:02:56 +0900 Subject: [PATCH 06/10] =?UTF-8?q?=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0=E3=81=A4=E3=81=84=E3=81=A7?= =?UTF-8?q?=E3=81=AB=E3=83=86=E3=82=B9=E3=83=88FIX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/settings.py | 19 +++++ .../fraud/create/me_articles_fraud_create.py | 27 +++--- .../create/test_me_articles_fraud_create.py | 82 ++++++++++++++----- 3 files changed, 94 insertions(+), 34 deletions(-) diff --git a/src/common/settings.py b/src/common/settings.py index abd30e9e..ccce2741 100644 --- a/src/common/settings.py +++ b/src/common/settings.py @@ -85,6 +85,25 @@ 'minLength': 12, 'maxLength': 12 } + }, + 'fraud_user': { + 'reason': { + 'type': 'string', + }, + 'plagiarism_url': { + 'type': 'string', + 'format': 'uri', + 'maxLength': 2048 + }, + 'plagiarism_description': { + 'type': 'string', + 'maxLength': 65535 + }, + 'illegal_content': { + 'type': 'string', + 'maxLength': 65535 + }, + } } diff --git a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py index cfaac53a..653ae30b 100644 --- a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py +++ b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py @@ -15,20 +15,21 @@ def get_schema(self): 'type': 'object', 'properties': { 'article_id': settings.parameters['article_id'], - 'reason': { - 'type': 'string', - 'enum': settings.FRAUD_REASONS - }, - 'plagiarism_url': { - 'type': 'string', - }, - 'plagiarism_description': { - 'type': 'string' - }, - 'illegal_content': { - 'type': 'string' - }, + 'reason': settings.parameters['fraud_user']['reason'], + 'plagiarism_url': settings.parameters['fraud_user']['plagiarism_url'], + 'plagiarism_description': settings.parameters['fraud_user']['plagiarism_description'], + 'illegal_content': settings.parameters['fraud_user']['illegal_content'] }, + 'anyOf': [ + { + 'properties': { + 'reason': { + 'enum': settings.FRAUD_REASONS + }, + } + + } + ], 'required': ['article_id'] } diff --git a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py index e1adc2f8..acf013b2 100644 --- a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py +++ b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py @@ -84,6 +84,12 @@ def test_main_ok_exist_article_id(self): 'pathParameters': { 'article_id': self.article_fraud_user_table_items[0]['article_id'] }, + 'body': json.dumps({ + 'reason': 'plagiarism', + 'plagiarism_url': 'http://test.com', + 'plagiarism_description': 'plagiarism description', + 'illegal_content': 'illegal content' + }), 'requestContext': { 'authorizer': { 'claims': { @@ -103,12 +109,21 @@ def test_main_ok_exist_article_id(self): target_article_id = params['pathParameters']['article_id'] target_user_id = params['requestContext']['authorizer']['claims']['cognito:username'] + body = json.loads(params['body']) + target_reason = body['reason'] + target_plagiarism_url = body['plagiarism_url'] + target_plagiarism_description = body['plagiarism_description'] + target_illegal_content = body['illegal_content'] article_fraud_user = self.get_article_fraud_user(target_article_id, target_user_id) expected_items = { 'article_id': target_article_id, 'user_id': target_user_id, + 'reason': target_reason, + 'plagiarism_url': target_plagiarism_url, + 'plagiarism_description': target_plagiarism_description, + 'illegal_content': target_illegal_content, 'created_at': 1520150272000003 } @@ -185,38 +200,63 @@ def test_validation_article_id_min(self): def test_validation_invalid_reason(self): params = { - 'pathParameters': { - 'article_id': self.article_fraud_user_table_items[1]['article_id'] - }, - 'body': json.dumps({'reason': 'abcde'}), - 'requestContext': { - 'authorizer': { - 'claims': { - 'cognito:username': 'test03' - } - } - } + 'body': json.dumps({'reason': 'abcde'}) } self.assert_bad_request(params) def test_validation_required_plagiarism_url_when_reason_is_plagiarism(self): params = { - 'pathParameters': { - 'article_id': self.article_fraud_user_table_items[2]['article_id'] - }, 'body': json.dumps( { 'reason': 'plagiarism', 'plagiarism_url': '', } - ), - 'requestContext': { - 'authorizer': { - 'claims': { - 'cognito:username': 'test03' - } + ) + } + self.assert_bad_request(params) + + def test_validation_required_plagiarism_description_when_reason_is_plagiarism(self): + params = { + 'body': json.dumps( + { + 'reason': 'plagiarism', + 'plagiarism_url': 'http://test.com', + 'plagiarism_description': '', } - } + ) + } + self.assert_bad_request(params) + + def test_validation_invalid_plagiarism_url_when_reason_is_plagiarism(self): + params = { + 'body': json.dumps( + { + 'reason': 'plagiarism', + 'plagiarism_url': 'aaa' + } + ) + } + self.assert_bad_request(params) + + def test_validation_required_illegal_content_when_reason_is_illegal(self): + params = { + 'body': json.dumps( + { + 'reason': 'illegal', + 'illegal_content': '', + } + ) + } + self.assert_bad_request(params) + + def test_validation_required_illegal_content_when_reason_is_other(self): + params = { + 'body': json.dumps( + { + 'reason': 'other', + 'illegal_content': '', + } + ) } self.assert_bad_request(params) From 54b1ee42e87033039199fd41140f5e9edc6f5e7c Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Sat, 14 Jul 2018 18:05:22 +0900 Subject: [PATCH 07/10] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E5=B7=AE?= =?UTF-8?q?=E5=88=86=E3=81=8C=E3=81=A7=E3=81=A6=E3=81=9F=E3=81=AE=E3=81=A7?= =?UTF-8?q?=E6=88=BB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/articles/fraud/create/me_articles_fraud_create.py | 3 ++- .../articles/fraud/create/test_me_articles_fraud_create.py | 7 +------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py index 653ae30b..2995f30c 100644 --- a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py +++ b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py @@ -34,8 +34,9 @@ def get_schema(self): } def validate_params(self): + # single if self.event.get('pathParameters') is None: - raise ValidationError('Request parameter is required') + raise ValidationError('pathParameters is required') validate(self.params, self.get_schema()) self.__validate_reason_dependencies(self.params) # relation diff --git a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py index acf013b2..4b1d836b 100644 --- a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py +++ b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py @@ -53,13 +53,8 @@ def setUpClass(cls): }, { 'article_id': 'testid000002', - 'status': 'public', - 'sort_key': 1520150272000002 - }, - { - 'article_id': 'testid000003', 'status': 'draft', - 'sort_key': 1520150272000003 + 'sort_key': 1520150272000002 } ] TestsUtil.create_table( From fc4b9b0cb22f08fb1339ca500ada714a7cdd79e3 Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Sat, 14 Jul 2018 18:06:25 +0900 Subject: [PATCH 08/10] =?UTF-8?q?=E7=A9=BA=E3=81=AE=E8=A1=8C=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/articles/fraud/create/me_articles_fraud_create.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py index 2995f30c..63977f48 100644 --- a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py +++ b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py @@ -23,11 +23,8 @@ def get_schema(self): 'anyOf': [ { 'properties': { - 'reason': { - 'enum': settings.FRAUD_REASONS - }, + 'reason': {'enum': settings.FRAUD_REASONS} } - } ], 'required': ['article_id'] From 0c5b97183ec2c224d54354b9361657dc17cee330 Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Sat, 14 Jul 2018 18:45:43 +0900 Subject: [PATCH 09/10] =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E9=A0=85=E7=9B=AE?= =?UTF-8?q?=E3=81=8Cinsert=E3=81=95=E3=82=8C=E3=81=A6=E3=81=84=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=81=A8=E3=81=84=E3=81=86=E7=97=9B=E6=81=A8=E3=81=AE?= =?UTF-8?q?=E3=83=9F=E3=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../articles/fraud/create/me_articles_fraud_create.py | 4 ++++ .../fraud/create/test_me_articles_fraud_create.py | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py index 63977f48..478c3367 100644 --- a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py +++ b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py @@ -64,6 +64,10 @@ def __create_article_fraud_user(self, article_fraud_user_table): article_fraud_user = { 'article_id': self.event['pathParameters']['article_id'], 'user_id': self.event['requestContext']['authorizer']['claims']['cognito:username'], + 'reason': self.params.get('reason'), + 'plagiarism_url': self.params.get('plagiarism_url'), + 'plagiarism_description': self.params.get('plagiarism_description'), + 'illegal_content': self.params.get('illegal_content'), 'created_at': int(time.time()) } article_fraud_user_table.put_item( diff --git a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py index 4b1d836b..45cbddec 100644 --- a/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py +++ b/tests/handlers/me/articles/fraud/create/test_me_articles_fraud_create.py @@ -124,7 +124,15 @@ def test_main_ok_exist_article_id(self): self.assertEqual(response['statusCode'], 200) self.assertEqual(len(article_fraud_user_after), len(article_fraud_user_before) + 1) - article_fraud_user_param_names = ['article_id', 'user_id', 'created_at'] + article_fraud_user_param_names = [ + 'article_id', + 'user_id', + 'reason', + 'plagiarism_url', + 'plagiarism_description', + 'illegal_content', + 'created_at' + ] for key in article_fraud_user_param_names: self.assertEqual(expected_items[key], article_fraud_user[key]) From 4a6f116d22f1527130452d69ca4f8a34d694104e Mon Sep 17 00:00:00 2001 From: Ippei Fukamatsu Date: Sat, 14 Jul 2018 18:57:50 +0900 Subject: [PATCH 10/10] =?UTF-8?q?pycodestyle=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/articles/fraud/create/me_articles_fraud_create.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py index 478c3367..eb618a75 100644 --- a/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py +++ b/src/handlers/me/articles/fraud/create/me_articles_fraud_create.py @@ -87,4 +87,3 @@ def __validate_dependencies(self, params, required_items): for item in required_items: if not params[item]: raise ValidationError("%s is required" % item) -