def test_validation_required_params(self):
        required_params = ['name', 'application_type', 'redirect_urls']

        for param in required_params:
            params = {
                'body': {
                    'name':
                    'あ' * 80,
                    'description':
                    'A' * 180,
                    'application_type':
                    'WEB',
                    'redirect_urls': [
                        'http://example.com/1', 'http://example.com/2',
                        'http://example.com/3', 'http://example.com/4',
                        'http://example.com/5'
                    ]
                },
                'requestContext': {
                    'authorizer': {
                        'claims': {
                            'cognito:username': '******',
                            'phone_number_verified': 'true',
                            'email_verified': 'true'
                        }
                    }
                }
            }

            del params['body'][param]
            params['body'] = json.dumps(params['body'])

            response = MeApplicationsCreate(params, {}).main()
            logging.fatal(response)
            self.assertEqual(response['statusCode'], 400)
    def test_validation_empty_description_ok(self):
        params = {
            'body': {
                'name': 'あ' * 80,
                'application_type': 'WEB',
                'redirect_urls': ['http://example.com']
            },
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        params['body'] = json.dumps(params['body'])

        responses.add(responses.POST,
                      settings.AUTHLETE_CLIENT_ENDPOINT + '/create',
                      json={"developer": "matsumatsu20"},
                      status=200)

        response = MeApplicationsCreate(params, {}).main()
        self.assertEqual(response['statusCode'], 200)
    def test_validation_redirect_urls_invalid_type(self):
        base_url = 'http://example.com/'
        invalid_types = [
            'hogefugapiyo',  # URLの形式がおかしいパターン
            base_url + 'A' * (201 - len(base_url))  # URLが200文字以上になるパターン
        ]

        for type in invalid_types:

            params = {
                'body': {
                    'name': 'あ' * 80,
                    'description': 'A' * 180,
                    'application_type': 'WEB',
                    'redirect_urls': [type]
                },
                'requestContext': {
                    'authorizer': {
                        'claims': {
                            'cognito:username': '******',
                            'phone_number_verified': 'true',
                            'email_verified': 'true'
                        }
                    }
                }
            }

            params['body'] = json.dumps(params['body'])

            response = MeApplicationsCreate(params, {}).main()
            logging.fatal(response)
            self.assertEqual(response['statusCode'], 400)
    def test_validation_redirect_urls_invalid_size(self):
        invalid_size = [
            'http://example.com/1', 'http://example.com/2',
            'http://example.com/3', 'http://example.com/4',
            'http://example.com/5', 'http://example.com/6'
        ]

        params = {
            'body': {
                'name': 'あ' * 80,
                'description': 'A' * 180,
                'application_type': 'WEB',
                'redirect_urls': invalid_size
            },
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        params['body'] = json.dumps(params['body'])

        response = MeApplicationsCreate(params, {}).main()
        self.assertEqual(response['statusCode'], 400)
    def test_validation_application_type_with_invalid_type(self):
        invalid_name = ['AAA', 10]

        for name in invalid_name:
            params = {
                'body': {
                    'name': 'あ' * 80,
                    'description': 'A' * 180,
                    'application_type': name,
                    'redirect_urls': ['http://example.com']
                },
                'requestContext': {
                    'authorizer': {
                        'claims': {
                            'cognito:username': '******',
                            'phone_number_verified': 'true',
                            'email_verified': 'true'
                        }
                    }
                }
            }

            params['body'] = json.dumps(params['body'])

            response = MeApplicationsCreate(params, {}).main()
            self.assertEqual(response['statusCode'], 400)
    def test_main_ok_type_native(self):
        params = {
            'body': {
                'name':
                'あ' * 80,
                'description':
                'A' * 180,
                'application_type':
                'NATIVE',
                'redirect_urls': [
                    'http://example.com/1', 'http://example.com/2',
                    'http://example.com/3', 'http://example.com/4',
                    'http://example.com/5'
                ]
            },
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        params['body'] = json.dumps(params['body'])

        responses.add(responses.POST,
                      settings.AUTHLETE_CLIENT_ENDPOINT + '/create',
                      json={"developer": "matsumatsu20"},
                      status=200)

        response = MeApplicationsCreate(params, {}).main()

        logging.fatal(response)

        self.assertEqual(response['statusCode'], 200)
        self.assertEqual(json.loads(response['body']),
                         {"developer": "matsumatsu20"})
        self.assertEqual(
            'PUBLIC',
            json.loads(responses.calls[0].request.body).get('clientType'))
        self.assertEqual(
            'NONE',
            json.loads(responses.calls[0].request.body).get('tokenAuthMethod'))
    def test_main_ng_authlete_api_response_400(self):
        params = {
            'body': {
                'name': 'あ' * 80,
                'description': 'A' * 180,
                'application_type': 'NATIVE',
                'redirect_urls': ['http://example.com/1']
            },
            'requestContext': {
                'authorizer': {
                    'claims': {
                        'cognito:username': '******',
                        'phone_number_verified': 'true',
                        'email_verified': 'true'
                    }
                }
            }
        }

        params['body'] = json.dumps(params['body'])

        # 400 が返却されるように mock 化
        responses.add(responses.POST,
                      settings.AUTHLETE_CLIENT_ENDPOINT + '/create',
                      json={
                          "resultCode": "A031208",
                          "resultMessage": "error_message"
                      },
                      status=400)

        response = MeApplicationsCreate(params, {}).main()

        logging.fatal(response)

        self.assertEqual(response['statusCode'], 400)
        self.assertEqual(json.loads(response['body']), {
            "message":
            "Invalid parameter: Please check the input parameters"
        })
Пример #8
0
def lambda_handler(event, context):
    me_applications_create = MeApplicationsCreate(event=event, context=context)
    return me_applications_create.main()