undo skipped tests, only allow API calls for admin-views, refactor viewer-page to use page.server
This commit is contained in:
23
src/routes/(token-based)/list/[vorgang]/+page.server.ts
Normal file
23
src/routes/(token-based)/list/[vorgang]/+page.server.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import { getCrimesListByToken, getVorgaenge } from '$lib/server/vorgangService.js';
|
||||||
|
import type { PageServerLoad } from './$types';
|
||||||
|
|
||||||
|
export const load: PageServerLoad = async ({ params, url }) => {
|
||||||
|
const vorgangList = getVorgaenge();
|
||||||
|
const vorgangToken = params.vorgang;
|
||||||
|
const crimesList = await getCrimesListByToken(vorgangToken);
|
||||||
|
const vorgang = vorgangList.find((v) => v.vorgangToken === vorgangToken); //vorgang sollte ein eigener Typ werden, und dann kann man es hier vernünftig typisieren
|
||||||
|
if (!vorgang || !crimesList) {
|
||||||
|
throw new Error(`Fehlgeschlagen, es wurden keine Daten zum token gefunden`);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Variabeln für NameItemEditor
|
||||||
|
const crimeNames: string[] = crimesList.map((l) => l.name);
|
||||||
|
|
||||||
|
return {
|
||||||
|
vorgang,
|
||||||
|
vorgangList,
|
||||||
|
crimesList,
|
||||||
|
url,
|
||||||
|
crimeNames
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
import { API_ROUTES } from '../../../index.js';
|
|
||||||
|
|
||||||
export async function load({fetch, params, url}){
|
|
||||||
const vorgangResponse = await fetch(API_ROUTES.LIST);
|
|
||||||
const vorgangList = await vorgangResponse.json()
|
|
||||||
const vorgangToken = params.vorgang;
|
|
||||||
const crimesListResponse = await fetch(API_ROUTES.VORGANG(vorgangToken))
|
|
||||||
const crimesList = await crimesListResponse.json();
|
|
||||||
const vorgang = vorgangList.find(v => v.vorgangToken === vorgangToken); //vorgang sollte ein eigener Typ werden, und dann kann man es hier vernünftig typisieren
|
|
||||||
if(!vorgang || !crimesList){
|
|
||||||
throw new Error(`Fehlgeschlagen, es wurden keine Daten zum token gefunden`);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Variabeln für NameItemEditor
|
|
||||||
const crimeNames: string[] = crimesList.map((l) => l.name);
|
|
||||||
|
|
||||||
|
|
||||||
return {
|
|
||||||
vorgang,
|
|
||||||
vorgangList,
|
|
||||||
crimesList,
|
|
||||||
url,
|
|
||||||
crimeNames
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
import { getVorgaenge } from '$lib/server/vorgangService';
|
import { getVorgaenge } from '$lib/server/vorgangService';
|
||||||
|
import { json } from '@sveltejs/kit';
|
||||||
|
|
||||||
export async function GET({ locals }) {
|
export async function GET({ locals }) {
|
||||||
|
if (!locals.user) {
|
||||||
|
return json({ error: 'Unauthorized' }, { status: 401 });
|
||||||
|
}
|
||||||
const vorgaenge = getVorgaenge();
|
const vorgaenge = getVorgaenge();
|
||||||
|
|
||||||
return new Response(JSON.stringify(vorgaenge), {
|
return new Response(JSON.stringify(vorgaenge), {
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
import { BUCKET, client } from '$lib/minio';
|
import { BUCKET, client } from '$lib/minio';
|
||||||
|
import { json } from '@sveltejs/kit';
|
||||||
import {
|
import {
|
||||||
deleteVorgangByToken,
|
deleteVorgangByToken,
|
||||||
getCrimesListByToken,
|
getCrimesListByToken,
|
||||||
vorgangNameExists
|
vorgangNameExists
|
||||||
} from '$lib/server/vorgangService';
|
} from '$lib/server/vorgangService';
|
||||||
|
|
||||||
export async function DELETE({ params }) {
|
export async function DELETE({ locals, params }) {
|
||||||
|
if (!locals.user) {
|
||||||
|
return json({ error: 'Unauthorized' }, { status: 401 });
|
||||||
|
}
|
||||||
const vorgangToken = params.vorgang;
|
const vorgangToken = params.vorgang;
|
||||||
|
|
||||||
const object_list = await new Promise((resolve, reject) => {
|
const object_list = await new Promise((resolve, reject) => {
|
||||||
@@ -29,7 +33,10 @@ export async function DELETE({ params }) {
|
|||||||
return new Response(null, { status: 204 });
|
return new Response(null, { status: 204 });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function HEAD({ params }) {
|
export async function HEAD({ locals, params }) {
|
||||||
|
if (!locals.user) {
|
||||||
|
return json({ error: 'Unauthorized' }, { status: 401 });
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const vorgangName = params.vorgang;
|
const vorgangName = params.vorgang;
|
||||||
const existing = vorgangNameExists(vorgangName);
|
const existing = vorgangNameExists(vorgangName);
|
||||||
@@ -44,7 +51,9 @@ export async function HEAD({ params }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function GET({ params, locals }) {
|
export async function GET({ params, locals }) {
|
||||||
|
if (!locals.user) {
|
||||||
|
return json({ error: 'Unauthorized' }, { status: 401 });
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const vorgangToken = params.vorgang;
|
const vorgangToken = params.vorgang;
|
||||||
const crimesList = await getCrimesListByToken(vorgangToken);
|
const crimesList = await getCrimesListByToken(vorgangToken);
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
import { BUCKET, client } from '$lib/minio';
|
import { BUCKET, client } from '$lib/minio';
|
||||||
import { json } from '@sveltejs/kit';
|
import { json } from '@sveltejs/kit';
|
||||||
|
|
||||||
export async function GET() {
|
export async function GET({ locals }) {
|
||||||
|
if (!locals.user) {
|
||||||
|
return json({ error: 'Unauthorized' }, { status: 401 });
|
||||||
|
}
|
||||||
const stream = client.listObjectsV2(BUCKET, '', true);
|
const stream = client.listObjectsV2(BUCKET, '', true);
|
||||||
const result = new ReadableStream({
|
const result = new ReadableStream({
|
||||||
start(controller) {
|
start(controller) {
|
||||||
@@ -24,7 +27,10 @@ export async function GET() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function DELETE({ request }: { request: Request }) {
|
export async function DELETE({ locals, request }) {
|
||||||
|
if (!locals.user) {
|
||||||
|
return json({ error: 'Unauthorized' }, { status: 401 });
|
||||||
|
}
|
||||||
const url_fragments = request.url.split('/');
|
const url_fragments = request.url.split('/');
|
||||||
const item = url_fragments.at(-1);
|
const item = url_fragments.at(-1);
|
||||||
const vorgang = url_fragments.at(-2);
|
const vorgang = url_fragments.at(-2);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ const event = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
describe('API-Endpoints: list', () => {
|
describe('API-Endpoints: list', () => {
|
||||||
test.skip('Unerlaubter Zugriff', async () => {
|
test('Unerlaubter Zugriff', async () => {
|
||||||
const event = {
|
const event = {
|
||||||
locals: {
|
locals: {
|
||||||
user: null
|
user: null
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ const MockEvent = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
describe('API-Endpoints: list/[vorgang]', () => {
|
describe('API-Endpoints: list/[vorgang]', () => {
|
||||||
test.skip('Unerlaubter Zugriff', async () => {
|
test('Unerlaubter Zugriff', async () => {
|
||||||
const event = {
|
const event = {
|
||||||
locals: {
|
locals: {
|
||||||
user: null
|
user: null
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { describe, test, expect, vi } from 'vitest';
|
import { describe, test, expect, vi } from 'vitest';
|
||||||
import { DELETE, PUT } from '$root/routes/api/list/[vorgang]/[tatort]/+server';
|
import { DELETE, PUT } from '$root/routes/api/list/[vorgang]/[tatort]/+server';
|
||||||
import { BUCKET, client } from '$lib/minio';
|
import { BUCKET, client } from '$lib/minio';
|
||||||
|
import { baseData } from '../fixtures';
|
||||||
|
|
||||||
// Mock data and methods
|
// Mock data and methods
|
||||||
const fakeVorgangToken = `c399423a-ba37-4fe1-bbdf-80e5881168ff`;
|
const fakeVorgangToken = `c399423a-ba37-4fe1-bbdf-80e5881168ff`;
|
||||||
@@ -22,7 +23,8 @@ vi.mock('$lib/minio', () => ({
|
|||||||
describe('API-Endpoints: list/[vorgang]/[tatort]', () => {
|
describe('API-Endpoints: list/[vorgang]/[tatort]', () => {
|
||||||
test('Löschen von Tatorten', async () => {
|
test('Löschen von Tatorten', async () => {
|
||||||
const request = new Request(fakeCrimeAPIURL);
|
const request = new Request(fakeCrimeAPIURL);
|
||||||
const response = await DELETE({ request });
|
const locals = { user: baseData.user }
|
||||||
|
const response = await DELETE({ locals, request });
|
||||||
|
|
||||||
expect(client.removeObject).toHaveBeenCalledWith(BUCKET, fakeCrimePath);
|
expect(client.removeObject).toHaveBeenCalledWith(BUCKET, fakeCrimePath);
|
||||||
|
|
||||||
@@ -40,11 +42,12 @@ describe('API-Endpoints: list/[vorgang]/[tatort]', () => {
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
const params = { vorgang: fakeVorgangToken };
|
const params = { vorgang: fakeVorgangToken };
|
||||||
|
const locals = { user: baseData.user }
|
||||||
|
|
||||||
// Mock Datei nicht gefunden
|
// Mock Datei nicht gefunden
|
||||||
client.statObject.mockRejectedValueOnce(new Error('NotFound'));
|
client.statObject.mockRejectedValueOnce(new Error('NotFound'));
|
||||||
|
|
||||||
const response = await PUT({ params, request });
|
const response = await PUT({ locals, params, request });
|
||||||
|
|
||||||
const fakeCrimeNewPath = `${fakeVorgangToken}/${fakeCrimeNewName}`;
|
const fakeCrimeNewPath = `${fakeVorgangToken}/${fakeCrimeNewName}`;
|
||||||
expect(client.statObject).toHaveBeenCalledWith(BUCKET, fakeCrimeNewPath);
|
expect(client.statObject).toHaveBeenCalledWith(BUCKET, fakeCrimeNewPath);
|
||||||
@@ -62,9 +65,10 @@ describe('API-Endpoints: list/[vorgang]/[tatort]', () => {
|
|||||||
newName: ''
|
newName: ''
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
const locals = { user: baseData.user }
|
||||||
const params = { vorgang: fakeVorgangToken };
|
const params = { vorgang: fakeVorgangToken };
|
||||||
|
|
||||||
const response = await PUT({ params, request });
|
const response = await PUT({ locals, params, request });
|
||||||
expect(response.status).toBe(400);
|
expect(response.status).toBe(400);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -77,11 +81,12 @@ describe('API-Endpoints: list/[vorgang]/[tatort]', () => {
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
const params = { vorgang: fakeVorgangToken };
|
const params = { vorgang: fakeVorgangToken };
|
||||||
|
const locals = { user: baseData.user }
|
||||||
|
|
||||||
// Datei existiert bereits
|
// Datei existiert bereits
|
||||||
client.statObject.mockResolvedValueOnce({});
|
client.statObject.mockResolvedValueOnce({});
|
||||||
|
|
||||||
const response = await PUT({ params, request });
|
const response = await PUT({ locals, params, request });
|
||||||
|
|
||||||
expect(response.status).toBe(400);
|
expect(response.status).toBe(400);
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import { describe, test, expect, vi } from 'vitest';
|
import { describe, test, expect, vi } from 'vitest';
|
||||||
import { GET } from '$root/routes/api/vorgang/[vorgang]/vorgangPIN/+server';
|
import { GET } from '$root/routes/api/vorgang/[vorgang]/vorgangPIN/+server';
|
||||||
import { db } from '$lib/server/dbService';
|
import { db } from '$lib/server/dbService';
|
||||||
|
import { baseData } from '../fixtures';
|
||||||
|
|
||||||
const mockEvent = {
|
const mockEvent = {
|
||||||
params: { vorgang: '123' }
|
params: { vorgang: '123' },
|
||||||
|
locals: { user: baseData.user }
|
||||||
};
|
};
|
||||||
|
|
||||||
vi.mock('$lib/server/dbService', () => ({
|
vi.mock('$lib/server/dbService', () => ({
|
||||||
|
|||||||
Reference in New Issue
Block a user