@@ -14,120 +14,91 @@ import io.mockk.mockk
1414import io.mockk.verify
1515import io.openapiparser.OpenApiSchemas.OPENAPI_SCHEMA_30_ID
1616import io.openapiparser.OpenApiSchemas.OPENAPI_SCHEMA_31_ID
17+ import io.openapiparser.support.ApiBuilder
18+ import io.openapiprocessor.jackson.JacksonConverter
19+ import io.openapiprocessor.jsonschema.reader.UriReader
1720import io.openapiprocessor.jsonschema.schema.*
21+ import io.openapiprocessor.jsonschema.support.Uris
1822import io.openapiprocessor.jsonschema.support.Uris.emptyUri
1923import io.openapiprocessor.jsonschema.validator.Validator
2024import io.openapiprocessor.jsonschema.validator.steps.ValidationStep
25+ import java.net.URI
2126import io.openapiparser.model.v30.OpenApi as OpenApi30
2227import io.openapiparser.model.v31.OpenApi as OpenApi31
2328
2429class OpenApiResultSpec : StringSpec ({
2530
2631 " should have version 30" {
27- val ctx = mockk<Context >()
28- val result = OpenApiResult30 (ctx, Bucket .empty())
32+ val result = OpenApiResult30 (mockk<Context >(), Bucket .empty(), DocumentStore ())
2933
3034 result.version shouldBe OpenApiResult .Version .V30
3135 }
3236
3337 " should return api 30" {
34- val ctx = mockk<Context >()
35- val result = OpenApiResult30 (ctx, Bucket .empty())
38+ val result = OpenApiResult30 (mockk<Context >(), Bucket .empty(), DocumentStore ())
3639
3740 result.getModel(OpenApi30 ::class.java).shouldBeInstanceOf<OpenApi30 >()
3841 }
3942
4043 " should throw if model type does not match api version 30" {
41- val ctx = mockk<Context >()
42- val result = OpenApiResult30 (ctx, Bucket .empty())
44+ val result = OpenApiResult30 (mockk<Context >(), Bucket .empty(), DocumentStore ())
4345
4446 shouldThrow<IllegalArgumentException > {
4547 result.getModel(OpenApi31 ::class.java)
4648 }
4749 }
4850
4951 " should have version 31" {
50- val ctx = mockk<Context >()
51- val result = OpenApiResult31 (ctx, Bucket .empty())
52+ val result = OpenApiResult31 (mockk<Context >(), Bucket .empty(), DocumentStore ())
5253
5354 result.version shouldBe OpenApiResult .Version .V31
5455 }
5556
5657 " should throw if model type does not match api version 31" {
57- val ctx = mockk<Context >()
58- val result = OpenApiResult31 (ctx, Bucket .empty())
58+ val result = OpenApiResult31 (mockk<Context >(), Bucket .empty(), DocumentStore ())
5959
6060 shouldThrow<IllegalArgumentException > {
6161 result.getModel(OpenApi30 ::class.java)
6262 }
6363 }
6464
6565 " should return api 31" {
66- val ctx = mockk<Context >()
67- val result = OpenApiResult31 (ctx, Bucket .empty())
66+ val result = OpenApiResult31 (mockk<Context >(), Bucket .empty(), DocumentStore ())
6867
6968 result.getModel(OpenApi31 ::class.java).shouldBeInstanceOf<OpenApi31 >()
7069 }
7170
72- // todo uhhh
73- " should validate api 30" .config(enabled = false) {
74- val sctx = mockk<JsonSchemaContext >()
75- val document = emptyMap<String , Any >()
76- val scope = Scope (
77- emptyUri(),
78- emptyUri(),
79- SchemaVersion .Draft4
80- )
81- val bucket = Bucket (scope, "/unused", document)
82- val schema = JsonSchemaBoolean (true, sctx)
83-
84- val jic = mockk<JsonInstanceContext >()
85- val ctx = mockk<Context >()
86- every { ctx.instanceContext } returns jic
87-
88- val store = mockk<SchemaStore >(relaxed = true)
89- every { store.getSchema(OPENAPI_SCHEMA_30_ID , SchemaVersion .Draft4 ) } returns schema
90-
91- val validator = mockk<Validator >()
92- val step = mockk<ValidationStep >()
93- every { validator.validate(any(), any()) } returns step
94-
95- // when
96- val result = OpenApiResult30 (ctx, bucket)
97- result.validate(validator, store)
98-
99- // then
100- verify { validator.validate(schema, any()) }
71+ " should validate api 30" {
72+ val parser = ApiBuilder ()
73+ .withApi("""
74+ openapi: 3.0.3
75+ bad: property
76+ """.trimIndent())
77+ .buildParser()
78+
79+ val result = parser.parse(emptyUri())
80+
81+ val schemaStore = SchemaStore (DocumentLoader (UriReader (), JacksonConverter ()))
82+ val validator = Validator ()
83+
84+ val valid = result.validate(validator, schemaStore)
85+ valid.shouldBe(false)
10186 }
10287
103- // todo fix json schema version
104- " should validate api 31" .config(enabled = false) {
105- val sctx = mockk<JsonSchemaContext >()
106- val document = emptyMap<String , Any >()
107- val scope = Scope (
108- emptyUri(),
109- emptyUri(),
110- SchemaVersion .Draft201909
111- )
112- val bucket = Bucket (scope, "/unused", document)
113- val schema = JsonSchemaBoolean (true, sctx)
114-
115- val jic = mockk<JsonInstanceContext >()
116- val ctx = mockk<Context >()
117- every { ctx.instanceContext } returns jic
118-
119- val store = mockk<SchemaStore >()
120- every { store.getSchema(OPENAPI_SCHEMA_31_ID , SchemaVersion .Draft201909 ) } returns schema
121-
122- val validator = mockk<Validator >()
123- val step = mockk<ValidationStep >()
124- every { validator.validate(any(), any()) } returns step
125-
126- // when
127- val result = OpenApiResult31 (ctx, bucket)
128- result.validate(validator, store)
129-
130- // then
131- verify { validator.validate(schema, any()) }
88+ " should validate api 31" {
89+ val parser = ApiBuilder ()
90+ .withApi("""
91+ openapi: 3.1.0
92+ bad: property
93+ """.trimIndent())
94+ .buildParser()
95+
96+ val result = parser.parse(emptyUri())
97+
98+ val schemaStore = SchemaStore (DocumentLoader (UriReader (), JacksonConverter ()))
99+ val validator = Validator ()
100+
101+ val valid = result.validate(validator, schemaStore)
102+ valid.shouldBe(false)
132103 }
133104})
0 commit comments