-
Notifications
You must be signed in to change notification settings - Fork 53
Expand file tree
/
Copy pathvalidator_32_test.go
More file actions
64 lines (56 loc) · 2.17 KB
/
Copy pathvalidator_32_test.go
File metadata and controls
64 lines (56 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Copyright 2023-2026 Princess Beef Heavy Industries, LLC / Dave Shanley
// SPDX-License-Identifier: MIT
package validator
import (
"os"
"testing"
"github.com/pb33f/libopenapi"
"github.com/pb33f/testify/assert"
"github.com/pb33f/testify/require"
"github.com/pb33f/libopenapi-validator/schema_validation"
)
func TestOpenAPI32DocumentValidationYAMLAndRootValidator(t *testing.T) {
specification, err := os.ReadFile("test_specs/valid_32.yaml")
require.NoError(t, err)
document, err := libopenapi.NewDocument(specification)
require.NoError(t, err)
valid, validationErrors := schema_validation.ValidateOpenAPIDocument(document)
require.True(t, valid, validationErrors)
require.Empty(t, validationErrors)
validator, constructionErrors := NewValidator(document)
require.Empty(t, constructionErrors)
t.Cleanup(validator.Release)
valid, validationErrors = validator.ValidateDocument()
require.True(t, valid, validationErrors)
require.Empty(t, validationErrors)
}
func TestOpenAPI32DocumentValidationJSON(t *testing.T) {
document, err := libopenapi.NewDocument([]byte(`{
"openapi": "3.2.0",
"$self": "https://example.com/openapi.json",
"info": {"title": "JSON 3.2", "version": "1.0.0"},
"paths": {
"/search": {
"query": {"responses": {"200": {"description": "ok"}}}
}
}
}`))
require.NoError(t, err)
valid, validationErrors := schema_validation.ValidateOpenAPIDocument(document)
require.True(t, valid, validationErrors)
require.Empty(t, validationErrors)
}
func TestOpenAPI32InvalidDocumentDiagnostics(t *testing.T) {
specification, err := os.ReadFile("test_specs/invalid_32.yaml")
require.NoError(t, err)
document, err := libopenapi.NewDocument(specification)
require.NoError(t, err)
valid, validationErrors := schema_validation.ValidateOpenAPIDocument(document)
assert.False(t, valid)
require.NotEmpty(t, validationErrors)
assert.Greater(t, validationErrors[0].SpecLine, 0)
assert.GreaterOrEqual(t, validationErrors[0].SpecCol, 0)
assert.NotEmpty(t, validationErrors[0].SchemaValidationErrors)
assert.Contains(t, validationErrors[0].SchemaValidationErrors[0].FieldPath, "info")
assert.NotEmpty(t, validationErrors[0].SchemaValidationErrors[0].ReferenceObject)
}