From 56f568634e94884a649b741e0f4f7f79fd403c22 Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Sun, 18 Aug 2024 15:34:36 +0200 Subject: [PATCH] Implement first integration tests --- tests/health.test.ts | 13 +++++++++++++ tests/requestid.test.ts | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 tests/health.test.ts create mode 100644 tests/requestid.test.ts diff --git a/tests/health.test.ts b/tests/health.test.ts new file mode 100644 index 0000000..a096349 --- /dev/null +++ b/tests/health.test.ts @@ -0,0 +1,13 @@ +import { expect, test } from '@playwright/test'; + +test('healthy test', async ({ playwright }) => { + const context = await playwright.request.newContext(); + const response = await context.get('health'); + await expect(response.status()).toBe(200); + await expect(response.headers()).toHaveProperty('healthy'); + await expect(response.headers()['healthy']).toBe('true'); + + const body = await response.json(); + await expect(body).toHaveProperty('status'); + await expect(body['status']).toBe('OK'); +}); \ No newline at end of file diff --git a/tests/requestid.test.ts b/tests/requestid.test.ts new file mode 100644 index 0000000..1e12338 --- /dev/null +++ b/tests/requestid.test.ts @@ -0,0 +1,37 @@ +import { expect, test } from '@playwright/test'; +import { validate, NIL } from 'uuid'; +import { requestIdHeader } from '$lib'; + +test('response contains request-id header', async ({playwright}) => { + const context = await playwright.request.newContext(); + const response = await context.get('health'); + const headers = response.headers(); + await expect(headers).toHaveProperty(requestIdHeader); +}); + +test('request-id is valid uuid', async ({playwright}) => { + const context = await playwright.request.newContext(); + const response = await context.get('health'); + const headers = response.headers(); + const requestId = headers[requestIdHeader]; + await expect(validate(requestId)).toBe(true); +}); + +test('reuse valid incoming uuid', async ({playwright}) => { + const context = await playwright.request.newContext(); + + const response = await context.get('health', { headers: { [requestIdHeader]: NIL }}); + const headers = response.headers(); + const requestId = headers[requestIdHeader]; + await expect(requestId).toBe(NIL); +}); + +test('ignore invalid incoming uuid', async ({playwright}) => { + const invalid = '00000000-0000-0000-0000-00000000000z'; + const context = await playwright.request.newContext(); + + const response = await context.get('health', { headers: { [requestIdHeader]: invalid }}); + const headers = response.headers(); + const requestId = headers[requestIdHeader]; + await expect(requestId).not.toBe(invalid); +}); \ No newline at end of file