test Login angepasst, return fail wenn formaDaten leer
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import { dev } from '$app/environment';
|
import { dev } from '$app/environment';
|
||||||
import { loginUser, logoutUser } from '$lib/server/authService';
|
import { loginUser, logoutUser } from '$lib/server/authService';
|
||||||
import { redirect } from '@sveltejs/kit';
|
import { fail, redirect } from '@sveltejs/kit';
|
||||||
import { ROUTE_NAMES } from '../index.js';
|
import { ROUTE_NAMES } from '../index.js';
|
||||||
|
|
||||||
export const actions = {
|
export const actions = {
|
||||||
@@ -8,9 +8,13 @@ export const actions = {
|
|||||||
logout: (event) => logoutUser(event),
|
logout: (event) => logoutUser(event),
|
||||||
getVorgangByToken: async ({ request, cookies }) => {
|
getVorgangByToken: async ({ request, cookies }) => {
|
||||||
const data = await request.formData();
|
const data = await request.formData();
|
||||||
const vorgangToken = data.get('vorgang-token') as string;
|
const vorgangToken = data.get('vorgang-token');
|
||||||
const vorgangPIN = data.get('vorgang-pin') as string;
|
const vorgangPIN = data.get('vorgang-pin') as string;
|
||||||
|
|
||||||
|
if (!vorgangToken || !vorgangPIN) {
|
||||||
|
return fail(400, { message: 'Token oder PIN fehlen' });
|
||||||
|
}
|
||||||
|
|
||||||
const COOKIE_NAME = `token-${vorgangToken}`;
|
const COOKIE_NAME = `token-${vorgangToken}`;
|
||||||
cookies.set(COOKIE_NAME, vorgangPIN, {
|
cookies.set(COOKIE_NAME, vorgangPIN, {
|
||||||
path: '/',
|
path: '/',
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
import { describe, it, expect, vi } from 'vitest';
|
import { describe, it, expect, vi } from 'vitest';
|
||||||
import { actions } from '$root/routes/anmeldung/+page.server';
|
// import { actions } from '$root/routes/anmeldung/+page.server';
|
||||||
import { load } from '$root/routes/(token-based)/+layout.server'
|
// import { load } from '$root/routes/(token-based)/+layout.server'
|
||||||
|
import { actions } from '../../src/routes/anmeldung/+page.server';
|
||||||
|
import { load } from '../../src/routes/(token-based)/+layout.server';
|
||||||
|
|
||||||
import { baseData } from '../fixtures';
|
import { baseData } from '../fixtures';
|
||||||
import { ROUTE_NAMES } from '../../src/routes';
|
import { ROUTE_NAMES } from '../../src/routes';
|
||||||
import { dev } from '$app/environment';
|
import { dev } from '$app/environment';
|
||||||
import { vorgangExists, vorgangPINValidation } from '$lib/server/vorgangService';
|
import { vorgangExists, vorgangPINValidation } from '$lib/server/vorgangService';
|
||||||
import { Redirect } from '@sveltejs/kit';
|
import type { Redirect } from '@sveltejs/kit';
|
||||||
|
|
||||||
vi.mock('$lib/server/vorgangService', () => ({
|
vi.mock('$lib/server/vorgangService', () => ({
|
||||||
vorgangExists: vi.fn(),
|
vorgangExists: vi.fn(),
|
||||||
vorgangPINValidation: vi.fn(),
|
vorgangPINValidation: vi.fn()
|
||||||
}));
|
}));
|
||||||
|
|
||||||
describe('Vorgang Anzeige via Token', () => {
|
describe('Vorgang Anzeige via Token', () => {
|
||||||
@@ -47,7 +49,7 @@ describe('Vorgang Anzeige via Token', () => {
|
|||||||
expect(thrownRedirect?.location).toBe(ROUTE_NAMES.VORGANG(vorgObj.vorgangToken));
|
expect(thrownRedirect?.location).toBe(ROUTE_NAMES.VORGANG(vorgObj.vorgangToken));
|
||||||
|
|
||||||
// Cookie wurde gesetzt
|
// Cookie wurde gesetzt
|
||||||
const COOKIE_NAME = `token-${vorgObj.vorgangToken}`
|
const COOKIE_NAME = `token-${vorgObj.vorgangToken}`;
|
||||||
expect(cookiesSet).toHaveBeenCalledWith(COOKIE_NAME, vorgObj.vorgangPIN, {
|
expect(cookiesSet).toHaveBeenCalledWith(COOKIE_NAME, vorgObj.vorgangPIN, {
|
||||||
path: '/',
|
path: '/',
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
@@ -58,47 +60,42 @@ describe('Vorgang Anzeige via Token', () => {
|
|||||||
|
|
||||||
it('Schlägt fehl wenn keine Daten übergeben werden', async () => {
|
it('Schlägt fehl wenn keine Daten übergeben werden', async () => {
|
||||||
const formData = new FormData(); // no data
|
const formData = new FormData(); // no data
|
||||||
|
|
||||||
const mockRequest = {
|
const mockRequest = {
|
||||||
formData: vi.fn().mockResolvedValue(formData)
|
formData: vi.fn().mockResolvedValue(formData)
|
||||||
};
|
};
|
||||||
|
|
||||||
const cookiesSet = vi.fn();
|
const cookiesSet = vi.fn();
|
||||||
|
|
||||||
const event = {
|
const event = {
|
||||||
request: mockRequest,
|
request: mockRequest,
|
||||||
cookies: {
|
cookies: {
|
||||||
set: cookiesSet
|
set: cookiesSet
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const result = await actions.getVorgangByToken(event);
|
const result = await actions.getVorgangByToken(event);
|
||||||
|
expect(result.status).toBe(400);
|
||||||
expect(result).toBeUndefined();
|
expect(result.data.message).toMatch(/fehlen|ungültig/i);
|
||||||
|
|
||||||
// Cookie wird nicht gesetzt
|
// Cookie wird nicht gesetzt
|
||||||
expect(cookiesSet).not.toHaveBeenCalled();
|
expect(cookiesSet).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
it.todo('Überprüfe was passiert, wenn Eingabe falsch, bzw. nicht im System passend gefunden');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Teste Guard', () => {
|
describe('Teste Guard', () => {
|
||||||
it('Lese Cookie aus', async () => {
|
it('Lese Cookie aus', async () => {
|
||||||
const vorgObj = baseData.vorgang;
|
const vorgObj = baseData.vorgang;
|
||||||
|
|
||||||
const COOKIE_NAME = `token-${vorgObj.vorgangToken}`
|
const COOKIE_NAME = `token-${vorgObj.vorgangToken}`;
|
||||||
const cookiesGet = vi.fn().mockImplementation((key: string) => {
|
const cookiesGet = vi.fn().mockImplementation((key: string) => {
|
||||||
if (key === COOKIE_NAME) return vorgObj.vorgangPIN;
|
if (key === COOKIE_NAME) return vorgObj.vorgangPIN;
|
||||||
return undefined;
|
return undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// mocked objects
|
// mocked objects
|
||||||
const event = {
|
const event = {
|
||||||
cookies: {
|
cookies: {
|
||||||
get: cookiesGet
|
get: cookiesGet
|
||||||
},
|
},
|
||||||
locals: {},
|
locals: {},
|
||||||
params: {vorgang: vorgObj.vorgangToken}
|
params: { vorgang: vorgObj.vorgangToken }
|
||||||
};
|
};
|
||||||
vi.mocked(vorgangExists).mockReturnValueOnce(true);
|
vi.mocked(vorgangExists).mockReturnValueOnce(true);
|
||||||
vi.mocked(vorgangPINValidation).mockReturnValueOnce(true);
|
vi.mocked(vorgangPINValidation).mockReturnValueOnce(true);
|
||||||
@@ -111,20 +108,19 @@ describe('Teste Guard', () => {
|
|||||||
it('Kein Cookie gesetzt', async () => {
|
it('Kein Cookie gesetzt', async () => {
|
||||||
const vorgObj = baseData.vorgang;
|
const vorgObj = baseData.vorgang;
|
||||||
|
|
||||||
const COOKIE_NAME = `token-${vorgObj.vorgangToken}`
|
const COOKIE_NAME = `token-${vorgObj.vorgangToken}`;
|
||||||
const cookiesGet = vi.fn().mockImplementation((key: string) => {
|
const cookiesGet = vi.fn().mockImplementation((key: string) => {
|
||||||
if (key === COOKIE_NAME) return vorgObj.vorgangPIN;
|
if (key === COOKIE_NAME) return vorgObj.vorgangPIN;
|
||||||
return undefined;
|
return undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// mocked objects
|
// mocked objects
|
||||||
const event = {
|
const event = {
|
||||||
cookies: {
|
cookies: {
|
||||||
get: cookiesGet
|
get: cookiesGet
|
||||||
},
|
},
|
||||||
locals: {},
|
locals: {},
|
||||||
params: {vorgang: vorgObj.vorgangToken}
|
params: { vorgang: vorgObj.vorgangToken }
|
||||||
};
|
};
|
||||||
vi.mocked(vorgangExists).mockReturnValueOnce(true);
|
vi.mocked(vorgangExists).mockReturnValueOnce(true);
|
||||||
vi.mocked(vorgangPINValidation).mockReturnValueOnce(false);
|
vi.mocked(vorgangPINValidation).mockReturnValueOnce(false);
|
||||||
@@ -132,12 +128,14 @@ describe('Teste Guard', () => {
|
|||||||
let thrownRedirect;
|
let thrownRedirect;
|
||||||
try {
|
try {
|
||||||
await load(event);
|
await load(event);
|
||||||
throw new Error('Function did not throw')
|
throw new Error('Function did not throw');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
thrownRedirect = e;
|
thrownRedirect = e;
|
||||||
}
|
}
|
||||||
expect(thrownRedirect?.status).toBe(303);
|
expect(thrownRedirect?.status).toBe(303);
|
||||||
expect(thrownRedirect?.location).toBe(ROUTE_NAMES.ANMELDUNG_VORGANG_PARAM(vorgObj.vorgangToken));
|
expect(thrownRedirect?.location).toBe(
|
||||||
|
ROUTE_NAMES.ANMELDUNG_VORGANG_PARAM(vorgObj.vorgangToken)
|
||||||
|
);
|
||||||
|
|
||||||
expect(cookiesGet).toHaveBeenCalledWith(COOKIE_NAME);
|
expect(cookiesGet).toHaveBeenCalledWith(COOKIE_NAME);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user