Skip to content

Commit c2a11e5

Browse files
committed
Finished input validation for company application search
1 parent 9c75278 commit c2a11e5

File tree

7 files changed

+503
-385
lines changed

7 files changed

+503
-385
lines changed

src/api/middleware/validators/application.js

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ export const reject = useExpressValidators([
6060
.withMessage(ValidationReasons.TOO_SHORT(CompanyApplicationConstants.rejectReason.min_length)),
6161
]);
6262

63+
const isAfterSubmissionDateFrom = (submissionDateTo, { req }) => {
64+
65+
const { submissionDateFrom } = req.body;
66+
67+
return submissionDateFrom <= submissionDateTo;
68+
};
69+
6370
const sortByParamValidator = (val) => {
6471

6572
const regex = /^(\w+(:(desc|asc))?)(,\w+(:(desc|asc))?)*$/;
@@ -84,31 +91,38 @@ const parseSortByField = (val) => val.split(",");
8491
export const search = useExpressValidators([
8592
query("limit", ValidationReasons.DEFAULT)
8693
.optional()
87-
.isInt({ min: 1, max: MAX_LIMIT_RESULTS })
88-
.withMessage(ValidationReasons.MAX(MAX_LIMIT_RESULTS)),
94+
.isInt().withMessage(ValidationReasons.INT).bail()
95+
.toInt()
96+
.isInt({ min: 1 }).withMessage(ValidationReasons.MIN(1)).bail()
97+
.isInt({ max: MAX_LIMIT_RESULTS }).withMessage(ValidationReasons.MAX(MAX_LIMIT_RESULTS)).bail()
98+
.toInt(),
8999
query("offset", ValidationReasons.DEFAULT)
90100
.optional()
91-
.isInt({ min: 0 })
92-
.withMessage(ValidationReasons.MIN(0)),
101+
.isInt().withMessage(ValidationReasons.INT).bail()
102+
.toInt()
103+
.isInt({ min: 0 }).withMessage(ValidationReasons.MIN(0)).bail()
104+
.toInt(),
93105
query("companyName", ValidationReasons.DEFAULT)
94106
.optional()
95-
.isString().withMessage(ValidationReasons.STRING),
107+
.isString().withMessage(ValidationReasons.STRING).bail(),
96108
query("state", ValidationReasons.DEFAULT)
97109
.optional()
98-
.customSanitizer(ensureArray)
99110
.isArray().withMessage(ValidationReasons.ARRAY).bail()
111+
.customSanitizer(ensureArray)
100112
.custom(valuesInSet(Object.keys(ApplicationStatus))),
101113
query("submissionDateFrom", ValidationReasons.DEFAULT)
102114
.optional()
103-
.toDate()
104-
.isISO8601().withMessage(ValidationReasons.DATE),
115+
.isISO8601().withMessage(ValidationReasons.DATE).bail()
116+
.toDate(),
105117
query("submissionDateTo", ValidationReasons.DEFAULT)
106118
.optional()
119+
.isISO8601().withMessage(ValidationReasons.DATE).bail()
107120
.toDate()
108-
.isISO8601().withMessage(ValidationReasons.DATE),
121+
.if((submissionDateTo, { req }) => req.query.submissionDateFrom !== undefined)
122+
.custom(isAfterSubmissionDateFrom).withMessage(ValidationReasons.MUST_BE_AFTER("submissionDateFrom")),
109123
query("sortBy", ValidationReasons.DEFAULT)
110124
.optional()
111-
.isString().withMessage(ValidationReasons.STRING)
125+
.isString().withMessage(ValidationReasons.STRING).bail()
112126
.custom(sortByParamValidator)
113127
.customSanitizer(parseSortByField),
114128
]);

src/api/middleware/validators/offer.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ export const create = useExpressValidators([
8080
.custom(publishEndDateAfterPublishDate)
8181
.custom(publishEndDateLimit),
8282

83-
8483
body("jobMinDuration", ValidationReasons.DEFAULT)
8584
.exists().withMessage(ValidationReasons.REQUIRED).bail()
8685
.isInt().withMessage(ValidationReasons.INT),
@@ -119,7 +118,7 @@ export const create = useExpressValidators([
119118
body("jobType", ValidationReasons.DEFAULT)
120119
.exists().withMessage(ValidationReasons.REQUIRED).bail()
121120
.isString().withMessage(ValidationReasons.STRING).bail()
122-
.isIn(JobTypes).withMessage(ValidationReasons.IN_ARRAY(JobTypes)),
121+
.isIn(JobTypes).withMessage((value) => ValidationReasons.IN_ARRAY(JobTypes, value)),
123122

124123
body("fields", ValidationReasons.DEFAULT)
125124
.exists().withMessage(ValidationReasons.REQUIRED).bail()
@@ -388,7 +387,7 @@ export const edit = useExpressValidators([
388387
body("jobType", ValidationReasons.DEFAULT)
389388
.optional()
390389
.isString().withMessage(ValidationReasons.STRING).bail()
391-
.isIn(JobTypes).withMessage(ValidationReasons.IN_ARRAY(JobTypes)),
390+
.isIn(JobTypes).withMessage((value) => ValidationReasons.IN_ARRAY(JobTypes, value)),
392391

393392
body("fields", ValidationReasons.DEFAULT)
394393
.optional()
@@ -495,7 +494,7 @@ export const get = useExpressValidators([
495494
query("jobType")
496495
.optional()
497496
.isString().withMessage(ValidationReasons.STRING).bail()
498-
.isIn(JobTypes).withMessage(ValidationReasons.IN_ARRAY(JobTypes)),
497+
.isIn(JobTypes).withMessage((value) => ValidationReasons.IN_ARRAY(JobTypes, value)),
499498

500499
query("jobMinDuration", ValidationReasons.DEFAULT)
501500
.optional()
@@ -522,7 +521,7 @@ export const get = useExpressValidators([
522521
query("sortBy", ValidationReasons.DEFAULT)
523522
.optional()
524523
.isString().withMessage(ValidationReasons.STRING).bail()
525-
.isIn(OfferConstants.SortableFields).withMessage(ValidationReasons.IN_ARRAY(OfferConstants.SortableFields)),
524+
.isIn(OfferConstants.SortableFields).withMessage((value) => ValidationReasons.IN_ARRAY(OfferConstants.SortableFields, value)),
526525

527526
query("descending", ValidationReasons.DEFAULT)
528527
.optional()
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
test("should return true", () => {
2+
expect(true).toBe(true);
3+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
test("should return true", () => {
2+
expect(true).toBe(true);
3+
});

0 commit comments

Comments
 (0)