Compare commits
6 Commits
cfe00b5424
...
9be9676f6c
| Author | SHA1 | Date | |
|---|---|---|---|
| 9be9676f6c | |||
| 52bffcd4f0 | |||
| 66a4c014ad | |||
| a85ef8eab1 | |||
| 9bb691055a | |||
| 0aa49643ca |
64
tests/APIList.test.ts
Normal file
64
tests/APIList.test.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import { describe, test, expect, vi } from 'vitest';
|
||||
import { GET } from '../src/routes/api/list/+server';
|
||||
import { getVorgaenge } from '$lib/server/vorgangService';
|
||||
|
||||
// Mocks
|
||||
vi.mock('$lib/server/vorgangService', () => ({
|
||||
getVorgaenge: vi.fn()
|
||||
}));
|
||||
|
||||
const event = {
|
||||
locals: {
|
||||
user: { id: 'admin', admin: true }
|
||||
}
|
||||
};
|
||||
|
||||
describe('API-Endpoints: list', () => {
|
||||
test('Unerlaubter Zugriff', async () => {
|
||||
const event = {
|
||||
locals: {
|
||||
user: null
|
||||
}
|
||||
};
|
||||
|
||||
const response = await GET(event);
|
||||
expect(response.status).toBe(401);
|
||||
|
||||
const json = await response.json();
|
||||
const errorObj = { error: 'Unauthorized' }
|
||||
expect(json).toEqual(errorObj);
|
||||
});
|
||||
|
||||
test('Leere Liste wenn keine Vorgänge existieren', async () => {
|
||||
vi.mocked(getVorgaenge).mockReturnValueOnce([]);
|
||||
|
||||
const response = await GET(event);
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
const json = await response.json();
|
||||
expect(json).toEqual([]);
|
||||
});
|
||||
|
||||
test('Liste mit existierenden Vorgängen', async () => {
|
||||
const testVorgaenge = [
|
||||
{
|
||||
vorgangToken: '19f1d34e-4f31-48e8-830f-c4e42c29085e',
|
||||
vorgangName: 'xyz-123',
|
||||
vorgangPIN: 'pin-123'
|
||||
},
|
||||
{
|
||||
vorgangToken: '7596e4d5-c51f-482d-a4aa-ff76434305fc',
|
||||
vorgangName: 'vorgang-2',
|
||||
vorgangPIN: 'pin-2'
|
||||
}
|
||||
];
|
||||
|
||||
vi.mocked(getVorgaenge).mockReturnValueOnce(testVorgaenge);
|
||||
|
||||
const response = await GET(event);
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
const json = await response.json();
|
||||
expect(json).toEqual(testVorgaenge);
|
||||
});
|
||||
});
|
||||
136
tests/APIListVorgang.test.ts
Normal file
136
tests/APIListVorgang.test.ts
Normal file
@@ -0,0 +1,136 @@
|
||||
import { describe, test, expect, vi } from 'vitest';
|
||||
import { DELETE, GET, HEAD } from '../src/routes/api/list/[vorgang]/+server';
|
||||
import {
|
||||
getCrimesListByToken,
|
||||
vorgangNameExists,
|
||||
deleteVorgangByToken
|
||||
} from '$lib/server/vorgangService';
|
||||
import { client } from '$lib/minio';
|
||||
import { EventEmitter } from 'events';
|
||||
|
||||
// Mocks
|
||||
vi.mock('$lib/server/vorgangService', () => ({
|
||||
getCrimesListByToken: vi.fn(),
|
||||
vorgangNameExists: vi.fn(),
|
||||
deleteVorgangByToken: vi.fn()
|
||||
}));
|
||||
|
||||
vi.mock('$lib/minio', () => ({
|
||||
client: {
|
||||
listObjects: vi.fn(),
|
||||
removeObjects: vi.fn()
|
||||
}
|
||||
}));
|
||||
|
||||
const MockEvent = {
|
||||
params: { vorgang: '123' },
|
||||
locals: {
|
||||
user: { id: 'admin', admin: true }
|
||||
}
|
||||
};
|
||||
|
||||
describe('API-Endpoints: list/[vorgang]', () => {
|
||||
test('Unerlaubter Zugriff', async () => {
|
||||
const event = {
|
||||
locals: {
|
||||
user: null
|
||||
}
|
||||
};
|
||||
|
||||
const response = await GET(event);
|
||||
expect(response.status).toBe(401);
|
||||
|
||||
const json = await response.json();
|
||||
const errorObj = { error: 'Unauthorized' };
|
||||
expect(json).toEqual(errorObj);
|
||||
});
|
||||
|
||||
test('Vorgang ohne Tatorte', async () => {
|
||||
const testCrimesList = [];
|
||||
|
||||
vi.mocked(getCrimesListByToken).mockReturnValueOnce(testCrimesList);
|
||||
|
||||
const response = await GET(MockEvent);
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
const json = await response.json();
|
||||
expect(json).toEqual(testCrimesList);
|
||||
});
|
||||
|
||||
test('Vorgang mit Tatorte', async () => {
|
||||
const testCrimesList = [
|
||||
{
|
||||
name: 'model-A',
|
||||
lastModified: '2025-08-28T09:44:12.453Z',
|
||||
etag: '558f35716f6af953f9bb5d75f6d77e6a',
|
||||
size: 8947140,
|
||||
prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc',
|
||||
show_button: true
|
||||
},
|
||||
{
|
||||
name: 'model-z',
|
||||
lastModified: '2025-08-28T10:37:20.142Z',
|
||||
etag: '43e3989c32c4682bee407baaf83b6fa0',
|
||||
size: 35788560,
|
||||
prefix: '7596e4d5-c51f-482d-a4aa-ff76434305fc',
|
||||
show_button: true
|
||||
}
|
||||
];
|
||||
|
||||
vi.mocked(getCrimesListByToken).mockReturnValueOnce(testCrimesList);
|
||||
|
||||
const response = await GET(MockEvent);
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
const json = await response.json();
|
||||
expect(json).toEqual(testCrimesList);
|
||||
});
|
||||
|
||||
test('Vorgang existiert via HEAD', async () => {
|
||||
const vorgangExists = true;
|
||||
vi.mocked(vorgangNameExists).mockReturnValueOnce(vorgangExists);
|
||||
|
||||
const response = await HEAD(MockEvent);
|
||||
expect(response.status).toBe(200);
|
||||
|
||||
const textContent = await response.text();
|
||||
expect(textContent).toEqual('');
|
||||
});
|
||||
|
||||
test('Vorgang existiert nicht via HEAD', async () => {
|
||||
const vorgangExists = false;
|
||||
vi.mocked(vorgangNameExists).mockReturnValueOnce(vorgangExists);
|
||||
const response = await HEAD(MockEvent);
|
||||
|
||||
expect(response.status).toBe(404);
|
||||
const textContent = await response.text();
|
||||
|
||||
expect(textContent).toEqual('');
|
||||
});
|
||||
|
||||
test('Lösche Vorgang und dazugehörige S3 Objekte', async () => {
|
||||
// Mock data
|
||||
const fakeStream = new EventEmitter();
|
||||
vi.mocked(client.listObjects).mockReturnValue(fakeStream);
|
||||
vi.mocked(client.removeObjects).mockResolvedValue(undefined);
|
||||
vi.mocked(deleteVorgangByToken).mockReturnValueOnce(undefined);
|
||||
|
||||
const responsePromise = DELETE(MockEvent);
|
||||
const fakeCrimeNames = [
|
||||
`${MockEvent.params.vorgang}/file1.glb`,
|
||||
`${MockEvent.params.vorgang}/file2.glb`
|
||||
];
|
||||
|
||||
// simulate data stream
|
||||
fakeStream.emit('data', { name: fakeCrimeNames[0] });
|
||||
fakeStream.emit('data', { name: fakeCrimeNames[1] });
|
||||
fakeStream.emit('end');
|
||||
|
||||
const response = await responsePromise;
|
||||
|
||||
expect(client.removeObjects).toHaveBeenCalledWith('tatort', fakeCrimeNames);
|
||||
expect(deleteVorgangByToken).toHaveBeenCalledWith(MockEvent.params.vorgang);
|
||||
|
||||
expect(response.status).toBe(204);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user