mirror of
https://github.com/bitwarden/browser.git
synced 2024-06-27 10:46:02 +02:00
6ca303f4ae
* Import libs/importer and instantiate ImportService * Create ImportApi and ImportService factories * Add libs/importer to desktop * [PM-4075] Setup Feature Flag for Browser Fileless Import * [PM-4032] Detect Lastpass Export Page and Supress Download Prompt * [PM-4032] Implementing jest tests for the FilelessImporterBackground class * [PM-4075] Setup Feature Flag for Browser Fileless Import (#6391) * [PM-4032] Implementing jest tests for the FilelessImporterBackground class * [PM-4032] Implementing jest tests for the LpFilelessImporter class * [PM-4032] Modifying variable name * [PM-4032] Modifying verbiage on jest tests to feature present tense actions and updating behavior within FilelessImporterBackground to ensure logic is triggered on expected port names only * [PM-4032] Modifying documentation present above handlePortOnConnect method * [PM-4032] Modifying documentation present above handlePortOnConnect method * [PM-4032] Applying early return if the user has a policy that removes the individual vault * [PM-4032] Reverting change made to notification bar * [PM-4032] Applying a static declaration to the filelessImporterPortNames property * [PM-4032] Modifying test for handlPortOnConnect method to follow provided feedback * [PM-4032] Applying feedback to jest test messages * [PM-4032] Reworking LpFilelessImporter to simplify testing structure and leverage public facing methods rather than testing private methods * [PM-4032] Reworking FilelessImporterBackground class * [PM-4032] Adding implementation details that facilitate triggering onMessage listeners within a chrome.runtime.connection port * [PM-4032] Implementing reworked jest tests for FilelessImporterBackground * [PM-4032] Adjusting naming of jest test * [PM-4032] Reworking test setup implementation to better fit approach discussed within overlay PR work * [PM-4032] Running prettier * [PM-4032] Removing added line break * [PM-4033] Display import prompt to user (#6407) * [PM-4033] Display Import Prompt to the User * [PM-4033] Adding jest tests for LpFilelessImporter * [PM-4033] Finalization of Jest tests * [PM-4033] Finalization of Jest tests * [PM-4033] Removing values from the whitelist capital letters file * [PM-4033] Addressing jest test coverage in LpFilelessImporter * [PM-4033] Addressing jest test coverage in LpFilelessImporter * [PM-4033] Adding documentation to the added methods within the NotificationBackground class * [PM-4033] Adding documentation to the added methods within the bar.ts content script * [PM-4033] Removing unnecessary method within lp-fileless-importer content script * [PM-4033] Removing method that is not currently used within FilelessImporterBackground * [PM-4033] Adding jest tests for the implementation * [PM-4035] Import LastPass Export Page Data (#6408) * [PM-4035] Import LastPass Export Page Data * [PM-4035] Import LastPass Export Page Data * [PM-4035] Adding jest tests for the LPFilelessImporter class * [PM-4035] Adding jest tests for the FilelessImporterBackground class * [PM-4035] Fixing references to innerHtml and updating them to reference textContent * [PM-4035] Removing eslint-disable and adding logging service to bar.ts * [PM-4035] Adding typing information to LpImporter classes * [PM-4035] Adding typing information to LpImporter classes * [PM-4035] Adding typing information for FilelessImportType * [PM-4035] Updating type reference for the filelessImportType * [PM-4032] Refactoring implementation for NotificationBackground.doNotificationQueueCheck to remove repetition * [PM-4032] Refactoring early returns within NotificationBackground * [PM-4032] Adding context for a test case for the FilelessImporterBackground * [PM-4032] Removing magic number by referencing the notification port within a test for cancelFilelessImport * [PM-4032] Adding documentation to the constructor * [PM-4032] Switching logic to use a switch statement rather than multiple if statements * [PM-4032] Removing unnecessary early return from the mutation observer implementation within `lp-fileless-importer.ts * [PM-4032] Adding return to the mutation observer when we have found the expected text node * [PM-4032] Refactoring implementation of the handleMutation method * [PM-4032] Modifying implementation for pushUnlocKVaultToQueue to send a notification message instead of adding the item to the queue * [PM-4032] Modifying implementation for how we handle mutations within the lp-fileless-importer * [PM-4032] Adding space between the iteration over added nodes within LpFilelessImporter.handleMutation * [PM-4032] Reworking logic within the doNotificationCheck method to remove for loop --------- Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
115 lines
3.2 KiB
TypeScript
115 lines
3.2 KiB
TypeScript
import { mock } from "jest-mock-extended";
|
|
|
|
function triggerTestFailure() {
|
|
expect(true).toBe("Test has failed.");
|
|
}
|
|
|
|
const scheduler = typeof setImmediate === "function" ? setImmediate : setTimeout;
|
|
function flushPromises() {
|
|
return new Promise(function (resolve) {
|
|
scheduler(resolve);
|
|
});
|
|
}
|
|
|
|
function postWindowMessage(data: any, origin = "https://localhost/", source = window) {
|
|
globalThis.dispatchEvent(new MessageEvent("message", { data, origin, source }));
|
|
}
|
|
|
|
function sendExtensionRuntimeMessage(
|
|
message: any,
|
|
sender?: chrome.runtime.MessageSender,
|
|
sendResponse?: CallableFunction,
|
|
) {
|
|
(chrome.runtime.onMessage.addListener as unknown as jest.SpyInstance).mock.calls.forEach(
|
|
(call) => {
|
|
const callback = call[0];
|
|
callback(
|
|
message || {},
|
|
sender || mock<chrome.runtime.MessageSender>(),
|
|
sendResponse || jest.fn(),
|
|
);
|
|
},
|
|
);
|
|
}
|
|
|
|
function triggerRuntimeOnConnectEvent(port: chrome.runtime.Port) {
|
|
(chrome.runtime.onConnect.addListener as unknown as jest.SpyInstance).mock.calls.forEach(
|
|
(call) => {
|
|
const callback = call[0];
|
|
callback(port);
|
|
},
|
|
);
|
|
}
|
|
|
|
function sendPortMessage(port: chrome.runtime.Port, message: any) {
|
|
(port.onMessage.addListener as unknown as jest.SpyInstance).mock.calls.forEach((call) => {
|
|
const callback = call[0];
|
|
callback(message || {}, port);
|
|
});
|
|
}
|
|
|
|
function triggerPortOnDisconnectEvent(port: chrome.runtime.Port) {
|
|
(port.onDisconnect.addListener as unknown as jest.SpyInstance).mock.calls.forEach((call) => {
|
|
const callback = call[0];
|
|
callback(port);
|
|
});
|
|
}
|
|
|
|
function triggerWindowOnFocusedChangedEvent(windowId: number) {
|
|
(chrome.windows.onFocusChanged.addListener as unknown as jest.SpyInstance).mock.calls.forEach(
|
|
(call) => {
|
|
const callback = call[0];
|
|
callback(windowId);
|
|
},
|
|
);
|
|
}
|
|
|
|
function triggerTabOnActivatedEvent(activeInfo: chrome.tabs.TabActiveInfo) {
|
|
(chrome.tabs.onActivated.addListener as unknown as jest.SpyInstance).mock.calls.forEach(
|
|
(call) => {
|
|
const callback = call[0];
|
|
callback(activeInfo);
|
|
},
|
|
);
|
|
}
|
|
|
|
function triggerTabOnReplacedEvent(addedTabId: number, removedTabId: number) {
|
|
(chrome.tabs.onReplaced.addListener as unknown as jest.SpyInstance).mock.calls.forEach((call) => {
|
|
const callback = call[0];
|
|
callback(addedTabId, removedTabId);
|
|
});
|
|
}
|
|
|
|
function triggerTabOnUpdatedEvent(
|
|
tabId: number,
|
|
changeInfo: chrome.tabs.TabChangeInfo,
|
|
tab: chrome.tabs.Tab,
|
|
) {
|
|
(chrome.tabs.onUpdated.addListener as unknown as jest.SpyInstance).mock.calls.forEach((call) => {
|
|
const callback = call[0];
|
|
callback(tabId, changeInfo, tab);
|
|
});
|
|
}
|
|
|
|
function triggerTabOnRemovedEvent(tabId: number, removeInfo: chrome.tabs.TabRemoveInfo) {
|
|
(chrome.tabs.onRemoved.addListener as unknown as jest.SpyInstance).mock.calls.forEach((call) => {
|
|
const callback = call[0];
|
|
callback(tabId, removeInfo);
|
|
});
|
|
}
|
|
|
|
export {
|
|
triggerTestFailure,
|
|
flushPromises,
|
|
postWindowMessage,
|
|
sendExtensionRuntimeMessage,
|
|
triggerRuntimeOnConnectEvent,
|
|
sendPortMessage,
|
|
triggerPortOnDisconnectEvent,
|
|
triggerWindowOnFocusedChangedEvent,
|
|
triggerTabOnActivatedEvent,
|
|
triggerTabOnReplacedEvent,
|
|
triggerTabOnUpdatedEvent,
|
|
triggerTabOnRemovedEvent,
|
|
};
|