def test_get_oauth_data_when_get_request_token_failed(self, sdk): sdk().get_request_token = mock.Mock( side_effect=Exception("some error")) with self.assertRaises(EvernoteApiError) as ctx: evernote_api.get_oauth_data(1, "session_key", self.config) self.assertIsInstance(ctx.exception.__cause__, Exception) self.assertEqual(str(ctx.exception.__cause__), "some error")
def test_get_oauth_data(self, sdk): data = evernote_api.get_oauth_data(1, "session_key", self.config) self.assertEqual(data["oauth_token"], "test_oauth_token") self.assertEqual(data["oauth_token_secret"], "test_oauth_secret") self.assertEqual(data["oauth_url"], "auth_url") sdk.assert_called_once_with(consumer_key="key", consumer_secret="secret", sandbox=False) callback_url = "http://callback.url?access=basic&key=2191f3da8abf9c31"\ "d9b64a887ffc5949ad0a35d4&session_key=session_key" sdk().get_request_token.assert_called_once_with(callback_url) request_token = { 'oauth_token': 'test_oauth_token', 'oauth_token_secret': 'test_oauth_secret' } sdk().get_authorize_url.assert_called_once_with(request_token)
def start_command(bot, message: dict): user_id = message['from']['id'] user_data = bot.users.get(user_id) if not user_data: current_time = time() telegram_user = message['from'] user_data = { 'id': user_id, 'created': current_time, 'last_request_ts': current_time, 'bot_mode': 'multiple_notes', 'telegram': { 'first_name': telegram_user['first_name'], 'last_name': telegram_user['last_name'], 'username': telegram_user['username'], 'chat_id': message['chat']['id'], }, 'evernote': { 'access': {'permission': 'basic'}, }, } bot.users.create(user_data) user = BotUser(**user_data) message_text = '''Welcome! It's bot for saving your notes to Evernote on fly. Please tap on button below to link your Evernote account with bot.''' chat_id = user.telegram.chat_id auth_button = {'text': 'Waiting for Evernote...', 'url': bot.url} inline_keyboard = json.dumps({'inline_keyboard': [[auth_button]]}) status_message = bot.api.sendMessage(chat_id, message_text, inline_keyboard) key = bot.config['evernote']['access']['basic']['key'] secret = bot.config['evernote']['access']['basic']['secret'] oauth_callback = bot.config['oauth_callback'] oauth_data = evernote.get_oauth_data(user.id, key, secret, oauth_callback, sandbox=bot.config.get('debug')) auth_button['text'] = 'Sign in with Evernote' auth_button['url'] = oauth_data['oauth_url'] inline_keyboard = json.dumps({'inline_keyboard': [[auth_button]]}) bot.api.editMessageReplyMarkup(chat_id, status_message['message_id'], inline_keyboard) user.evernote.oauth = EvernoteOauthData( token=oauth_data['oauth_token'], secret=oauth_data['oauth_token_secret'], callback_key=oauth_data['callback_key'] ) bot.users.save(user.asdict())