This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
breakpilot-pwa/consent-sdk/test-setup.ts
Benjamin Admin 21a844cb8a fix: Restore all files lost during destructive rebase
A previous `git pull --rebase origin main` dropped 177 local commits,
losing 3400+ files across admin-v2, backend, studio-v2, website,
klausur-service, and many other services. The partial restore attempt
(660295e2) only recovered some files.

This commit restores all missing files from pre-rebase ref 98933f5e
while preserving post-rebase additions (night-scheduler, night-mode UI,
NightModeWidget dashboard integration).

Restored features include:
- AI Module Sidebar (FAB), OCR Labeling, OCR Compare
- GPU Dashboard, RAG Pipeline, Magic Help
- Klausur-Korrektur (8 files), Abitur-Archiv (5+ files)
- Companion, Zeugnisse-Crawler, Screen Flow
- Full backend, studio-v2, website, klausur-service
- All compliance SDKs, agent-core, voice-service
- CI/CD configs, documentation, scripts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 09:51:32 +01:00

138 lines
3.2 KiB
TypeScript

import { vi } from 'vitest';
// Mock localStorage
const localStorageMock = {
store: {} as Record<string, string>,
getItem: vi.fn((key: string) => localStorageMock.store[key] || null),
setItem: vi.fn((key: string, value: string) => {
localStorageMock.store[key] = value;
}),
removeItem: vi.fn((key: string) => {
delete localStorageMock.store[key];
}),
clear: vi.fn(() => {
localStorageMock.store = {};
}),
get length() {
return Object.keys(localStorageMock.store).length;
},
key: vi.fn((index: number) => Object.keys(localStorageMock.store)[index] || null),
};
vi.stubGlobal('localStorage', localStorageMock);
// Mock fetch
vi.stubGlobal(
'fetch',
vi.fn(() =>
Promise.resolve({
ok: true,
status: 200,
json: () => Promise.resolve({}),
text: () => Promise.resolve(''),
})
)
);
// Mock crypto for fingerprinting
const cryptoMock = {
subtle: {
digest: vi.fn(async (_algorithm: string, data: ArrayBuffer) => {
// Simple mock hash - returns predictable data
const view = new Uint8Array(data);
const hash = new Uint8Array(32);
for (let i = 0; i < hash.length; i++) {
hash[i] = (view[i % view.length] || 0) ^ (i * 7);
}
return hash.buffer;
}),
},
getRandomValues: vi.fn(<T extends ArrayBufferView | null>(arr: T): T => {
if (arr instanceof Uint8Array) {
for (let i = 0; i < arr.length; i++) {
arr[i] = Math.floor(Math.random() * 256);
}
}
return arr;
}),
};
vi.stubGlobal('crypto', cryptoMock);
// Mock document.cookie
let documentCookie = '';
Object.defineProperty(document, 'cookie', {
get: () => documentCookie,
set: (value: string) => {
documentCookie = value;
},
configurable: true,
});
// Mock navigator properties
Object.defineProperty(navigator, 'userAgent', {
value: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
configurable: true,
});
Object.defineProperty(navigator, 'language', {
value: 'de-DE',
configurable: true,
});
Object.defineProperty(navigator, 'platform', {
value: 'MacIntel',
configurable: true,
});
Object.defineProperty(navigator, 'doNotTrack', {
value: null,
configurable: true,
});
Object.defineProperty(navigator, 'maxTouchPoints', {
value: 0,
configurable: true,
});
// Mock screen
Object.defineProperty(window, 'screen', {
value: {
width: 1920,
height: 1080,
colorDepth: 24,
pixelDepth: 24,
availWidth: 1920,
availHeight: 1040,
orientation: { type: 'landscape-primary', angle: 0 },
},
configurable: true,
});
// Mock location
Object.defineProperty(window, 'location', {
value: {
protocol: 'https:',
hostname: 'localhost',
port: '3000',
pathname: '/',
href: 'https://localhost:3000/',
},
writable: true,
configurable: true,
});
// Reset mocks before each test
beforeEach(() => {
localStorageMock.store = {};
localStorageMock.getItem.mockClear();
localStorageMock.setItem.mockClear();
localStorageMock.removeItem.mockClear();
localStorageMock.clear.mockClear();
documentCookie = '';
vi.clearAllMocks();
});
// Export for use in tests
export { localStorageMock };