Makelore 2.0 initial clean snapshot
This commit is contained in:
90
tests/unit/media-permissions.test.ts
Normal file
90
tests/unit/media-permissions.test.ts
Normal file
@@ -0,0 +1,90 @@
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
import {
|
||||
installMediaPermissionHandler,
|
||||
isAllowedMediaPermissionCheck,
|
||||
isAllowedMediaPermissionRequest,
|
||||
} from '@electron/main/media-permissions';
|
||||
|
||||
function createMainWindowStub() {
|
||||
return {
|
||||
isDestroyed: vi.fn(() => false),
|
||||
webContents: {
|
||||
id: 42,
|
||||
session: {
|
||||
setPermissionCheckHandler: vi.fn(),
|
||||
setPermissionRequestHandler: vi.fn(),
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
describe('media permissions', () => {
|
||||
it('allows audio media permission requests from the main window', () => {
|
||||
const mainWindow = createMainWindowStub();
|
||||
|
||||
expect(
|
||||
isAllowedMediaPermissionRequest(
|
||||
mainWindow.webContents,
|
||||
'media',
|
||||
{ mediaTypes: ['audio'] },
|
||||
mainWindow,
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('denies media permission requests from other web contents', () => {
|
||||
const mainWindow = createMainWindowStub();
|
||||
|
||||
expect(
|
||||
isAllowedMediaPermissionRequest(
|
||||
{ id: 7 },
|
||||
'media',
|
||||
{ mediaTypes: ['audio'] },
|
||||
mainWindow,
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('allows audio media permission checks from the main window', () => {
|
||||
const mainWindow = createMainWindowStub();
|
||||
|
||||
expect(
|
||||
isAllowedMediaPermissionCheck(
|
||||
mainWindow.webContents,
|
||||
'media',
|
||||
mainWindow,
|
||||
{ mediaType: 'audio', isMainFrame: true },
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('denies non-media permissions', () => {
|
||||
const mainWindow = createMainWindowStub();
|
||||
|
||||
expect(
|
||||
isAllowedMediaPermissionRequest(
|
||||
mainWindow.webContents,
|
||||
'notifications',
|
||||
{ mediaTypes: ['audio'] },
|
||||
mainWindow,
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('installs scoped media permission handlers on the main window session', () => {
|
||||
const mainWindow = createMainWindowStub();
|
||||
|
||||
installMediaPermissionHandler(mainWindow);
|
||||
|
||||
expect(mainWindow.webContents.session.setPermissionCheckHandler).toHaveBeenCalledTimes(1);
|
||||
expect(mainWindow.webContents.session.setPermissionRequestHandler).toHaveBeenCalledTimes(1);
|
||||
const checkHandler = mainWindow.webContents.session.setPermissionCheckHandler.mock.calls[0]?.[0];
|
||||
const handler = mainWindow.webContents.session.setPermissionRequestHandler.mock.calls[0]?.[0];
|
||||
const callback = vi.fn();
|
||||
|
||||
expect(checkHandler?.(mainWindow.webContents, 'media', '', { mediaType: 'audio', isMainFrame: true })).toBe(true);
|
||||
handler?.(mainWindow.webContents, 'media', callback, { mediaTypes: ['audio'] });
|
||||
|
||||
expect(callback).toHaveBeenCalledWith(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user