1
1
import { readdirSync , readFileSync } from "node:fs" ;
2
2
import YAML from "yaml" ;
3
3
import { registerSchema , validate , setMetaSchemaOutputFormat } from "@hyperjump/json-schema/openapi-3-1" ;
4
- import { BASIC , addKeyword , defineVocabulary } from "@hyperjump/json-schema/experimental" ;
4
+ import { BASIC , defineVocabulary } from "@hyperjump/json-schema/experimental" ;
5
5
import { describe , test , expect } from "vitest" ;
6
6
7
7
import contentTypeParser from "content-type" ;
@@ -26,63 +26,20 @@ const parseYamlFromFile = (filePath) => {
26
26
27
27
setMetaSchemaOutputFormat ( BASIC ) ;
28
28
29
- addKeyword ( {
30
- id : "https://spec.openapis.org/oas/schema/vocab/keyword/discriminator" ,
31
- interpret : ( discriminator , instance , context ) => {
32
- return true ;
33
- } ,
34
- /* discriminator is not exactly an annotation, but it's not allowed
35
- * to change the validation outcome (hence returing true from interopret())
36
- * and for our purposes of testing, this is sufficient.
37
- */
38
- annotation : ( discriminator ) => {
39
- return discriminator ;
40
- } ,
41
- } ) ;
42
-
43
- addKeyword ( {
44
- id : "https://spec.openapis.org/oas/schema/vocab/keyword/example" ,
45
- interpret : ( example , instance , context ) => {
46
- return true ;
47
- } ,
48
- annotation : ( example ) => {
49
- return example ;
50
- } ,
51
- } ) ;
29
+ const meta = parseYamlFromFile ( "./src/schemas/validation/meta.yaml" ) ;
30
+ const oasBaseVocab = Object . keys ( meta . $vocabulary ) [ 0 ] ;
52
31
53
- addKeyword ( {
54
- id : "https://spec.openapis.org/oas/schema/vocab/keyword/externalDocs" ,
55
- interpret : ( externalDocs , instance , context ) => {
56
- return true ;
57
- } ,
58
- annotation : ( externalDocs ) => {
59
- return externalDocs ;
60
- } ,
32
+ defineVocabulary ( oasBaseVocab , {
33
+ "discriminator" : "https://spec.openapis.org/oas/3.0/keyword/discriminator" ,
34
+ "example" : "https://spec.openapis.org/oas/3.0/keyword/example" ,
35
+ "externalDocs" : "https://spec.openapis.org/oas/3.0/keyword/externalDocs" ,
36
+ "xml" : "https://spec.openapis.org/oas/3.0/keyword/xml"
61
37
} ) ;
62
38
63
- addKeyword ( {
64
- id : "https://spec.openapis.org/oas/schema/vocab/keyword/xml" ,
65
- interpret : ( xml , instance , context ) => {
66
- return true ;
67
- } ,
68
- annotation : ( xml ) => {
69
- return xml ;
70
- } ,
71
- } ) ;
72
-
73
- defineVocabulary (
74
- "https://spec.openapis.org/oas/3.1/vocab/base" ,
75
- {
76
- "discriminator" : "https://spec.openapis.org/oas/schema/vocab/keyword/discriminator" ,
77
- "example" : "https://spec.openapis.org/oas/schema/vocab/keyword/example" ,
78
- "externalDocs" : "https://spec.openapis.org/oas/schema/vocab/keyword/externalDocs" ,
79
- "xml" : "https://spec.openapis.org/oas/schema/vocab/keyword/xml" ,
80
- } ,
81
- ) ;
82
-
83
- registerSchema ( parseYamlFromFile ( "./src/schemas/validation/meta.yaml" ) ) ;
39
+ registerSchema ( meta ) ;
84
40
registerSchema ( parseYamlFromFile ( "./src/schemas/validation/dialect.yaml" ) ) ;
85
41
registerSchema ( parseYamlFromFile ( "./src/schemas/validation/schema.yaml" ) ) ;
42
+
86
43
const validateOpenApi = await validate ( "./src/schemas/validation/schema-base.yaml" ) ;
87
44
const fixtures = './tests/schema' ;
88
45
0 commit comments