Skip to content
Snippets Groups Projects
Commit e64e983a authored by joel.vonderwe's avatar joel.vonderwe
Browse files

Correct boolean validator bug

parent dccb9be4
No related branches found
No related tags found
No related merge requests found
Pipeline #30112 passed
...@@ -6,6 +6,7 @@ import axios, { AxiosError } from 'axios'; ...@@ -6,6 +6,7 @@ import axios, { AxiosError } from 'axios';
import { StatusCodes } from 'http-status-codes'; import { StatusCodes } from 'http-status-codes';
import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode';
import SharedConfig from '../shared/config/SharedConfig'; import SharedConfig from '../shared/config/SharedConfig';
import * as https from 'https';
class GlobalHelper { class GlobalHelper {
...@@ -31,7 +32,13 @@ class GlobalHelper { ...@@ -31,7 +32,13 @@ class GlobalHelper {
async isSonarSupported(): Promise<boolean> { async isSonarSupported(): Promise<boolean> {
try { try {
const sonar = await axios.get(SharedConfig.sonar.url); // Use custom instance to allow self-signed certificates
const instance = axios.create({
httpsAgent: new https.Agent({
rejectUnauthorized: false
})
});
const sonar = await instance.get(SharedConfig.sonar.url);
return SharedConfig.sonar.enabled && sonar.status == 200; return SharedConfig.sonar.enabled && sonar.status == 200;
} catch ( error ) { } catch ( error ) {
return false; return false;
......
...@@ -30,23 +30,25 @@ import DojoModelsHelper from '../helpers/DojoModelsHelper'; ...@@ -30,23 +30,25 @@ import DojoModelsHelper from '../helpers/DojoModelsHelper';
class AssignmentRoutes implements RoutesManager { class AssignmentRoutes implements RoutesManager {
private readonly assignmentValidator: ExpressValidator.Schema = { private readonly assignmentValidator: ExpressValidator.Schema = {
name : { name : {
trim : true, trim : true,
notEmpty: true notEmpty: true
}, },
members : { members : {
trim : true, trim : true,
notEmpty : true, notEmpty : true,
customSanitizer: DojoValidators.jsonSanitizer customSanitizer: DojoValidators.jsonSanitizer
}, },
template: { template : {
trim : true, trim : true,
custom : DojoValidators.templateUrlValidator, custom : DojoValidators.templateUrlValidator,
customSanitizer: DojoValidators.templateUrlSanitizer customSanitizer: DojoValidators.templateUrlSanitizer
}, },
useSonar: { useSonar : {
notEmpty: true trim : true,
} notEmpty : true,
isBoolean: true,
},
}; };
private readonly assignmentAddCorrigeValidator: ExpressValidator.Schema = { private readonly assignmentAddCorrigeValidator: ExpressValidator.Schema = {
...@@ -88,12 +90,14 @@ class AssignmentRoutes implements RoutesManager { ...@@ -88,12 +90,14 @@ class AssignmentRoutes implements RoutesManager {
private async createAssignment(req: express.Request, res: express.Response) { private async createAssignment(req: express.Request, res: express.Response) {
const params: { const params: {
name: string, members: Array<GitlabUser>, template: string, useSonar: boolean name: string, members: Array<GitlabUser>, template: string, useSonar: string
} = req.body; } = req.body;
const useSonar = params.useSonar === 'true';
params.members = [ await req.session.profile.gitlabProfile.value, ...params.members ]; params.members = [ await req.session.profile.gitlabProfile.value, ...params.members ];
params.members = params.members.removeObjectDuplicates(gitlabUser => gitlabUser.id); params.members = params.members.removeObjectDuplicates(gitlabUser => gitlabUser.id);
if (params.useSonar && !(await GlobalHelper.isSonarSupported())) { if (useSonar && !(await GlobalHelper.isSonarSupported())) {
return req.session.sendResponse(res, StatusCodes.UNPROCESSABLE_ENTITY, {}, `Sonar integration is not supported`, DojoStatusCode.ASSIGNMENT_CREATION_SONAR_ERROR); return req.session.sendResponse(res, StatusCodes.UNPROCESSABLE_ENTITY, {}, `Sonar integration is not supported`, DojoStatusCode.ASSIGNMENT_CREATION_SONAR_ERROR);
} }
...@@ -154,7 +158,7 @@ class AssignmentRoutes implements RoutesManager { ...@@ -154,7 +158,7 @@ class AssignmentRoutes implements RoutesManager {
gitlabCreationInfo: repository as unknown as Prisma.JsonObject, gitlabCreationInfo: repository as unknown as Prisma.JsonObject,
gitlabLastInfo : repository as unknown as Prisma.JsonObject, gitlabLastInfo : repository as unknown as Prisma.JsonObject,
gitlabLastInfoDate: new Date(), gitlabLastInfoDate: new Date(),
useSonar : params.useSonar, useSonar : useSonar,
staff : { staff : {
connectOrCreate: [ ...params.members.map(gitlabUser => { connectOrCreate: [ ...params.members.map(gitlabUser => {
return { return {
......
...@@ -2,7 +2,7 @@ import { Express } from 'express-serve-static-core'; ...@@ -2,7 +2,7 @@ import { Express } from 'express-serve-static-core';
import express from 'express'; import express from 'express';
import { StatusCodes } from 'http-status-codes'; import { StatusCodes } from 'http-status-codes';
import RoutesManager from '../express/RoutesManager'; import RoutesManager from '../express/RoutesManager';
import SharedConfig from '../shared/config/SharedConfig'; import GlobalHelper from '../helpers/GlobalHelper';
class BaseRoutes implements RoutesManager { class BaseRoutes implements RoutesManager {
...@@ -22,7 +22,7 @@ class BaseRoutes implements RoutesManager { ...@@ -22,7 +22,7 @@ class BaseRoutes implements RoutesManager {
private async sonar(req: express.Request, res: express.Response) { private async sonar(req: express.Request, res: express.Response) {
const data = { const data = {
sonarEnabled: SharedConfig.useSonar sonarEnabled: await GlobalHelper.isSonarSupported()
}; };
return req.session.sendResponse(res, StatusCodes.OK, data); return req.session.sendResponse(res, StatusCodes.OK, data);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment