Skip to content

Commit 06217c5

Browse files
author
Thomas Osterbind
committed
feat(jsonschema format): added iri, iri-ref, regex format validators
1 parent 2498fdc commit 06217c5

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

keywords_format.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,14 +199,14 @@ func isValidIPv6(ipv6 string) error {
199199
// according to [RFC3987].
200200
// https://tools.ietf.org/html/rfc3987
201201
func isValidIriRef(iriRef string) error {
202-
return nil
202+
return isValidURIRef(iriRef)
203203
}
204204

205205
// A string instance is a valid against "iri" if it is a valid IRI,
206206
// according to [RFC3987].
207207
// https://tools.ietf.org/html/rfc3987
208208
func isValidIri(iri string) error {
209-
return nil
209+
return isValidURI(iri)
210210
}
211211

212212
// A string instance is a valid against "json-pointer" if it is a
@@ -240,6 +240,9 @@ func isValidJSONPointer(jsonPointer string) error {
240240
// http://json-schema.org/latest/json-schema-validation.html#regexInterop
241241
// https://tools.ietf.org/html/rfc7159
242242
func isValidRegex(regex string) error {
243+
if _, err := regexp.Compile(regex); err != nil {
244+
return fmt.Errorf("invalid regex expression")
245+
}
243246
return nil
244247
}
245248

schema_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ func TestDraft7(t *testing.T) {
286286
"testdata/draft7/optional/format/date-time.json",
287287
"testdata/draft7/optional/format/hostname.json",
288288
"testdata/draft7/optional/format/ipv4.json",
289-
// "testdata/draft7/optional/format/iri.json",
289+
"testdata/draft7/optional/format/iri.json",
290290
"testdata/draft7/optional/format/relative-json-pointer.json",
291291
"testdata/draft7/optional/format/uri-template.json",
292292
"testdata/draft7/optional/format/date.json",
@@ -297,8 +297,8 @@ func TestDraft7(t *testing.T) {
297297
"testdata/draft7/optional/format/uri.json",
298298
"testdata/draft7/optional/format/email.json",
299299
"testdata/draft7/optional/format/idn-hostname.json",
300-
// "testdata/draft7/optional/format/iri-reference.json",
301-
// "testdata/draft7/optional/format/regex.json",
300+
"testdata/draft7/optional/format/iri-reference.json",
301+
"testdata/draft7/optional/format/regex.json",
302302
"testdata/draft7/optional/format/uri-reference.json",
303303
})
304304
}

0 commit comments

Comments
 (0)