22 lines
791 B
TypeScript
22 lines
791 B
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
assertCadByteLength,
|
|
resolveCadUrl,
|
|
} from '../apps/viewer-2d-sample/src/cadInputPolicy';
|
|
|
|
describe('CAD input policy', () => {
|
|
it('accepts same-origin URLs and rejects cross-origin model URLs', () => {
|
|
expect(resolveCadUrl('/samples/simple.dxf', new URL('https://viewer.example/app/')).href).toBe(
|
|
'https://viewer.example/samples/simple.dxf',
|
|
);
|
|
expect(() =>
|
|
resolveCadUrl('https://attacker.example/oversized.dxf', new URL('https://viewer.example/')),
|
|
).toThrow('같은 origin');
|
|
});
|
|
|
|
it('rejects CAD input larger than 50 MiB', () => {
|
|
expect(() => assertCadByteLength(50 * 1024 * 1024)).not.toThrow();
|
|
expect(() => assertCadByteLength(50 * 1024 * 1024 + 1)).toThrow('50 MiB');
|
|
});
|
|
});
|