From 20aeed87780247dc6401bba725801fc1874e50b5 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Mar 2021 16:50:12 +0100 Subject: [PATCH] Added tests for the new endpoint ref #174 --- .../selfservice/selfservice_delete.spec.ts | 249 ++++++++++++++++++ .../selfservice/selfservice_register.spec.ts | 240 ++--------------- 2 files changed, 277 insertions(+), 212 deletions(-) create mode 100644 src/tests/selfservice/selfservice_delete.spec.ts diff --git a/src/tests/selfservice/selfservice_delete.spec.ts b/src/tests/selfservice/selfservice_delete.spec.ts new file mode 100644 index 0000000..36dc7fa --- /dev/null +++ b/src/tests/selfservice/selfservice_delete.spec.ts @@ -0,0 +1,249 @@ +import axios from 'axios'; +import { config } from '../../config'; +const base = "http://localhost:" + config.internal_port + +let access_token; +let axios_config; + +beforeAll(async () => { + jest.setTimeout(20000); + const res = await axios.post(base + '/api/auth/login', { username: "demo", password: "demo" }); + access_token = res.data["access_token"]; + axios_config = { + headers: { "authorization": "Bearer " + access_token }, + validateStatus: undefined + }; +}); + +describe('register invalid citizen', () => { + it('registering as citizen without mail should return 406', async () => { + const res = await axios.post(base + '/api/runners/register', { + "firstname": "string", + "middlename": "string", + "lastname": "string", + }, axios_config); + expect(res.status).toEqual(406); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering as citizen with invalid mail should return 400', async () => { + const res = await axios.post(base + '/api/runners/register', { + "firstname": "string", + "middlename": "string", + "lastname": "string", + "email": "user" + }, axios_config); + expect(res.status).toEqual(400); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering as citizen without fist name should return 400', async () => { + const res = await axios.post(base + '/api/runners/register', { + "middlename": "string", + "lastname": "string", + "email": "user@example.com" + }, axios_config); + expect(res.status).toEqual(400); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering as citizen without last name should return 400', async () => { + const res = await axios.post(base + '/api/runners/register', { + "firstname": "string", + "middlename": "string", + "email": "user@example.com" + }, axios_config); + expect(res.status).toEqual(400); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering as citizen with invalid mail should return 400', async () => { + const res = await axios.post(base + '/api/runners/register', { + "firstname": "string", + "middlename": "string", + "lastname": "string", + "phone": "peter", + "email": "user@example.com" + }, axios_config); + expect(res.status).toEqual(400); + expect(res.headers['content-type']).toContain("application/json"); + }); +}); +// --------------- +describe('register citizen valid', () => { + it('registering as citizen with minimal params should return 200', async () => { + const res = await axios.post(base + '/api/runners/register', { + "firstname": "string", + "lastname": "string", + "email": "user@example.com" + }, axios_config); + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering as citizen with all params should return 200', async () => { + const res = await axios.post(base + '/api/runners/register', { + "firstname": "string", + "middlename": "string", + "lastname": "string", + "email": "user@example.com", + "phone": "+4909132123456", + "address": { + address1: "Teststreet 1", + address2: "Testapartement", + postalcode: "91074", + city: "Herzo", + country: "Germany" + } + }, axios_config); + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json"); + }); +}); +// --------------- +describe('register invalid company', () => { + let added_org; + it('creating a new org with just a name and registration enabled should return 200', async () => { + const res = await axios.post(base + '/api/organizations', { + "name": "test123", + "registrationEnabled": true + }, axios_config); + added_org = res.data; + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json") + }); + it('registering with bs token should return 404', async () => { + const res = await axios.post(base + '/api/runners/register/4040404', { + "firstname": "string", + "middlename": "string", + "lastname": "string", + }, axios_config); + expect(res.status).toEqual(404); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering without firstname should return 400', async () => { + const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { + "middlename": "string", + "lastname": "string", + }, axios_config); + expect(res.status).toEqual(400); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering without lastname should return 400', async () => { + const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { + "middlename": "string", + "firstname": "string", + }, axios_config); + expect(res.status).toEqual(400); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering with bs mail should return 400', async () => { + const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { + "firstname": "string", + "middlename": "string", + "lastname": "string", + "email": "true" + }, axios_config); + expect(res.status).toEqual(400); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering with invalid team should return 404', async () => { + const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { + "firstname": "string", + "lastname": "string", + "team": 9999999999999999999999 + }, axios_config); + expect(res.status).toEqual(404); + expect(res.headers['content-type']).toContain("application/json"); + }); +}); +// --------------- +describe('register valid company', () => { + let added_org; + let added_team; + it('creating a new org with just a name and registration enabled should return 200', async () => { + const res = await axios.post(base + '/api/organizations', { + "name": "test123", + "registrationEnabled": true + }, axios_config); + added_org = res.data; + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json") + }); + it('creating a new team with a parent org should return 200', async () => { + const res = await axios.post(base + '/api/teams', { + "name": "test_team", + "parentGroup": added_org.id + }, axios_config); + added_team = res.data; + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json") + }); + it('registering with minimal params should return 200', async () => { + const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { + "firstname": "string", + "lastname": "string", + }, axios_config); + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering with all params except team should return 200', async () => { + const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { + "firstname": "string", + "middlename": "string", + "lastname": "string", + "email": "user@example.com", + "phone": "+4909132123456", + "address": { + address1: "Teststreet 1", + address2: "Testapartement", + postalcode: "91074", + city: "Herzo", + country: "Germany" + } + }, axios_config); + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering with minimal params and team should return 200', async () => { + const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { + "firstname": "string", + "lastname": "string", + "team": added_team.id + }, axios_config); + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering with all params except team should return 200', async () => { + const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { + "firstname": "string", + "middlename": "string", + "lastname": "string", + "email": "user@example.com", + "phone": "+4909132123456", + "address": { + address1: "Teststreet 1", + address2: "Testapartement", + postalcode: "91074", + city: "Herzo", + country: "Germany" + } + }, axios_config); + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('registering with all params and team should return 200', async () => { + const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { + "firstname": "string", + "middlename": "string", + "lastname": "string", + "email": "user@example.com", + "phone": "+4909132123456", + "address": { + address1: "Teststreet 1", + address2: "Testapartement", + postalcode: "91074", + city: "Herzo", + country: "Germany" + }, + "team": added_team.id + }, axios_config); + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json"); + }); +}); \ No newline at end of file diff --git a/src/tests/selfservice/selfservice_register.spec.ts b/src/tests/selfservice/selfservice_register.spec.ts index 36dc7fa..576445c 100644 --- a/src/tests/selfservice/selfservice_register.spec.ts +++ b/src/tests/selfservice/selfservice_register.spec.ts @@ -14,236 +14,52 @@ beforeAll(async () => { validateStatus: undefined }; }); - -describe('register invalid citizen', () => { - it('registering as citizen without mail should return 406', async () => { - const res = await axios.post(base + '/api/runners/register', { - "firstname": "string", - "middlename": "string", - "lastname": "string", - }, axios_config); - expect(res.status).toEqual(406); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering as citizen with invalid mail should return 400', async () => { - const res = await axios.post(base + '/api/runners/register', { - "firstname": "string", - "middlename": "string", - "lastname": "string", - "email": "user" - }, axios_config); - expect(res.status).toEqual(400); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering as citizen without fist name should return 400', async () => { - const res = await axios.post(base + '/api/runners/register', { - "middlename": "string", - "lastname": "string", - "email": "user@example.com" - }, axios_config); - expect(res.status).toEqual(400); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering as citizen without last name should return 400', async () => { - const res = await axios.post(base + '/api/runners/register', { - "firstname": "string", - "middlename": "string", - "email": "user@example.com" - }, axios_config); - expect(res.status).toEqual(400); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering as citizen with invalid mail should return 400', async () => { - const res = await axios.post(base + '/api/runners/register', { - "firstname": "string", - "middlename": "string", - "lastname": "string", - "phone": "peter", - "email": "user@example.com" - }, axios_config); - expect(res.status).toEqual(400); - expect(res.headers['content-type']).toContain("application/json"); - }); -}); // --------------- -describe('register citizen valid', () => { +describe('delete selfservice runner invalid', () => { + let added_runner; it('registering as citizen with minimal params should return 200', async () => { const res = await axios.post(base + '/api/runners/register', { "firstname": "string", "lastname": "string", "email": "user@example.com" }, axios_config); + added_runner = res.data; expect(res.status).toEqual(200); expect(res.headers['content-type']).toContain("application/json"); }); - it('registering as citizen with all params should return 200', async () => { + it('delete with valid jwt should return 200', async () => { + const res = await axios.delete(base + '/api/runners/me/' + added_runner.token, axios_config); + expect(res.status).toEqual(200); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('delete with valid jwt but non-existant runner should return 200', async () => { + const res = await axios.delete(base + '/api/runners/me/' + added_runner.token, axios_config); + expect(res.status).toEqual(404); + expect(res.headers['content-type']).toContain("application/json"); + }); + it('delete with invalid jwt should return 401', async () => { + const res = await axios.delete(base + '/api/runners/me/123.123', axios_config); + expect(res.status).toEqual(401); + expect(res.headers['content-type']).toContain("application/json"); + }); +}); +// --------------- +describe('delete selfservice runner valid', () => { + let added_runner; + it('registering as citizen with minimal params should return 200', async () => { const res = await axios.post(base + '/api/runners/register', { "firstname": "string", - "middlename": "string", "lastname": "string", - "email": "user@example.com", - "phone": "+4909132123456", - "address": { - address1: "Teststreet 1", - address2: "Testapartement", - postalcode: "91074", - city: "Herzo", - country: "Germany" - } + "email": "user@example.com" }, axios_config); + added_runner = res.data; expect(res.status).toEqual(200); expect(res.headers['content-type']).toContain("application/json"); }); -}); -// --------------- -describe('register invalid company', () => { - let added_org; - it('creating a new org with just a name and registration enabled should return 200', async () => { - const res = await axios.post(base + '/api/organizations', { - "name": "test123", - "registrationEnabled": true - }, axios_config); - added_org = res.data; - expect(res.status).toEqual(200); - expect(res.headers['content-type']).toContain("application/json") - }); - it('registering with bs token should return 404', async () => { - const res = await axios.post(base + '/api/runners/register/4040404', { - "firstname": "string", - "middlename": "string", - "lastname": "string", - }, axios_config); - expect(res.status).toEqual(404); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering without firstname should return 400', async () => { - const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { - "middlename": "string", - "lastname": "string", - }, axios_config); - expect(res.status).toEqual(400); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering without lastname should return 400', async () => { - const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { - "middlename": "string", - "firstname": "string", - }, axios_config); - expect(res.status).toEqual(400); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering with bs mail should return 400', async () => { - const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { - "firstname": "string", - "middlename": "string", - "lastname": "string", - "email": "true" - }, axios_config); - expect(res.status).toEqual(400); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering with invalid team should return 404', async () => { - const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { - "firstname": "string", - "lastname": "string", - "team": 9999999999999999999999 - }, axios_config); - expect(res.status).toEqual(404); - expect(res.headers['content-type']).toContain("application/json"); - }); -}); -// --------------- -describe('register valid company', () => { - let added_org; - let added_team; - it('creating a new org with just a name and registration enabled should return 200', async () => { - const res = await axios.post(base + '/api/organizations', { - "name": "test123", - "registrationEnabled": true - }, axios_config); - added_org = res.data; - expect(res.status).toEqual(200); - expect(res.headers['content-type']).toContain("application/json") - }); - it('creating a new team with a parent org should return 200', async () => { - const res = await axios.post(base + '/api/teams', { - "name": "test_team", - "parentGroup": added_org.id - }, axios_config); - added_team = res.data; - expect(res.status).toEqual(200); - expect(res.headers['content-type']).toContain("application/json") - }); - it('registering with minimal params should return 200', async () => { - const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { - "firstname": "string", - "lastname": "string", - }, axios_config); - expect(res.status).toEqual(200); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering with all params except team should return 200', async () => { - const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { - "firstname": "string", - "middlename": "string", - "lastname": "string", - "email": "user@example.com", - "phone": "+4909132123456", - "address": { - address1: "Teststreet 1", - address2: "Testapartement", - postalcode: "91074", - city: "Herzo", - country: "Germany" - } - }, axios_config); - expect(res.status).toEqual(200); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering with minimal params and team should return 200', async () => { - const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { - "firstname": "string", - "lastname": "string", - "team": added_team.id - }, axios_config); - expect(res.status).toEqual(200); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering with all params except team should return 200', async () => { - const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { - "firstname": "string", - "middlename": "string", - "lastname": "string", - "email": "user@example.com", - "phone": "+4909132123456", - "address": { - address1: "Teststreet 1", - address2: "Testapartement", - postalcode: "91074", - city: "Herzo", - country: "Germany" - } - }, axios_config); - expect(res.status).toEqual(200); - expect(res.headers['content-type']).toContain("application/json"); - }); - it('registering with all params and team should return 200', async () => { - const res = await axios.post(base + '/api/runners/register/' + added_org.registrationKey, { - "firstname": "string", - "middlename": "string", - "lastname": "string", - "email": "user@example.com", - "phone": "+4909132123456", - "address": { - address1: "Teststreet 1", - address2: "Testapartement", - postalcode: "91074", - city: "Herzo", - country: "Germany" - }, - "team": added_team.id - }, axios_config); + it('delete with valid jwt should return 200', async () => { + const res = await axios.delete(base + '/api/runners/me/' + added_runner.token, axios_config); expect(res.status).toEqual(200); expect(res.headers['content-type']).toContain("application/json"); + expect(res.data).toEqual(added_runner); }); }); \ No newline at end of file