ghost-keychain/packages/extension-ui/src/messaging.spec.ts
Francis O'Brien 07605cacc1
Fix: ensure the service worker is awake before every port message (#1433)
* fix: ensure there is an open port connection before sending a port message

* chore: remove unnecessary console.log

* fix: prevent Error: Invalid url messages when setting a non http active tab

* fix test
2024-08-06 11:51:57 -04:00

47 lines
1.4 KiB
TypeScript

// Copyright 2019-2024 @polkadot/extension-ui authors & contributors
// SPDX-License-Identifier: Apache-2.0
/* global chrome */
import '@polkadot/extension-mocks/chrome';
import type * as _ from '@polkadot/dev-test/globals.d.ts';
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
import enzyme from 'enzyme';
import { wakeUpServiceWorkerWrapper } from '../../extension-base/src/utils/portUtils.js';
import { exportAccount } from './messaging.js';
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call
enzyme.configure({ adapter: new Adapter() });
describe('messaging sends message to background via extension port for', () => {
beforeEach(() => {
jest.spyOn(wakeUpServiceWorkerWrapper, 'wakeUpServiceWorker').mockImplementation(() => Promise.resolve({ status: 'awake' }));
});
afterEach(() => {
jest.restoreAllMocks();
});
it('exportAccount', async () => {
const callback = jest.fn();
chrome.runtime.connect().onMessage.addListener(callback);
try {
await exportAccount('HjoBp62cvsWDA3vtNMWxz6c9q13ReEHi9UGHK7JbZweH5g5', 'passw0rd');
} catch (error) {
console.error(error);
}
expect(callback).toHaveBeenCalledWith(
expect.objectContaining({
message: 'pri(accounts.export)',
request: { address: 'HjoBp62cvsWDA3vtNMWxz6c9q13ReEHi9UGHK7JbZweH5g5', password: 'passw0rd' }
})
);
});
});