def test_create_note(self, sdk):
     self.note_store().createNote = mock.Mock(return_value="created")
     sdk().get_note_store = self.note_store
     api = EvernoteApi("access_token")
     with tempfile.NamedTemporaryFile(mode="r+", suffix=".txt",
                                      dir="/tmp") as f:
         f.write("Hello")
         result = api.create_note("nb_guid",
                                  text="test text",
                                  html="<p>Test</p>",
                                  files=[{
                                      "path": f.name,
                                      "name": basename(f.name)
                                  }])
     self.assertEqual(result, "created")
     self.note_store().createNote.assert_called_once()
     call_args = self.note_store().createNote.call_args[0]
     self.assertEqual(len(call_args), 1)
     self.assertIsInstance(call_args[0], Types.Note)
     self.assertEqual(call_args[0].title, '')
     self.assertEqual(call_args[0].notebookGuid, "nb_guid")
     self.assertEqual(
         call_args[0].content, '<?xml version="1.0" encoding="UTF-8"?>'
         '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">'
         '<en-note><br />'
         '<div>test text</div>'
         '<p>Test</p><br />'
         '<en-media type="text/plain" hash="d41d8cd98f00b204e9800998ecf8427e" />'
         '</en-note>')
     self.assertEqual(len(call_args[0].resources), 1)
 def test_get_default_notebook(self, sdk):
     default_notebook = Notebook(guid="default", name="Default")
     self.note_store().getDefaultNotebook = mock.Mock(return_value=default_notebook)
     sdk().get_note_store = self.note_store
     api = EvernoteApi("access_token")
     result = api.get_default_notebook()
     self.assertIsInstance(result, dict)
     self.assertEqual(result["guid"], "default")
    def test_get_note_link(self, sdk):
        User = namedtuple("User", ["id", "shardId"])
        user = User(id="user_id:123", shardId="shardId:qwe")
        sdk().get_user_store().getUser = mock.Mock(return_value=user)
        sdk().service_host = "evernote.service.host"

        api = EvernoteApi("access_token")
        result = api.get_note_link("note_guid:xxx")
        self.assertEqual(result, "https://evernote.service.host/shard/shardId:qwe/nl/user_id:123/note_guid:xxx/")
        result = api.get_note_link("note_guid:zzz", app_link=True)
        self.assertEqual(result, "evernote:///view/user_id:123/shardId:qwe/note_guid:zzz/note_guid:zzz/")
 def test_get_quota_info(self, sdk):
     User = namedtuple("User", ["accounting"])
     Accounting = namedtuple("Accounting", ["uploadLimit", "uploadLimitEnd"])
     ts = time.time()
     now = datetime.datetime.fromtimestamp(ts)
     user = User(accounting=Accounting(uploadLimit=1000,
                                       uploadLimitEnd=ts * 1000))
     sdk().get_user_store().getUser = mock.Mock(return_value=user)
     self.note_store().getSyncState().uploaded = 100
     sdk().get_note_store = self.note_store
     api = EvernoteApi("access_token")
     result = api.get_quota_info()
     self.assertEqual(result["remaining"], 900)
     self.assertEqual(result["reset_date"], now)
 def test_get_all_notebooks(self, sdk):
     notebook1 = Notebook(guid="ABC", name="Notes")
     notebook2 = Notebook(guid="XXX", name="Personal")
     self.note_store().listNotebooks = mock.Mock(return_value=[notebook1, notebook2])
     sdk().get_note_store = self.note_store
     api = EvernoteApi("access_token")
     result = api.get_all_notebooks()
     self.assertEqual(len(result), 2)
     self.assertEqual(result[0]["guid"], "ABC")
     self.assertEqual(result[1]["guid"], "XXX")
     result = api.get_all_notebooks({"name": "Personal"})
     self.assertEqual(len(result), 1)
     self.assertEqual(result[0]["guid"], "XXX")
     result = api.get_all_notebooks({"guid": "invalid"})
     self.assertEqual(len(result), 0)
    def test_update_note(self, sdk):
        content = '<?xml version="1.0" encoding="UTF-8"?>'\
            '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">'\
            '<en-note><br />'\
                '<div>test text</div>'\
                '<p>Test</p><br />'\
            '</en-note>'
        note = Types.Note(guid="123", title="One big note", content=content)
        note.notebookGuid = "notebook"

        self.note_store().getNote = mock.Mock(return_value=note)
        self.note_store().createNote = mock.Mock(return_value=Types.Note(
            guid="new"))
        self.note_store().updateNote = mock.Mock(return_value="updated")
        sdk().get_note_store = self.note_store
        api = EvernoteApi("access_token")
        api.get_note_link = mock.Mock(return_value="http://evernote.com/123")
        tmp_filename = None
        with tempfile.NamedTemporaryFile(mode="r+", suffix=".txt",
                                         dir="/tmp") as f:
            f.write("Hello")
            tmp_filename = basename(f.name)
            result = api.update_note("123",
                                     text="Merry Christmas",
                                     title="Santa Claus",
                                     html="<p>New Year</p>",
                                     files=[{
                                         "path": f.name,
                                         "name": tmp_filename
                                     }])
        self.assertEqual(result, "updated")
        self.note_store().createNote.assert_called_once()
        call_args = self.note_store().createNote.call_args[0]
        self.assertEqual(call_args[0].title, "Santa Claus")
        self.note_store().updateNote.assert_called_once()
        call_args = self.note_store().updateNote.call_args[0]
        self.assertEqual(len(call_args), 1)
        self.assertEqual(call_args[0].title, "One big note")
        self.assertEqual(call_args[0].notebookGuid, "notebook")
        self.assertEqual(
            call_args[0].content, '<?xml version="1.0" encoding="UTF-8"?>'
            '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">'
            '<en-note><br />'
            '<div>test text</div>'
            '<p>Test</p><br />'
            '<br /><div>Merry Christmas</div><p>New Year</p><br />'
            f'<a href="http://evernote.com/123">{tmp_filename}</a>'
            '</en-note>')
Exemplo n.º 7
0
 def evernote(self, bot_user: BotUser=None) -> EvernoteApi:
     if bot_user is None:
         return get_cached_object(self._evernote_apis_cache, None,
                                  constructor=lambda: evernote_api)
     access_token = bot_user.evernote.access.token
     sandbox = self.config.get("debug", True)
     return get_cached_object(self._evernote_apis_cache, bot_user.id,
         constructor=lambda: EvernoteApi(access_token, sandbox))
Exemplo n.º 8
0
 def get_evernote_api(self, user_id: int = None):
     user_id = user_id or self.ctx.get('user_id')
     if not user_id:
         raise Exception('`user_id` is not set')
     if not self._evernote_api.get(user_id):
         user_data = self.users.get(user_id)
         user = BotUser(**user_data)
         token = user.evernote.access.token
         self._evernote_api[user_id] = EvernoteApi(
             token, sandbox=self.config['debug'])
     return self._evernote_api[user_id]