From ea0887988cf0600981acb64b0e50cea9cd7307ea Mon Sep 17 00:00:00 2001 From: Spencer Bliven Date: Thu, 10 Oct 2024 21:38:13 +0200 Subject: [PATCH] Add mocha tests for ValidateAction. - Add new test for validate jobs to check for required parameters in both POST and PATCH operations - Remove some unused TestData which didn't match the current Job DTOs - Add 'validate' job to the test jobconfig.json --- README.md | 2 +- src/jobs/dto/create-job.dto.ts | 4 - test/Jobs.js | 701 +++++++++++++++++++-------------- test/TestData.js | 56 --- test/config/jobconfig.json | 23 +- 5 files changed, 420 insertions(+), 366 deletions(-) diff --git a/README.md b/README.md index 50e87e5d3..dfe4d7c77 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Thank you for your interest in contributing to our project! 1. **Running the unit tests:** `npm run test` 2. **Running the e2e(api) tests:** -- First of all run `npm run prepare:local` to prepare the local environment for starting +- First of all run `npm run prepare:local` to prepare the local docker environment for starting - After that run `npm run test:api` which will start the backend locally and run both `jest` and `mocha` e2e(api) tests. - [Optional] If you want to run only the mocha tests you will need to start the backend locally with `npm run start` and then use `npm run test:api:mocha` - [Optional] If you want to run only the jest tests you can use `npm run test:api:jest` diff --git a/src/jobs/dto/create-job.dto.ts b/src/jobs/dto/create-job.dto.ts index f1a2c074d..775e30951 100644 --- a/src/jobs/dto/create-job.dto.ts +++ b/src/jobs/dto/create-job.dto.ts @@ -1,10 +1,6 @@ import { ApiProperty, ApiTags } from "@nestjs/swagger"; import { IsEmail, IsObject, IsOptional, IsString } from "class-validator"; -import { JobConfig } from "../config/jobconfig"; -export type CreateJobDtoWithConfig = CreateJobDto & { - configuration: JobConfig; -}; @ApiTags("jobs") export class CreateJobDto { @ApiProperty({ diff --git a/test/Jobs.js b/test/Jobs.js index 1bbfd55d9..eec9e8363 100644 --- a/test/Jobs.js +++ b/test/Jobs.js @@ -1,7 +1,6 @@ /* eslint-disable @typescript-eslint/no-var-requires */ "use strict"; -const { and } = require("ajv/dist/compile/codegen"); var utils = require("./LoginUtils"); const { TestData } = require("./TestData"); @@ -40,7 +39,7 @@ let datasetPid1 = null, jobIdGroup4 = null, encodedJobIdGroup4 = null, jobIdGroup5 = null, - encodedJobIdGroup5 = null, + encodedJobIdGroup5 = null, jobIdGroup6 = null, encodedJobIdGroup6 = null, @@ -53,7 +52,7 @@ let datasetPid1 = null, jobIdUser4 = null, encodedJobIdUser4 = null, jobIdUser5 = null, - encodedJobIdUser5 = null, + encodedJobIdUser5 = null, jobIdUser6 = null, encodedJobIdUser6 = null, @@ -66,10 +65,10 @@ let datasetPid1 = null, jobIdUserSpec4 = null, encodedJobIdUserSpec4 = null, jobIdUserSpec5 = null, - encodedJobIdUserSpec5 = null, + encodedJobIdUserSpec5 = null, jobIdUserSpec6 = null, encodedJobIdUserSpec6 = null, - jobIdUserSpec7 = null, + jobIdUserSpec7 = null, encodedJobIdUserSpec7 = null, jobIdGroupSpec1 = null, @@ -81,13 +80,16 @@ let datasetPid1 = null, jobIdGroupSpec4 = null, encodedJobIdGroupSpec4 = null, jobIdGroupSpec5 = null, - encodedJobIdGroupSpec5 = null, + encodedJobIdGroupSpec5 = null, jobIdGroupSpec6 = null, encodedJobIdGroupSpec6 = null, - jobIdGroupSpec7 = null, + jobIdGroupSpec7 = null, encodedJobIdGroupSpec7 = null, jobIdGroupSpec8 = null, - encodedJobIdGroupSpec8 = null; + encodedJobIdGroupSpec8 = null, + + jobIdValidate1 = null, + encodedJobIdValidate1 = null; const dataset1 = { @@ -111,33 +113,29 @@ const dataset3 = { accessGroups: ["group1"], }; const jobAll = { - ...TestData.Job, type: "all_access", }; const jobDatasetPublic = { - ...TestData.Job, type: "public_access", } const jobAuthenticated = { - ...TestData.Job, type: "authenticated_access" }; const jobDatasetAccess = { - ...TestData.Job, type: "dataset_access" }; const jobDatasetOwner = { - ...TestData.Job, type: "owner_access" }; const jobUser51 = { - ...TestData.Job, type: "user_access" }; const jobGroup5 = { - ...TestData.Job, type: "group_access" }; +const jobValidate = { + type: "validate" +}; describe("1100: Jobs: Test New Job Model", () => { before(() => { @@ -237,7 +235,7 @@ describe("1100: Jobs: Test New Job Model", () => { datasetPid3 = res.body["pid"]; }); }); - + it("0040: Add a new job as a user from ADMIN_GROUPS for himself/herself in '#all' configuration with no datasets in job parameters, which should fail", async () => { const newDataset = { ...jobAll, @@ -723,7 +721,7 @@ describe("1100: Jobs: Test New Job Model", () => { res.body.should.have.property("message").and.be.equal("Invalid new job. Unauthenticated user cannot initiate a job owned by another user."); }); }); - + it("0230: Add a new job as a user from ADMIN_GROUPS for himself/herself in '#datasetPublic' configuration with all published datasets", async () => { const newDataset = { ...jobDatasetPublic, @@ -876,7 +874,7 @@ describe("1100: Jobs: Test New Job Model", () => { res.body.should.have.property("statusMessage").to.be.equal("jobCreated"); }); }); - + it("0290: Add a new job as a user from CREATE_JOB_GROUPS for himself/herself in '#datasetPublic' configuration with one unpublished dataset", async () => { const newDataset = { ...jobDatasetPublic, @@ -928,7 +926,7 @@ describe("1100: Jobs: Test New Job Model", () => { res.body.should.have.property("statusMessage").to.be.equal("jobCreated"); }); }); - + it("0310: Add a new job as a normal user himself/herself in '#datasetPublic' configuration with one unpublished dataset, which should fail as forbidden", async () => { const newDataset = { ...jobDatasetPublic, @@ -989,7 +987,7 @@ describe("1100: Jobs: Test New Job Model", () => { .post("/api/v3/Jobs") .send(newDataset) .set("Accept", "application/json") - .expect(TestData.AccessForbiddenStatusCode) + .expect(TestData.AccessForbiddenStatusCode) .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("id"); @@ -1047,7 +1045,7 @@ describe("1100: Jobs: Test New Job Model", () => { res.body.should.have.property("ownerUser").and.be.equal("user1"); res.body.should.have.property("statusMessage").to.be.equal("jobCreated"); }); - }); + }); it("0360: Add a new job as a user from ADMIN_GROUPS for another group in '#authenticated' configuration", async () => { const newDataset = { ...jobAuthenticated, @@ -1169,7 +1167,7 @@ describe("1100: Jobs: Test New Job Model", () => { res.body.should.have.property("message").and.be.equal("Unauthorized to create this job."); }); }); - + it("0410: Add a new job as a user from ADMIN_GROUPS for himself/herself in '#datasetAccess' configuration", async () => { const newDataset = { ...jobDatasetAccess, @@ -1837,7 +1835,7 @@ describe("1100: Jobs: Test New Job Model", () => { }); }); - + it("0620: Add a new job as a user from ADMIN_GROUPS for anonymous user in '#USER5.1' configuration", async () => { const newDataset = { ...jobUser51, @@ -2313,9 +2311,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0780: Adds a status update to a job as a user from ADMIN_GROUPS for his/her job in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId1}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2326,9 +2324,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0790: Adds a Status update to a job as a user from ADMIN_GROUPS for another user's job in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2339,9 +2337,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0800: Adds a Status update to a job as a user from ADMIN_GROUPS for another group's job in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2352,9 +2350,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0810: Adds a Status update to a job as a user from ADMIN_GROUPS for anonymous user's job in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2363,12 +2361,12 @@ describe("1100: Jobs: Test New Job Model", () => { }); it("0820: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her job in '#all' configuration", async () => { - + return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2379,9 +2377,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0830: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's job in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2392,9 +2390,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0840: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her group in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2405,9 +2403,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0850: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's group in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2418,9 +2416,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0860: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for anonymous user's group in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2431,9 +2429,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0870: Adds a Status update to a job as a normal user for his/her job in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2444,9 +2442,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0880: Adds a Status update to a job as a normal user for another user's job in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2457,9 +2455,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0890: Adds a Status update to a job as a normal user for his/her group in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2470,9 +2468,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0900: Adds a Status update to a job as a normal user for another user's group in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2483,9 +2481,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0910: Adds a Status update to a job as a normal user for anonymous user's group in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2496,9 +2494,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0920: Adds a Status update to a job as unauthhenticated user for anonymous job in '#all' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .expect(TestData.SuccessfulPatchStatusCode) @@ -2508,9 +2506,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0930: Adds a Status update to a job as unauthhenticated user for anouther group's job in '#all' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .expect(TestData.AccessForbiddenStatusCode) @@ -2520,9 +2518,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0940: Adds a Status update to a job as unauthhenticated user for another user's job in '#all' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobId2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .expect(TestData.AccessForbiddenStatusCode) @@ -2532,9 +2530,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0950: Adds a status update to a job as a user from ADMIN_GROUPS for his/her job in '#jobOwnerUser' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser1}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2545,9 +2543,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0960: Adds a Status update to a job as a user from ADMIN_GROUPS for another group's job in '#jobOwnerUser' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2558,9 +2556,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0970: Adds a Status update to a job as a user from ADMIN_GROUPS for anonymous user's job in '#jobOwnerUser' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2571,9 +2569,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0980: Adds a Status update to a job as a user from ADMIN_GROUPS for anonymous user's job in '#jobOwnerUser' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2584,9 +2582,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("0990: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her job in '#jobOwnerUser' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2597,9 +2595,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1000: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's job in '#jobOwnerUser' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2610,9 +2608,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1010: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her group in '#jobOwnerUser' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2623,9 +2621,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1020: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's group in '#jobOwnerUser' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2636,9 +2634,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1030: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for anonymous user's group in '#jobOwnerUser' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2649,9 +2647,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1040: Adds a Status update to a job as a normal user for his/her job in '#jobOwnerUser' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2662,9 +2660,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1050: Adds a Status update to a job as a normal user for another user's job in '#jobOwnerUser' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2675,9 +2673,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1060: Adds a Status update to a job as a normal user for his/her group in '#jobOwnerUser' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2688,9 +2686,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1070: Adds a Status update to a job as a normal user for another user's group in '#jobOwnerUser' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2701,9 +2699,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1080: Adds a Status update to a job as a normal user for anonymous user's group in '#jobOwnerUser' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2714,9 +2712,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1090: Adds a Status update to a job as unauthhenticated user for anonymous user's group in '#jobOwnerUser' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUser6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .expect(TestData.AccessForbiddenStatusCode) @@ -2726,9 +2724,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1100: Adds a status update to a job as a user from ADMIN_GROUPS for his/her job in '#jobOwnerGroup' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup1}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2739,9 +2737,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1110: Adds a Status update to a job as a user from ADMIN_GROUPS for another group's job in '#jobOwnerGroup' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2752,9 +2750,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1120: Adds a Status update to a job as a user from ADMIN_GROUPS for anonymous user's job in '#jobOwnerGroup' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2765,9 +2763,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1130: Adds a Status update to a job as a user from ADMIN_GROUPS for anonymous user's job in '#jobOwnerGroup' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2779,9 +2777,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1140: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her job in '#jobOwnerGroup' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2791,9 +2789,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1150: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's job in '#jobOwnerGroup' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2803,9 +2801,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1160: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her group in '#jobOwnerGroup' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2815,35 +2813,35 @@ describe("1100: Jobs: Test New Job Model", () => { it("1170: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's group in '#jobOwnerGroup' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) .expect(TestData.AccessForbiddenStatusCode) .expect("Content-Type", /json/); }); - + it("1180: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for anonymous user's group in '#jobOwnerGroup' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) .expect(TestData.AccessForbiddenStatusCode) .expect("Content-Type", /json/); }); - + it("1190: Adds a Status update to a job as a normal user for his/her job in '#jobOwnerGroup' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2854,9 +2852,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1200: Adds a Status update to a job as a normal user for another user's job in '#jobOwnerGroup' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2867,9 +2865,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1210: Adds a Status update to a job as a normal user for his/her group in '#jobOwnerGroup' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2880,9 +2878,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1220: Adds a Status update to a job as a normal user for another user's group in '#jobOwnerGroup' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2893,9 +2891,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1230: Adds a Status update to a job as a normal user for anonymous user's group in '#jobOwnerGroup' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -2906,9 +2904,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1240: Adds a Status update to a job as unauthhenticated user for anonymous user's group in '#jobOwnerGroup' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroup6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .expect(TestData.AccessForbiddenStatusCode) @@ -2918,9 +2916,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1250: Adds a Status update to a job as a user from ADMIN_GROUPS for his/her job in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec1}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2931,9 +2929,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1260: Adds a Status update to a job as a user from ADMIN_GROUPS for another group's job in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2944,9 +2942,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1270: Adds a Status update to a job as a user from ADMIN_GROUPS for anonymous user's job in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2957,9 +2955,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1280: Adds a Status update to a job as a user from ADMIN_GROUPS for anonymous user's job in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -2970,9 +2968,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1290: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her job in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2983,9 +2981,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1300: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's job in 'USER5.1' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -2996,9 +2994,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1310: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her group in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -3009,22 +3007,22 @@ describe("1100: Jobs: Test New Job Model", () => { it("1320: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's group in 'USER5.1' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) .expect(TestData.AccessForbiddenStatusCode) .expect("Content-Type", /json/); }); - + it("1330: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for anonymous user's group in 'USER5.1' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -3035,9 +3033,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1340: Adds a Status update to a job as user5.1 for his/her job in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3048,9 +3046,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1350: Adds a Status update to a job as user5.1 for another user's job in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3061,9 +3059,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1360: Adds a Status update to a job as user5.1 for his/her group in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3074,9 +3072,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1370: Adds a Status update to a job as user5.1 for another user's group in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3087,9 +3085,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1380: Adds a Status update to a job as user5.1 for anonymous user's group in 'USER5.1' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3100,9 +3098,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1390: Adds a Status update to a job as user5.2 for his/her job in 'USER5.1' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec7}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser52}` }) @@ -3113,9 +3111,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1400: Adds a Status update to a job as user5.2 for user's 5.1 in same group job in 'USER5.1' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser52}` }) @@ -3126,9 +3124,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1410: Adds a Status update to a job as user5.2 for another user in his/her group job in 'USER5.1' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdUserSpec5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser52}` }) @@ -3139,48 +3137,48 @@ describe("1100: Jobs: Test New Job Model", () => { it("1420: Adds a status update to a job as a user from ADMIN_GROUPS for his/her job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec1}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) .expect(TestData.SuccessfulPatchStatusCode) .expect("Content-Type", /json/); }); - + it("1430: Adds a Status update to a job as a user from ADMIN_GROUPS for another group's job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) .expect(TestData.SuccessfulPatchStatusCode) .expect("Content-Type", /json/); }); - + it("1440: Adds a Status update to a job as a user from ADMIN_GROUPS for anonymous user's job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) .expect(TestData.SuccessfulPatchStatusCode) .expect("Content-Type", /json/); }); - + it("1450: Adds a Status update to a job as a user from ADMIN_GROUPS for anonymous user's job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -3191,9 +3189,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1460: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -3204,9 +3202,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1470: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's job in '@group5' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -3217,9 +3215,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1480: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for his/her group in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec3}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) @@ -3230,35 +3228,35 @@ describe("1100: Jobs: Test New Job Model", () => { it("1490: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for another user's group in '@group5' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) .expect(TestData.AccessForbiddenStatusCode) .expect("Content-Type", /json/); }); - + it("1500: Adds a Status update to a job as a user from UPDATE_JOB_GROUPS for anonymous user's group in '@group5' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) .expect(TestData.AccessForbiddenStatusCode) .expect("Content-Type", /json/); }); - + it("1510: Adds a Status update to a job as user5.1 for his/her job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3269,9 +3267,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1520: Adds a Status update to a job as user5.1 for another user's job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec2}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3282,9 +3280,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1530: Adds a Status update to a job as user5.1 for his/her group in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3295,9 +3293,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1540: Adds a Status update to a job as user5.1 for another user's group in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3308,9 +3306,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1550: Adds a Status update to a job as user5.1 for anonymous user's group in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec6}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) @@ -3321,23 +3319,23 @@ describe("1100: Jobs: Test New Job Model", () => { it("1560: Adds a Status update to a job as user5.2 for his/her job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec7}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser52}` }) .expect(TestData.SuccessfulPatchStatusCode) .expect("Content-Type", /json/); }); - + it("1570: Adds a Status update to a job as user5.2 for user's 5.1 in same group job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser52}` }) @@ -3348,9 +3346,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1580: Adds a Status update to a job as user5.2 for another user in his/her group job in '@group5' configuration", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec5}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser52}` }) @@ -3361,9 +3359,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1590: Adds a Status update to a job as user3 for his/her job in '@group5' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec8}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser3}` }) @@ -3374,9 +3372,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1600: Adds a Status update to a job as user3 for user's 5.1 job in '@group5' configuration, which should fail as forbidden", async () => { return request(appUrl) .patch(`/api/v3/Jobs/${encodedJobIdGroupSpec4}`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser3}` }) @@ -3387,9 +3385,9 @@ describe("1100: Jobs: Test New Job Model", () => { it("1610: Adds a status update to a job as a user from ADMIN_GROUPS for his/her job in '#all' configuration with non-existing jobId, which should fail as bad request", async () => { return request(appUrl) .patch(`/api/v3/Jobs/badJobId`) - .send({ - statusCode: "update status of a job", - statusMessage: "job finished/blocked/etc", + .send({ + statusCode: "update status of a job", + statusMessage: "job finished/blocked/etc", }) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -3414,7 +3412,7 @@ describe("1100: Jobs: Test New Job Model", () => { const query = { where:{ createdBy: "admin" }}; return request(appUrl) .get(`/api/v3/Jobs/`) - .send({}) + .send({}) .query("filter=" + encodeURIComponent(JSON.stringify(query))) .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) @@ -3568,7 +3566,7 @@ describe("1100: Jobs: Test New Job Model", () => { res.body.should.be.an("array").to.have.lengthOf(2); }); }); - + it("1740: Access jobs as unauthenticated user, which should be forbidden", async () => { return request(appUrl) .get(`/api/v3/Jobs/`) @@ -3584,7 +3582,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) .expect(TestData.SuccessfulPatchStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.have.property("ownerUser").and.be.equal("admin"); }); @@ -3596,7 +3594,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) .expect(TestData.SuccessfulPatchStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.have.property("ownerUser").and.be.equal("user1"); }); @@ -3608,7 +3606,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) .expect(TestData.SuccessfulPatchStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); res.body.should.have.property("ownerGroup").and.be.equal("group1"); @@ -3621,7 +3619,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) .expect(TestData.SuccessfulPatchStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3633,7 +3631,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) .expect(TestData.AccessForbiddenStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3645,7 +3643,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) .expect(TestData.SuccessfulPatchStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.have.property("ownerUser").and.be.equal("user1"); res.body.should.have.property("ownerGroup").and.be.equal("group1"); @@ -3658,7 +3656,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenAdmin}` }) .expect(TestData.SuccessfulPatchStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); res.body.should.have.property("ownerGroup").and.be.equal("group1"); @@ -3671,7 +3669,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) .expect(TestData.AccessForbiddenStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3683,7 +3681,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser1}` }) .expect(TestData.AccessForbiddenStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3695,7 +3693,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) .expect(TestData.AccessForbiddenStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3707,7 +3705,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) .expect(TestData.AccessForbiddenStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3719,7 +3717,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) .expect(TestData.SuccessfulPatchStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.have.property("ownerUser").and.be.equal('user5.1'); res.body.should.have.property("ownerGroup").and.be.equal("group5"); @@ -3732,7 +3730,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) .expect(TestData.AccessForbiddenStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3744,7 +3742,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) .expect(TestData.AccessForbiddenStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3756,7 +3754,7 @@ describe("1100: Jobs: Test New Job Model", () => { .set("Accept", "application/json") .set({ Authorization: `Bearer ${accessTokenUser51}` }) .expect(TestData.AccessForbiddenStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3767,7 +3765,7 @@ describe("1100: Jobs: Test New Job Model", () => { .get(`/api/v3/Jobs/${encodedJobIdUser6}`) .set("Accept", "application/json") .expect(TestData.AccessForbiddenStatusCode) - .expect("Content-Type", /json/) + .expect("Content-Type", /json/) .then((res) => { res.body.should.not.have.property("ownerUser"); }); @@ -3829,6 +3827,101 @@ describe("1100: Jobs: Test New Job Model", () => { .then((res) => { res.body.should.be.an("array").to.have.lengthOf(59); }); - }); + }); + + it("1970: validation fails without required parameters", async () => { + const newDataset = { + ...jobValidate, + jobParams: { + optionalParam: false, + }, + }; + + return request(appUrl) + .post("/api/v3/Jobs") + .send(newDataset) + .set("Accept", "application/json") + .set({ Authorization: `Bearer ${accessTokenAdmin}` }) + .expect(TestData.BadRequestStatusCode) + .expect("Content-Type", /json/) + .then((res) => { + res.body.should.not.have.property("type") + res.body.should.have.property("message").and.be.equal("Invalid request. Requires 'jobParams.requiredParam'"); + }); + }); + + + it("1980: validation succeeds with the required parameter", async () => { + const newDataset = { + type: "validate", + jobParams: { + requiredParam: false, + }, + }; + + return request(appUrl) + .post("/api/v3/Jobs") + .send(newDataset) + .set("Accept", "application/json") + .set({ Authorization: `Bearer ${accessTokenAdmin}` }) + .expect(TestData.EntryCreatedStatusCode) + .expect("Content-Type", /json/) + .then((res) => { + res.body.should.have.property("type").and.equal("validate"); + res.body.should.have.property("createdBy").and.equal("admin"); + res.body.should.have.property("jobParams").that.deep.equals({requiredParam: false}); + + jobIdValidate1 = res.body["id"]; + encodedJobIdValidate1 = encodeURIComponent(jobIdValidate1); + }); + }); + + it("1990: updating fails without the required parameter", async () => { + const update = { + statusCode: "finished", + statusMessage: "done", + jobResultObject: { + optionalParam: true + } + }; + + return request(appUrl) + .patch(`/api/v3/Jobs/${encodedJobIdValidate1}`) + .send(update) + .set("Accept", "application/json") + .set({ Authorization: `Bearer ${accessTokenAdmin}` }) + .expect(TestData.BadRequestStatusCode) + .expect("Content-Type", /json/) + .then((res) => { + res.body.should.not.have.property("type") + res.body.should.have.property("message").and.be.equal("Invalid request. Requires 'jobResultObject.requiredParam'"); + }); + + }); + + it("2000: updating succeeds with the required parameter", async () => { + const update = { + statusCode: "finished", + statusMessage: "done", + jobResultObject: { + requiredParam: true + } + }; + + return request(appUrl) + .patch(`/api/v3/Jobs/${encodedJobIdValidate1}`) + .send(update) + .set("Accept", "application/json") + .set({ Authorization: `Bearer ${accessTokenAdmin}` }) + .expect(TestData.SuccessfulPatchStatusCode) + .expect("Content-Type", /json/) + .then((res) => { + res.body.should.have.property("type").and.equal("validate"); + res.body.should.have.property("createdBy").and.equal("admin"); + res.body.should.have.property("jobParams").that.deep.equals({requiredParam: false}); + res.body.should.have.property("jobResultObject").that.deep.equals({requiredParam: true}); + }); + }); + }); diff --git a/test/TestData.js b/test/TestData.js index 538f657bf..1f135e7f6 100644 --- a/test/TestData.js +++ b/test/TestData.js @@ -694,62 +694,6 @@ const TestData = { ], }, - ArchiveJob: { - emailJobInitiator: "scicatarchivemanger@psi.ch", - type: "archive", - jobStatusMessage: "jobForwarded", - datasetList: [ - { - pid: "dummy", - files: [], - }, - { - pid: "dummy", - files: [], - }, - ], - jobResultObject: { - status: "okay", - message: "All systems okay", - }, - }, - - RetrieveJob: { - emailJobInitiator: "scicatarchivemanger@psi.ch", - type: "retrieve", - jobStatusMessage: "jobForwarded", - datasetList: [ - { - pid: "dummy", - files: [], - }, - { - pid: "dummy", - files: [], - }, - ], - jobResultObject: { - status: "okay", - message: "All systems okay", - }, - }, - - PublicJob: { - emailJobInitiator: "firstname.lastname@gmail.com", - type: "public", - jobStatusMessage: "jobSubmitted", - datasetList: [ - { - pid: "dummy", - files: [], - }, - { - pid: "dummy", - files: [], - }, - ], - }, - PublishedData: { creator: ["ESS"], publisher: "ESS", diff --git a/test/config/jobconfig.json b/test/config/jobconfig.json index 146043018..811729b04 100644 --- a/test/config/jobconfig.json +++ b/test/config/jobconfig.json @@ -68,6 +68,27 @@ "statusUpdate": { "auth": "@group5" } + }, + { + "jobType": "validate", + "create": { + "auth": "admin", + "actions": [ + { + "actionType": "validate", + "required": ["jobParams.requiredParam"] + } + ] + }, + "statusUpdate": { + "auth": "admin", + "actions": [ + { + "actionType": "validate", + "required": ["jobResultObject.requiredParam"] + } + ] + } } ] -} \ No newline at end of file +}