From ca4fe0492ee0f0959abd5b8f2b1ee39211b49b48 Mon Sep 17 00:00:00 2001 From: Roland Bernard <rolbernard@unibz.it> Date: Sun, 23 May 2021 18:06:14 +0200 Subject: [PATCH] Added initialization with test date --- server/src/setupTests.ts | 353 ++++++++++++++++++++++++++++++++++++- server/src/v1/auth.test.ts | 11 ++ server/src/v1/user.test.ts | 9 +- 3 files changed, 369 insertions(+), 4 deletions(-) create mode 100644 server/src/v1/auth.test.ts diff --git a/server/src/setupTests.ts b/server/src/setupTests.ts index 20e686c..fd33e1e 100644 --- a/server/src/setupTests.ts +++ b/server/src/setupTests.ts @@ -1,11 +1,362 @@ -import { ready, close } from './database'; +import { env } from 'process'; + +import { database, ready, close } from './database'; + +async function loadTestData() { + await database('users') + .insert([ + { + id: '00000000-0000-0000-0000-000000000000', + user_name: 'User0', + passwd_hash: '$2b$10$sjHhJNz4sLNclKEwWISZRe4cVju6jn4QjMVs4wdZ6wug2SKG774pq', + email: 'test0@example.com', + real_name: 'Testing Tester', + image: null, + }, { + id: '00000000-0000-0000-0000-000000000001', + user_name: 'User1', + passwd_hash: '$2b$10$sjHhJNz4sLNclKEwWISZRe4cVju6jn4QjMVs4wdZ6wug2SKG774pq', + email: 'test1@example.com', + real_name: 'Tester Testing', + image: Buffer.from('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', 'base64'), + } + ]); + await database('teams') + .insert([ + { + id: '00000000-0000-0000-0000-000000000000', + name: 'Team0', + }, { + id: '00000000-0000-0000-0000-000000000001', + name: 'Team1', + }, { + id: '00000000-0000-0000-0000-000000000002', + name: 'Team2', + } + ]); + await database('roles') + .insert([ + { + id: '00000000-0000-0000-0000-000000000000', + team_id: '00000000-0000-0000-0000-000000000000', + name: 'Role0', + }, { + id: '00000000-0000-0000-0000-000000000001', + team_id: '00000000-0000-0000-0000-000000000001', + name: 'Role1', + }, { + id: '00000000-0000-0000-0000-000000000002', + team_id: '00000000-0000-0000-0000-000000000002', + name: 'Role2', + }, { + id: '00000000-0000-0000-0000-000000000003', + team_id: '00000000-0000-0000-0000-000000000002', + name: 'Role3', + } + ]); + await database('team_members') + .insert([ + { + user_id: '00000000-0000-0000-0000-000000000000', + team_id: '00000000-0000-0000-0000-000000000000', + role_id: '00000000-0000-0000-0000-000000000000', + }, { + user_id: '00000000-0000-0000-0000-000000000001', + team_id: '00000000-0000-0000-0000-000000000001', + role_id: '00000000-0000-0000-0000-000000000001', + }, { + user_id: '00000000-0000-0000-0000-000000000000', + team_id: '00000000-0000-0000-0000-000000000002', + role_id: '00000000-0000-0000-0000-000000000002', + }, { + user_id: '00000000-0000-0000-0000-000000000001', + team_id: '00000000-0000-0000-0000-000000000002', + role_id: '00000000-0000-0000-0000-000000000003', + } + ]); + await database('projects') + .insert([ + { + id: '00000000-0000-0000-0000-000000000000', + name: 'Project0', + text: 'Project0 Text', + color: '#00f', + status: 'open', + deadline: new Date('2020-10-10'), + }, { + id: '00000000-0000-0000-0000-000000000001', + name: 'Project1', + text: 'Project1 Text', + color: '#0f0', + status: 'closed', + deadline: null, + }, { + id: '00000000-0000-0000-0000-000000000002', + name: 'Project2', + text: 'Project2 Text', + color: '#f00', + status: 'suspended', + deadline: null, + } + ]); + await database('team_projects') + .insert([ + { + project_id: '00000000-0000-0000-0000-000000000000', + team_id: '00000000-0000-0000-0000-000000000000', + }, { + project_id: '00000000-0000-0000-0000-000000000001', + team_id: '00000000-0000-0000-0000-000000000002', + }, { + project_id: '00000000-0000-0000-0000-000000000002', + team_id: '00000000-0000-0000-0000-000000000000', + }, { + project_id: '00000000-0000-0000-0000-000000000002', + team_id: '00000000-0000-0000-0000-000000000001', + } + ]); + await database('tasks') + .insert([ + { + id: '00000000-0000-0000-0000-000000000000', + project_id: '00000000-0000-0000-0000-000000000000', + name: 'Task0', + text: 'Task0 Text', + icon: '0', + status: 'open', + priority: 'medium', + created: new Date('2020-10-05'), + edited: new Date('2020-10-10'), + }, { + id: '00000000-0000-0000-0000-000000000001', + project_id: '00000000-0000-0000-0000-000000000001', + name: 'Task1', + text: 'Task1 Text', + icon: '1', + status: 'closed', + priority: 'high', + created: new Date('2020-10-10'), + edited: new Date('2020-10-15'), + }, { + id: '00000000-0000-0000-0000-000000000002', + project_id: '00000000-0000-0000-0000-000000000002', + name: 'Task2', + text: 'Task2 Text', + icon: '2', + status: 'open', + priority: 'low', + created: new Date('2020-10-15'), + edited: new Date('2020-10-20'), + }, { + id: '00000000-0000-0000-0000-000000000003', + project_id: '00000000-0000-0000-0000-000000000002', + name: 'Task3', + text: 'Task3 Text', + icon: '3', + status: 'closed', + priority: 'urgent', + created: new Date('2020-10-15'), + edited: new Date('2020-10-20'), + }, { + id: '00000000-0000-0000-0000-000000000004', + project_id: '00000000-0000-0000-0000-000000000002', + name: 'Task4', + text: 'Task4 Text', + icon: '4', + status: 'suspended', + priority: 'urgent', + created: new Date('2020-10-15'), + edited: new Date('2020-10-20'), + }, { + id: '00000000-0000-0000-0000-000000000005', + project_id: '00000000-0000-0000-0000-000000000002', + name: 'Task5', + text: 'Task5 Text', + icon: '5', + status: 'open', + priority: 'urgent', + created: new Date('2020-10-15'), + edited: new Date('2020-10-20'), + } + ]); + await database('task_requirements') + .insert([ + { + task_id: '00000000-0000-0000-0000-000000000000', + role_id: '00000000-0000-0000-0000-000000000000', + time: 30, + }, { + task_id: '00000000-0000-0000-0000-000000000001', + role_id: '00000000-0000-0000-0000-000000000001', + time: 30, + }, { + task_id: '00000000-0000-0000-0000-000000000005', + role_id: '00000000-0000-0000-0000-000000000000', + time: 60, + }, { + task_id: '00000000-0000-0000-0000-000000000005', + role_id: '00000000-0000-0000-0000-000000000001', + time: 30, + } + ]); + await database('task_dependencies') + .insert([ + { + task_id: '00000000-0000-0000-0000-000000000002', + requires_id: '00000000-0000-0000-0000-000000000005', + } + ]); + await database('task_assignees') + .insert([ + { + task_id: '00000000-0000-0000-0000-000000000005', + user_id: '00000000-0000-0000-0000-000000000000', + time: 120, + finished: false, + } + ]); + await database('workhours') + .insert([ + { + id: '00000000-0000-0000-0000-000000000000', + task_id: '00000000-0000-0000-0000-000000000005', + user_id: '00000000-0000-0000-0000-000000000000', + started: new Date('2020-10-10T00:00:00'), + finished: new Date('2020-10-10T01:00:00'), + }, { + id: '00000000-0000-0000-0000-000000000001', + task_id: '00000000-0000-0000-0000-000000000005', + user_id: '00000000-0000-0000-0000-000000000000', + started: new Date('2020-10-10T03:00:00'), + finished: new Date('2020-10-10T04:00:00'), + }, { + id: '00000000-0000-0000-0000-000000000002', + task_id: '00000000-0000-0000-0000-000000000005', + user_id: '00000000-0000-0000-0000-000000000000', + started: new Date('2020-10-10T05:00:00'), + finished: null, + } + ]); + await database('comments') + .insert([ + { + id: '00000000-0000-0000-0000-000000000000', + task_id: '00000000-0000-0000-0000-000000000005', + user_id: '00000000-0000-0000-0000-000000000000', + text: 'Comment0', + created: new Date('2020-10-10T00:00:00'), + edited: new Date('2020-10-10T01:00:00'), + }, { + id: '00000000-0000-0000-0000-000000000001', + task_id: '00000000-0000-0000-0000-000000000005', + user_id: '00000000-0000-0000-0000-000000000001', + text: 'Comment1', + created: new Date('2020-10-10T03:00:00'), + edited: new Date('2020-10-10T04:00:00'), + }, { + id: '00000000-0000-0000-0000-000000000002', + task_id: '00000000-0000-0000-0000-000000000005', + user_id: '00000000-0000-0000-0000-000000000001', + text: 'Comment2', + created: new Date('2020-10-10T05:00:00'), + edited: new Date('2020-10-10T05:00:00'), + } + ]); +} + +async function deleteTestData() { + if (env.NODE_ENV !== 'test') { + await database('comments') + .delete() + .whereIn('comments.task_id', [ + '00000000-0000-0000-0000-000000000005', + ]); + await database('workhours') + .delete() + .whereIn('workhours.task_id', [ + '00000000-0000-0000-0000-000000000005', + ]); + await database('task_assignees') + .delete() + .whereIn('task_assignees.task_id', [ + '00000000-0000-0000-0000-000000000005', + ]); + await database('task_dependencies') + .delete() + .whereIn('task_dependencies.task_id', [ + '00000000-0000-0000-0000-000000000005', + ]); + await database('task_requirements') + .delete() + .whereIn('task_requirements.task_id', [ + '00000000-0000-0000-0000-000000000000', + '00000000-0000-0000-0000-000000000001', + '00000000-0000-0000-0000-000000000005', + ]); + await database('tasks') + .delete() + .whereIn('tasks.id', [ + '00000000-0000-0000-0000-000000000000', + '00000000-0000-0000-0000-000000000001', + '00000000-0000-0000-0000-000000000002', + '00000000-0000-0000-0000-000000000003', + '00000000-0000-0000-0000-000000000004', + '00000000-0000-0000-0000-000000000005', + ]); + await database('team_projects') + .delete() + .whereIn('team_projects.team_id', [ + '00000000-0000-0000-0000-000000000000', + '00000000-0000-0000-0000-000000000001', + '00000000-0000-0000-0000-000000000002', + ]); + await database('projects') + .delete() + .whereIn('projects.id', [ + '00000000-0000-0000-0000-000000000000', + '00000000-0000-0000-0000-000000000001', + '00000000-0000-0000-0000-000000000002', + ]); + await database('team_members') + .delete() + .whereIn('team_members.user_id', [ + '00000000-0000-0000-0000-000000000000', + '00000000-0000-0000-0000-000000000001', + ]); + await database('roles') + .delete() + .whereIn('roles.id', [ + '00000000-0000-0000-0000-000000000000', + '00000000-0000-0000-0000-000000000001', + '00000000-0000-0000-0000-000000000002', + '00000000-0000-0000-0000-000000000003', + ]); + await database('teams') + .delete() + .whereIn('teams.id', [ + '00000000-0000-0000-0000-000000000000', + '00000000-0000-0000-0000-000000000001', + '00000000-0000-0000-0000-000000000002', + ]); + await database('users') + .delete() + .whereIn('users.id', [ + '00000000-0000-0000-0000-000000000000', + '00000000-0000-0000-0000-000000000001', + ]); + } else { + // The test database is in memory only and does not have to be cleaned + } +} beforeAll(async () => { await ready; + await loadTestData(); }); afterAll(async () => { + await deleteTestData(); await close(); }); diff --git a/server/src/v1/auth.test.ts b/server/src/v1/auth.test.ts new file mode 100644 index 0000000..d87a33a --- /dev/null +++ b/server/src/v1/auth.test.ts @@ -0,0 +1,11 @@ + +import supertest from 'supertest'; + +import { api } from '../api'; + +const request = supertest(api); + +test('', async () => { + +}); + diff --git a/server/src/v1/user.test.ts b/server/src/v1/user.test.ts index 2983bbd..269ea75 100644 --- a/server/src/v1/user.test.ts +++ b/server/src/v1/user.test.ts @@ -1,13 +1,16 @@ -import { api } from '../api'; import supertest from 'supertest'; +import { api } from '../api'; + const request = supertest(api); test('non existant username returns 404 for /v1/user/name/', async () => { const response = await request.get('/v1/user/name/__NO_REAL_NAME__'); expect(response.status).toEqual(404); - expect(response.body.status).toEqual('error'); - expect(response.body.message).toEqual('user not found'); + expect(response.body).toEqual({ + status: 'error', + message: 'user not found', + }); }); -- GitLab