Files
mattermostest/src/main/app/intercom.test.js
Devin Binnie 36daa3d67e [MM-54742] Force secure keyboard entry off when window loses focus and when servers switch (#2869)
* [MM-54742] Force secure keyboard entry off when window loses focus and when servers switch

* Fix for when window is not focused, added tests
2023-10-10 10:47:13 -04:00

120 lines
3.7 KiB
JavaScript

// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {app} from 'electron';
import {getLocalURLString, getLocalPreload} from 'main/utils';
import ServerManager from 'common/servers/serverManager';
import MainWindow from 'main/windows/mainWindow';
import ModalManager from 'main/views/modalManager';
import {
handleWelcomeScreenModal,
handleMainWindowIsShown,
handleToggleSecureInput,
} from './intercom';
jest.mock('electron', () => ({
app: {
setSecureKeyboardEntryEnabled: jest.fn(),
},
}));
jest.mock('app/serverViewState', () => ({}));
jest.mock('common/config', () => ({
setServers: jest.fn(),
}));
jest.mock('main/notifications', () => ({}));
jest.mock('common/servers/serverManager', () => ({
setViewIsOpen: jest.fn(),
getAllServers: jest.fn(),
hasServers: jest.fn(),
addServer: jest.fn(),
editServer: jest.fn(),
removeServer: jest.fn(),
getServer: jest.fn(),
getView: jest.fn(),
getLastActiveTabForServer: jest.fn(),
}));
jest.mock('main/utils', () => ({
getLocalPreload: jest.fn(),
getLocalURLString: jest.fn(),
}));
jest.mock('main/views/viewManager', () => ({}));
jest.mock('main/views/modalManager', () => ({
addModal: jest.fn(),
}));
jest.mock('main/windows/mainWindow', () => ({
get: jest.fn(),
}));
jest.mock('./app', () => ({}));
describe('main/app/intercom', () => {
describe('handleWelcomeScreenModal', () => {
beforeEach(() => {
getLocalURLString.mockReturnValue('/some/index.html');
getLocalPreload.mockReturnValue('/some/preload.js');
MainWindow.get.mockReturnValue({});
ServerManager.hasServers.mockReturnValue(false);
});
it('should show welcomeScreen modal', async () => {
const promise = Promise.resolve({});
ModalManager.addModal.mockReturnValue(promise);
handleWelcomeScreenModal();
expect(ModalManager.addModal).toHaveBeenCalledWith('welcomeScreen', '/some/index.html', '/some/preload.js', null, {}, true);
});
});
describe('handleMainWindowIsShown', () => {
it('MM-48079 should not show onboarding screen or server screen if GPO server is pre-configured', () => {
getLocalURLString.mockReturnValue('/some/index.html');
getLocalPreload.mockReturnValue('/some/preload.js');
MainWindow.get.mockReturnValue({
isVisible: () => true,
});
ServerManager.hasServers.mockReturnValue(true);
handleMainWindowIsShown();
expect(ModalManager.addModal).not.toHaveBeenCalled();
});
});
describe('handleToggleSecureInput', () => {
beforeEach(() => {
MainWindow.get.mockReturnValue({
isFocused: () => true,
});
});
afterEach(() => {
jest.resetAllMocks();
});
it('should not fire for OSes that are not macOS', () => {
const originalPlatform = process.platform;
Object.defineProperty(process, 'platform', {
value: 'linux',
});
handleToggleSecureInput({}, true);
Object.defineProperty(process, 'platform', {
value: originalPlatform,
});
expect(app.setSecureKeyboardEntryEnabled).not.toHaveBeenCalled();
});
it('should not fire if window is not focused', () => {
MainWindow.get.mockReturnValue({isFocused: () => false});
handleToggleSecureInput({}, true);
expect(app.setSecureKeyboardEntryEnabled).not.toHaveBeenCalled();
});
});
});