diff --git a/src/controllers/RunnerOrganizationController.ts b/src/controllers/RunnerOrganizationController.ts
index de19d49..5cf4183 100644
--- a/src/controllers/RunnerOrganizationController.ts
+++ b/src/controllers/RunnerOrganizationController.ts
@@ -1,4 +1,4 @@
-import { Authorized, Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put, QueryParam } from 'routing-controllers';
+import { Authorized, BadRequestError, Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put, QueryParam } from 'routing-controllers';
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
import { getConnectionManager, Repository } from 'typeorm';
import { RunnerOrganizationHasRunnersError, RunnerOrganizationHasTeamsError, RunnerOrganizationIdsNotMatchingError, RunnerOrganizationNotFoundError } from '../errors/RunnerOrganizationErrors';
@@ -114,6 +114,10 @@ export class RunnerOrganizationController {
@OnUndefined(204)
@OpenAPI({ description: 'Delete the organsisation whose id you provided.
If the organization still has runners and/or teams associated this will fail.
To delete the organization with all associated runners and teams set the force QueryParam to true (cascading deletion might take a while).
This won\'t delete the associated contact.
If no organization with this id exists it will just return 204(no content).' })
async remove(@Param("id") id: number, @QueryParam("force") force: boolean) {
+ if (id == 1) {
+ throw new BadRequestError("You can't delete the citizen runner org.");
+ }
+
let organization = await this.runnerOrganizationRepository.findOne({ id: id });
if (!organization) { return null; }
let runnerOrganization = await this.runnerOrganizationRepository.findOne(organization, { relations: ['contact', 'runners', 'teams'] });
diff --git a/src/tests/runnerOrgs/org_delete.spec.ts b/src/tests/runnerOrgs/org_delete.spec.ts
index 92cbfce..293b5a6 100644
--- a/src/tests/runnerOrgs/org_delete.spec.ts
+++ b/src/tests/runnerOrgs/org_delete.spec.ts
@@ -22,6 +22,12 @@ describe('deletion (non-existant)', () => {
expect(res2.status).toEqual(204);
});
});
+describe('deletion of citizen sould fail', () => {
+ it('delete', async () => {
+ const res3 = await axios.delete(base + '/api/organizations/1', axios_config);
+ expect(res3.status).toEqual(400);
+ });
+});
// ---------------
describe('adding + deletion (successfull)', () => {
let added_org_id
diff --git a/test.sqlite-journal b/test.sqlite-journal
new file mode 100644
index 0000000..b494b93
Binary files /dev/null and b/test.sqlite-journal differ