1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-29 23:58:06 +01:00
metamask-extension/app/scripts/platforms/extension.test.js
Danica Shen 26fed9e8da
fix(18194): Redirect to extension expanded view when click back to sa… (#18376)
* fix(18194): Redirect to extension expanded view when click back to safety button

* Bump phishing warning version

---------

Co-authored-by: Dan J Miller <danjm.com@gmail.com>
2023-03-31 10:00:44 +01:00

125 lines
3.8 KiB
JavaScript

import browser from 'webextension-polyfill';
import ExtensionPlatform from './extension';
const TEST_URL =
'chrome-extension://jjlgkphpeekojaidfeknpknnimdbleaf/home.html';
jest.mock('webextension-polyfill', () => {
return {
runtime: {
getManifest: jest.fn(),
getURL: jest.fn(),
},
};
});
describe('extension platform', () => {
beforeEach(() => {
// TODO: Delete this an enable 'resetMocks' in `jest.config.js` instead
jest.resetAllMocks();
});
describe('getVersion', () => {
it('should return non-prerelease version', () => {
browser.runtime.getManifest.mockReturnValue({ version: '1.2.3' });
const extensionPlatform = new ExtensionPlatform();
const version = extensionPlatform.getVersion();
expect(version).toBe('1.2.3');
});
it('should return rollback version', () => {
browser.runtime.getManifest.mockReturnValue({ version: '1.2.3.1' });
const extensionPlatform = new ExtensionPlatform();
const version = extensionPlatform.getVersion();
expect(version).toBe('1.2.3.1');
});
it('should return SemVer-formatted version for Chrome style manifest of prerelease', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3.0',
version_name: '1.2.3-beta.0',
});
const extensionPlatform = new ExtensionPlatform();
const version = extensionPlatform.getVersion();
expect(version).toBe('1.2.3-beta.0');
});
it('should return SemVer-formatted version for Firefox style manifest of prerelease', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3beta0',
});
const extensionPlatform = new ExtensionPlatform();
const version = extensionPlatform.getVersion();
expect(version).toBe('1.2.3-beta.0');
});
it('should throw error if build version is missing from Chrome style prerelease manifest', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3',
version_name: '1.2.3-beta.0',
});
const extensionPlatform = new ExtensionPlatform();
expect(() => extensionPlatform.getVersion()).toThrow(
'Version missing build number:',
);
});
it('should throw error if build version is missing from Firefox style prerelease manifest', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.3beta',
});
const extensionPlatform = new ExtensionPlatform();
expect(() => extensionPlatform.getVersion()).toThrow(
'Version contains invalid prerelease:',
);
});
it('should throw error if patch is missing from Firefox style prerelease manifest', () => {
browser.runtime.getManifest.mockReturnValue({
version: '1.2.beta0',
});
const extensionPlatform = new ExtensionPlatform();
expect(() => extensionPlatform.getVersion()).toThrow(
'Version contains invalid prerelease:',
);
});
});
describe('getExtensionURL', () => {
let extensionPlatform;
beforeEach(() => {
browser.runtime.getURL.mockReturnValue(TEST_URL);
extensionPlatform = new ExtensionPlatform();
});
it('should return URL itself if no route or queryString is provided', () => {
expect(extensionPlatform.getExtensionURL()).toStrictEqual(TEST_URL);
});
it('should return URL with route when provided', () => {
const TEST_ROUTE = 'test-route';
expect(extensionPlatform.getExtensionURL(TEST_ROUTE)).toStrictEqual(
`${TEST_URL}#${TEST_ROUTE}`,
);
});
it('should return URL with queryString when provided', () => {
const QUERY_STRING = 'name=ferret';
expect(
extensionPlatform.getExtensionURL(null, QUERY_STRING),
).toStrictEqual(`${TEST_URL}?${QUERY_STRING}`);
});
});
});