Skip to content

Commit a3f923e

Browse files
authored
Merge pull request #3698 from shockey/heldersepu-master
Heldersepu master
2 parents 6a7e9d2 + 6b59707 commit a3f923e

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

src/core/utils.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,12 +500,25 @@ export const validateString = ( val ) => {
500500
}
501501
}
502502

503+
export const validateDateTime = (val) => {
504+
if (isNaN(Date.parse(val))) {
505+
return "Value must be a DateTime"
506+
}
507+
}
508+
509+
export const validateGuid = (val) => {
510+
if (!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}[)}]?$/.test(val)) {
511+
return "Value must be a Guid"
512+
}
513+
}
514+
503515
// validation of parameters before execute
504516
export const validateParam = (param, isXml) => {
505517
let errors = []
506518
let value = isXml && param.get("in") === "body" ? param.get("value_xml") : param.get("value")
507519
let required = param.get("required")
508520
let type = param.get("type")
521+
let format = param.get("format")
509522

510523
/*
511524
If the parameter is required OR the parameter has a value (meaning optional, but filled in)
@@ -528,7 +541,14 @@ export const validateParam = (param, isXml) => {
528541
}
529542

530543
if ( type === "string" ) {
531-
let err = validateString(value)
544+
let err
545+
if (format === "date-time") {
546+
err = validateDateTime(value)
547+
} else if (format === "uuid") {
548+
err = validateGuid(value)
549+
} else {
550+
err = validateString(value)
551+
}
532552
if (!err) return errors
533553
errors.push(err)
534554
} else if ( type === "boolean" ) {

test/core/utils.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-env mocha */
22
import expect from "expect"
33
import { fromJS, OrderedMap } from "immutable"
4-
import { mapToList, validateNumber, validateInteger, validateParam, validateFile, fromJSOrdered, getAcceptControllingResponse, createDeepLinkPath, escapeDeepLinkPath } from "core/utils"
4+
import { mapToList, validateDateTime, validateGuid, validateNumber, validateInteger, validateParam, validateFile, fromJSOrdered, getAcceptControllingResponse, createDeepLinkPath, escapeDeepLinkPath } from "core/utils"
55
import win from "core/window"
66

77
describe("utils", function() {
@@ -158,7 +158,7 @@ describe("utils", function() {
158158
})
159159
})
160160

161-
describe("validateFile", function() {
161+
describe("validateFile", function() {
162162
let errorMessage = "Value must be a file"
163163

164164
it("validates against objects which are instances of 'File'", function() {
@@ -171,6 +171,33 @@ describe("utils", function() {
171171
})
172172
})
173173

174+
describe("validateDateTime", function() {
175+
let errorMessage = "Value must be a DateTime"
176+
177+
it("doesn't return for valid dates", function() {
178+
expect(validateDateTime("Mon, 25 Dec 1995 13:30:00 +0430")).toBeFalsy()
179+
})
180+
181+
it("returns a message for invalid input'", function() {
182+
expect(validateDateTime(null)).toEqual(errorMessage)
183+
expect(validateDateTime("string")).toEqual(errorMessage)
184+
})
185+
})
186+
187+
describe("validateGuid", function() {
188+
let errorMessage = "Value must be a Guid"
189+
190+
it("doesn't return for valid guid", function() {
191+
expect(validateGuid("8ce4811e-cec5-4a29-891a-15d1917153c1")).toBeFalsy()
192+
expect(validateGuid("{8ce4811e-cec5-4a29-891a-15d1917153c1}")).toBeFalsy()
193+
})
194+
195+
it("returns a message for invalid input'", function() {
196+
expect(validateGuid(1)).toEqual(errorMessage)
197+
expect(validateGuid("string")).toEqual(errorMessage)
198+
})
199+
})
200+
174201
describe("validateParam", function() {
175202
let param = null
176203
let result = null

0 commit comments

Comments
 (0)