/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ const { Bookmark, BookmarkQuery, PlacesItem } = ChromeUtils.importESModule( "resource://services-sync/engines/bookmarks.sys.mjs" ); const { Service } = ChromeUtils.importESModule( "resource://services-sync/service.sys.mjs" ); function prepareBookmarkItem(collection, id) { let b = new Bookmark(collection, id); b.cleartext.stuff = "my payload here"; return b; } add_task(async function test_bookmark_record() { await configureIdentity(); await generateNewKeys(Service.collectionKeys); let keyBundle = Service.identity.syncKeyBundle; _("Creating a record"); let placesItem = new PlacesItem("bookmarks", "foo", "bookmark"); let bookmarkItem = prepareBookmarkItem("bookmarks", "foo"); _("Checking getTypeObject"); Assert.equal(placesItem.getTypeObject(placesItem.type), Bookmark); Assert.equal(bookmarkItem.getTypeObject(bookmarkItem.type), Bookmark); await bookmarkItem.encrypt(keyBundle); _("Ciphertext is " + bookmarkItem.ciphertext); Assert.ok(bookmarkItem.ciphertext != null); _("Decrypting the record"); let payload = await bookmarkItem.decrypt(keyBundle); Assert.equal(payload.stuff, "my payload here"); Assert.equal(bookmarkItem.getTypeObject(bookmarkItem.type), Bookmark); Assert.notEqual(payload, bookmarkItem.payload); // wrap.data.payload is the encrypted one }); add_task(async function test_query_foldername() { // Bug 1443388 let checks = [ ["foo", "foo"], ["", undefined], ]; for (let [inVal, outVal] of checks) { let bmk1 = new BookmarkQuery("bookmarks", Utils.makeGUID()); bmk1.fromSyncBookmark({ url: Services.io.newURI("https://example.com"), folder: inVal, }); Assert.strictEqual(bmk1.folderName, outVal); // other direction let bmk2 = new BookmarkQuery("bookmarks", Utils.makeGUID()); bmk2.folderName = inVal; let record = bmk2.toSyncBookmark(); Assert.strictEqual(record.folder, outVal); } });