def lambda_handler(event, context): login_twitter_index = LoginTwitterIndex( event=event, context=context, dynamodb=dynamodb, cognito=cognito ) return login_twitter_index.main()
def test_main_ok_with_creating_new_user(self): with patch('login_twitter_index.TwitterUtil') as twitter_mock, \ patch('login_twitter_index.UserUtil') as user_mock: twitter_mock.return_value.get_user_info.return_value = { 'user_id': 'Twitter-1234', 'email': '*****@*****.**', 'display_name': 'my_name' } user_mock.exists_user.return_value = False user_mock.create_external_provider_user.return_value = { 'AuthenticationResult': { 'AccessToken': 'aaaaa', 'IdToken': 'bbbbb', 'RefreshToken': 'ccccc' } } user_mock.add_external_provider_user_info.return_value = None params = { 'body': { 'oauth_token': 'fake_oauth_token', 'oauth_verifier': 'fake_oauth_verifier' } } params['body'] = json.dumps(params['body']) response = LoginTwitterIndex(params, {}).main() self.assertEqual(response['statusCode'], 200) self.assertEqual( json.loads(response['body']), { 'access_token': 'aaaaa', 'id_token': 'bbbbb', 'refresh_token': 'ccccc', 'last_auth_user': '******', 'has_user_id': False, 'status': 'sign_up' })
def test_main_ng_with_awsexception_and_new_user(self): with patch('login_twitter_index.TwitterUtil') as twitter_mock, \ patch('login_twitter_index.UserUtil') as user_mock: twitter_mock.return_value.get_user_info.return_value = { 'user_id': 'Twitter-1234', 'email': '*****@*****.**', 'display_name': 'my_name' } user_mock.exists_user.return_value = False user_mock.create_external_provider_user.return_value = ClientError( {'Error': { 'Code': 'xxxxxx' }}, 'operation_name') user_mock.force_non_verified_phone.return_value = None user_mock.add_user_profile.return_value = None user_mock.add_external_provider_user_info.return_value = None user_mock.has_user_id.return_value = True params = { 'body': { 'oauth_token': 'fake_oauth_token', 'oauth_verifier': 'fake_oauth_verifier' } } params['body'] = json.dumps(params['body']) response = LoginTwitterIndex(params, {}).main() self.assertEqual(response['statusCode'], 500) self.assertEqual( json.loads(response['body']), {'message': 'Internal server error: LoginTwitterIndex'})
def test_main_ng_with_twitterexception(self): with patch('login_twitter_index.TwitterUtil') as twitter_mock: twitter_mock.return_value.get_user_info.side_effect = TwitterOauthError( endpoint='http://example.com', status_code=500, message='error') params = { 'body': { 'oauth_token': 'fake_oauth_token', 'oauth_verifier': 'fake_oauth_verifier' } } params['body'] = json.dumps(params['body']) response = LoginTwitterIndex(params, {}).main() self.assertEqual(response['statusCode'], 500) self.assertEqual(json.loads(response['body']), {'message': 'Internal server error'})
def test_main_ok_with_existing_user_and_user_id(self): with patch('login_twitter_index.TwitterUtil') as twitter_mock, \ patch('login_twitter_index.UserUtil') as user_mock, \ patch('login_twitter_index.CryptoUtil') as crypto_mock: twitter_mock.return_value.get_user_info.return_value = { 'user_id': 'Twitter-12345', 'email': '*****@*****.**', 'display_name': 'my_name' } user_mock.exists_user.return_value = True user_mock.has_user_id.return_value = True crypto_mock.decrypt_password.return_value = 'password' user_mock.get_user_id.return_value = 'user_id' user_mock.external_provider_login.return_value = { 'AuthenticationResult': { 'AccessToken': 'aaaaa', 'IdToken': 'bbbbb', 'RefreshToken': 'ccccc' } } params = { 'body': { 'oauth_token': 'fake_oauth_token', 'oauth_verifier': 'fake_oauth_verifier' } } params['body'] = json.dumps(params['body']) response = LoginTwitterIndex(params, {}, dynamodb=dynamodb).main() self.assertEqual(response['statusCode'], 200) self.assertEqual( json.loads(response['body']), { 'access_token': 'aaaaa', 'id_token': 'bbbbb', 'refresh_token': 'ccccc', 'last_auth_user': '******', 'has_user_id': True, 'status': 'login' }) user_mock.external_provider_login.assert_called_with( cognito=None, password='******', provider='xxxxx', user_id='user_id', user_pool_app_id='user_pool_id', user_pool_id='user_pool_id')
def assert_bad_request(self, params): response = LoginTwitterIndex(params, {}).main() self.assertEqual(response['statusCode'], 400)