Bug 1530816 support RTA IDs in AddonRepository r=aswan

AddonRepository validates IDs that are returned from AMO.  We
need to handle the case where we are using rta prefix for ReturnToAMO.

Differential Revision: https://phabricator.services.mozilla.com/D21389

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Shane Caraveo 2019-02-27 17:18:46 +00:00
parent 109f80ff56
commit b9e3808121
2 changed files with 23 additions and 1 deletions

View File

@ -444,6 +444,12 @@ var AddonRepository = {
_fetchPaged(ids, pref, handler) {
let startURL = this._formatURLPref(pref, {IDS: ids.join(",")});
let results = [];
let idCheck = ids.map(id => {
if (id.startsWith("rta:")) {
return atob(id.split(":")[1]);
}
return id;
});
const fetchNextPage = (url) => {
return new Promise((resolve, reject) => {
@ -466,7 +472,7 @@ var AddonRepository = {
}
try {
let newResults = handler(response.results).filter(e => ids.includes(e.id));
let newResults = handler(response.results).filter(e => idCheck.includes(e.id));
results.push(...newResults);
} catch (err) {
reject(err);

View File

@ -118,6 +118,10 @@ var GET_TEST = {
"test2%40tests.mozilla.org%2C" +
"%7B00000000-1111-2222-3333-444444444444%7D%2C" +
"test_AddonRepository_1%40tests.mozilla.org",
successfulRTAURL: "/XPCShell/1/rta%3AdGVzdDFAdGVzdHMubW96aWxsYS5vcmc%2C" +
"test2%40tests.mozilla.org%2C" +
"%7B00000000-1111-2222-3333-444444444444%7D%2C" +
"test_AddonRepository_1%40tests.mozilla.org",
};
// Test that actual results and expected results are equal
@ -151,6 +155,9 @@ add_task(async function setup() {
// Register files used to test search success
gServer.registerFile(GET_TEST.successfulURL,
do_get_file("data/test_AddonRepository_getAddonsByIDs.json"));
// Register file for RTA test
gServer.registerFile(GET_TEST.successfulRTAURL,
do_get_file("data/test_AddonRepository_getAddonsByIDs.json"));
await promiseStartupManager();
@ -243,3 +250,12 @@ add_task(async function test_getAddonsByID_succeeds() {
check_results(result, GET_RESULTS);
});
// Tests success of AddonRepository.getAddonsByIDs() with rta ID.
add_task(async function test_getAddonsByID_rta() {
let id = `rta:${btoa(GET_TEST.successfulIDs[0])}`.slice(0, -1);
GET_TEST.successfulIDs[0] = id;
let result = await AddonRepository.getAddonsByIDs(GET_TEST.successfulIDs);
check_results(result, GET_RESULTS);
});