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
|
package openapi3
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestIssue289(t *testing.T) {
spec := []byte(`
components:
schemas:
Server:
properties:
address:
oneOf:
- $ref: "#/components/schemas/ip-address"
- $ref: "#/components/schemas/domain-name"
name:
type: string
type: object
domain-name:
maxLength: 10
minLength: 5
pattern: "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."
type: string
ip-address:
pattern: "^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$"
type: string
openapi: "3.0.1"
info:
version: 1.0.0
title: title
paths: {}
`[1:])
loader := NewLoader()
doc, err := loader.LoadFromData(spec)
require.NoError(t, err)
err = doc.Validate(loader.Context)
require.NoError(t, err)
err = doc.Components.Schemas["Server"].Value.VisitJSON(map[string]interface{}{
"name": "kin-openapi",
"address": "127.0.0.1",
})
require.ErrorIs(t, err, ErrOneOfConflict)
}
|