Release version 1.0.1
This commit is contained in:
122
tests/consumerTokenSessionRetry.test.cjs
Normal file
122
tests/consumerTokenSessionRetry.test.cjs
Normal file
@@ -0,0 +1,122 @@
|
||||
const assert = require("node:assert/strict");
|
||||
const fs = require("node:fs");
|
||||
const path = require("node:path");
|
||||
const vm = require("node:vm");
|
||||
|
||||
const root = path.resolve(__dirname, "..");
|
||||
|
||||
function createResponse(body, contentType) {
|
||||
return {
|
||||
ok: true,
|
||||
status: 200,
|
||||
statusText: "OK",
|
||||
headers: {
|
||||
get(name) {
|
||||
return name.toLowerCase() === "content-type" ? contentType : null;
|
||||
},
|
||||
forEach(callback) {
|
||||
callback(contentType, "content-type");
|
||||
}
|
||||
},
|
||||
text: async () => body
|
||||
};
|
||||
}
|
||||
|
||||
function loadBackground(responses, createdTabs, removedTabs) {
|
||||
let listener;
|
||||
const source = fs.readFileSync(path.join(root, "src", "background.js"), "utf8");
|
||||
const context = {
|
||||
chrome: {
|
||||
runtime: {
|
||||
onMessage: {
|
||||
addListener(callback) {
|
||||
listener = callback;
|
||||
}
|
||||
}
|
||||
},
|
||||
tabs: {
|
||||
async create(details) {
|
||||
createdTabs.push(details);
|
||||
return { id: 27 };
|
||||
},
|
||||
async remove(tabId) {
|
||||
removedTabs.push(tabId);
|
||||
}
|
||||
}
|
||||
},
|
||||
fetch: async () => {
|
||||
const response = responses.shift();
|
||||
|
||||
if (!response) {
|
||||
throw new Error("Unexpected fetch call.");
|
||||
}
|
||||
|
||||
return response;
|
||||
},
|
||||
Date,
|
||||
Error,
|
||||
JSON,
|
||||
Map,
|
||||
Set,
|
||||
Promise,
|
||||
String,
|
||||
Array,
|
||||
Object,
|
||||
Number,
|
||||
Math,
|
||||
setTimeout,
|
||||
clearTimeout
|
||||
};
|
||||
|
||||
vm.runInNewContext(source, context);
|
||||
return listener;
|
||||
}
|
||||
|
||||
function dispatch(listener) {
|
||||
return new Promise((resolve) => {
|
||||
assert.equal(listener({ type: "opportunitiesExtension.requestConsumerTokenService" }, {
|
||||
tab: { windowId: 1 }
|
||||
}, resolve), true);
|
||||
});
|
||||
}
|
||||
|
||||
async function run() {
|
||||
const createdTabs = [];
|
||||
const removedTabs = [];
|
||||
const listener = loadBackground([
|
||||
createResponse("<html><body>Fallback</body></html>", "text/html"),
|
||||
createResponse(JSON.stringify([
|
||||
{
|
||||
tokenService: "ACCP-TS",
|
||||
uiaasHeader: { label: "Account-Ti-Authorization", value: "account-token" }
|
||||
},
|
||||
{
|
||||
tokenService: "OCICONS-TS",
|
||||
uiaasHeader: { label: "G2m-Authorization", value: "consumption-token" }
|
||||
}
|
||||
]), "application/json")
|
||||
], createdTabs, removedTabs);
|
||||
const response = await dispatch(listener);
|
||||
|
||||
assert.equal(response.ok, true);
|
||||
assert.equal(response.authorizations.accountSummary.value, "account-token");
|
||||
assert.equal(response.authorizations.accountPlans.value, "consumption-token");
|
||||
assert.equal(createdTabs.length, 1);
|
||||
assert.equal(createdTabs[0].active, false);
|
||||
assert.equal(
|
||||
createdTabs[0].url,
|
||||
"https://spa.oracle.com/oalcrm/web/api/g2m-consumer-application/ui/index.html"
|
||||
);
|
||||
assert.deepEqual(removedTabs, [27]);
|
||||
assert.equal(response.debugRequests.length, 2);
|
||||
assert.equal(response.debugRequests[0].status, "failed");
|
||||
assert.equal(response.debugRequests[0].metadata.sessionBootstrapState, "opened-inactive-tab");
|
||||
assert.equal(response.debugRequests[1].metadata.sessionBootstrapState, "closed-after-valid-json");
|
||||
|
||||
console.log("Consumer token session retry tests passed.");
|
||||
}
|
||||
|
||||
run().catch((error) => {
|
||||
console.error(error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in New Issue
Block a user