A massive test update to bring everything inlne with the new Buildable signature.

All tests in index and datamodel now pass. The rolodex fixes all the things.

Signed-off-by: quobix <dave@quobix.com>
This commit is contained in:
quobix
2023-10-23 18:18:44 -04:00
parent 8717b3cd33
commit 6e9db7f838
53 changed files with 1194 additions and 1069 deletions

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"fmt"
lowmodel "github.com/pb33f/libopenapi/datamodel/low"
lowbase "github.com/pb33f/libopenapi/datamodel/low/base"
@@ -70,7 +71,7 @@ email: buckaroo@pb33f.io
// build low
var lowContact lowbase.Contact
_ = lowmodel.BuildModel(cNode.Content[0], &lowContact)
_ = lowContact.Build(nil, cNode.Content[0], nil)
_ = lowContact.Build(context.Background(), nil, cNode.Content[0], nil)
// build high
highContact := NewContact(&lowContact)

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
lowbase "github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/pb33f/libopenapi/index"
@@ -116,7 +117,7 @@ func TestDynamicValue_MarshalYAMLInline(t *testing.T) {
_ = yaml.Unmarshal([]byte(ymlSchema), &node)
lowProxy := new(lowbase.SchemaProxy)
err := lowProxy.Build(nil, node.Content[0], idx)
err := lowProxy.Build(context.Background(), nil, node.Content[0], idx)
assert.NoError(t, err)
lowRef := low.NodeReference[*lowbase.SchemaProxy]{
@@ -160,7 +161,7 @@ func TestDynamicValue_MarshalYAMLInline_Error(t *testing.T) {
_ = yaml.Unmarshal([]byte(ymlSchema), &node)
lowProxy := new(lowbase.SchemaProxy)
err := lowProxy.Build(nil, node.Content[0], idx)
err := lowProxy.Build(context.Background(), nil, node.Content[0], idx)
assert.NoError(t, err)
lowRef := low.NodeReference[*lowbase.SchemaProxy]{

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"fmt"
lowmodel "github.com/pb33f/libopenapi/datamodel/low"
lowbase "github.com/pb33f/libopenapi/datamodel/low/base"
@@ -29,7 +30,7 @@ x-hack: code`
var lowExample lowbase.Example
_ = lowmodel.BuildModel(cNode.Content[0], &lowExample)
_ = lowExample.Build(&cNode, cNode.Content[0], nil)
_ = lowExample.Build(context.Background(), &cNode, cNode.Content[0], nil)
// build high
highExample := NewExample(&lowExample)
@@ -59,7 +60,7 @@ func TestExtractExamples(t *testing.T) {
var lowExample lowbase.Example
_ = lowmodel.BuildModel(cNode.Content[0], &lowExample)
_ = lowExample.Build(nil, cNode.Content[0], nil)
_ = lowExample.Build(context.Background(), nil, cNode.Content[0], nil)
examplesMap := make(map[lowmodel.KeyReference[string]]lowmodel.ValueReference[*lowbase.Example])
examplesMap[lowmodel.KeyReference[string]{
@@ -89,7 +90,7 @@ x-hack: code`
_ = lowmodel.BuildModel(node.Content[0], &lowExample)
// build out low-level example
_ = lowExample.Build(nil, node.Content[0], nil)
_ = lowExample.Build(context.Background(), nil, node.Content[0], nil)
// create a new high-level example
highExample := NewExample(&lowExample)

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"fmt"
lowmodel "github.com/pb33f/libopenapi/datamodel/low"
lowbase "github.com/pb33f/libopenapi/datamodel/low/base"
@@ -26,7 +27,7 @@ x-hack: code`
var lowExt lowbase.ExternalDoc
_ = lowmodel.BuildModel(cNode.Content[0], &lowExt)
_ = lowExt.Build(nil, cNode.Content[0], nil)
_ = lowExt.Build(context.Background(), nil, cNode.Content[0], nil)
highExt := NewExternalDoc(&lowExt)
@@ -61,7 +62,7 @@ x-hack: code`
_ = lowmodel.BuildModel(node.Content[0], &lowExt)
// build out low-level properties (like extensions)
_ = lowExt.Build(nil, node.Content[0], nil)
_ = lowExt.Build(context.Background(), nil, node.Content[0], nil)
// create new high-level ExternalDoc
highExt := NewExternalDoc(&lowExt)

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"fmt"
"testing"
@@ -32,7 +33,7 @@ x-cli-name: chicken cli`
var lowInfo lowbase.Info
_ = lowmodel.BuildModel(cNode.Content[0], &lowInfo)
_ = lowInfo.Build(nil, cNode.Content[0], nil)
_ = lowInfo.Build(context.Background(), nil, cNode.Content[0], nil)
highInfo := NewInfo(&lowInfo)
@@ -74,7 +75,7 @@ version: 1.2.3`
// build out the low-level model
var lowInfo lowbase.Info
_ = lowmodel.BuildModel(&node, &lowInfo)
_ = lowInfo.Build(nil, node.Content[0], nil)
_ = lowInfo.Build(context.Background(), nil, node.Content[0], nil)
// build the high level model
highInfo := NewInfo(&lowInfo)
@@ -97,7 +98,7 @@ url: https://opensource.org/licenses/MIT`
// build out the low-level model
var lowLicense lowbase.License
_ = lowmodel.BuildModel(node.Content[0], &lowLicense)
_ = lowLicense.Build(nil, node.Content[0], nil)
_ = lowLicense.Build(context.Background(), nil, node.Content[0], nil)
// build the high level model
highLicense := NewLicense(&lowLicense)
@@ -140,7 +141,7 @@ func TestInfo_Render(t *testing.T) {
// build low
var lowInfo lowbase.Info
_ = lowmodel.BuildModel(cNode.Content[0], &lowInfo)
_ = lowInfo.Build(nil, cNode.Content[0], nil)
_ = lowInfo.Build(context.Background(), nil, cNode.Content[0], nil)
// build high
highInfo := NewInfo(&lowInfo)
@@ -181,7 +182,7 @@ x-cake:
// build low
var lowInfo lowbase.Info
_ = lowmodel.BuildModel(cNode.Content[0], &lowInfo)
_ = lowInfo.Build(nil, cNode.Content[0], nil)
_ = lowInfo.Build(context.Background(), nil, cNode.Content[0], nil)
// build high
highInfo := NewInfo(&lowInfo)

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
lowmodel "github.com/pb33f/libopenapi/datamodel/low"
lowbase "github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/stretchr/testify/assert"
@@ -44,7 +45,7 @@ url: https://pb33f.io/not-real
// build low
var lowLicense lowbase.License
_ = lowmodel.BuildModel(cNode.Content[0], &lowLicense)
_ = lowLicense.Build(nil, cNode.Content[0], nil)
_ = lowLicense.Build(context.Background(), nil, cNode.Content[0], nil)
// build high
highLicense := NewLicense(&lowLicense)
@@ -92,7 +93,7 @@ func TestLicense_Render_IdentifierAndURL_Error(t *testing.T) {
// build low
var lowLicense lowbase.License
_ = lowmodel.BuildModel(cNode.Content[0], &lowLicense)
err := lowLicense.Build(nil, cNode.Content[0], nil)
err := lowLicense.Build(context.Background(), nil, cNode.Content[0], nil)
assert.Error(t, err)
}

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
lowbase "github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/pb33f/libopenapi/index"
@@ -40,7 +41,7 @@ func TestSchemaProxy_MarshalYAML(t *testing.T) {
_ = yaml.Unmarshal([]byte(ymlSchema), &node)
lowProxy := new(lowbase.SchemaProxy)
err := lowProxy.Build(nil, node.Content[0], idx)
err := lowProxy.Build(context.Background(), nil, node.Content[0], idx)
assert.NoError(t, err)
lowRef := low.NodeReference[*lowbase.SchemaProxy]{

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"fmt"
"github.com/pb33f/libopenapi/datamodel"
"strings"
@@ -50,7 +51,7 @@ func TestNewSchemaProxy(t *testing.T) {
_ = yaml.Unmarshal([]byte(yml), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], idx)
err := sp.Build(context.Background(), nil, compNode.Content[0], idx)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -91,7 +92,7 @@ func TestNewSchemaProxyRender(t *testing.T) {
_ = yaml.Unmarshal([]byte(yml), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], idx)
err := sp.Build(context.Background(), nil, compNode.Content[0], idx)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -270,7 +271,7 @@ $anchor: anchor`
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -344,7 +345,7 @@ func TestSchemaObjectWithAllOfSequenceOrder(t *testing.T) {
}
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -481,7 +482,7 @@ required: [cake, fish]`
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -537,7 +538,7 @@ func TestSchemaProxy_GoLow(t *testing.T) {
_ = yaml.Unmarshal([]byte(ymlSchema), &node)
lowProxy := new(lowbase.SchemaProxy)
err := lowProxy.Build(nil, node.Content[0], idx)
err := lowProxy.Build(context.Background(), nil, node.Content[0], idx)
assert.NoError(t, err)
lowRef := low.NodeReference[*lowbase.SchemaProxy]{
@@ -562,7 +563,7 @@ func getHighSchema(t *testing.T, yml string) *Schema {
// build out the low-level model
var lowSchema lowbase.Schema
assert.NoError(t, low.BuildModel(node.Content[0], &lowSchema))
assert.NoError(t, lowSchema.Build(node.Content[0], nil))
assert.NoError(t, lowSchema.Build(context.Background(), node.Content[0], nil))
// build the high level model
return NewSchema(&lowSchema)
@@ -723,7 +724,7 @@ properties:
// build out the low-level model
var lowSchema lowbase.Schema
_ = low.BuildModel(node.Content[0], &lowSchema)
_ = lowSchema.Build(node.Content[0], nil)
_ = lowSchema.Build(context.Background(), node.Content[0], nil)
// build the high level model
highSchema := NewSchema(&lowSchema)
@@ -752,7 +753,7 @@ properties:
// build out the low-level model
var lowSchema lowbase.SchemaProxy
_ = low.BuildModel(node.Content[0], &lowSchema)
_ = lowSchema.Build(nil, node.Content[0], nil)
_ = lowSchema.Build(context.Background(), nil, node.Content[0], nil)
// build the high level schema proxy
highSchema := NewSchemaProxy(&low.NodeReference[*lowbase.SchemaProxy]{
@@ -812,7 +813,7 @@ allOf:
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -875,7 +876,7 @@ items:
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -937,7 +938,7 @@ xml:
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -966,7 +967,7 @@ func TestNewSchemaProxy_RenderSchemaCheckDiscriminatorMappingOrder(t *testing.T)
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -989,7 +990,7 @@ func TestNewSchemaProxy_CheckDefaultBooleanFalse(t *testing.T) {
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -1012,7 +1013,7 @@ func TestNewSchemaProxy_RenderAdditionalPropertiesFalse(t *testing.T) {
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -1056,7 +1057,7 @@ components:
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], idx)
err := sp.Build(context.Background(), nil, compNode.Content[0], idx)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -1108,7 +1109,7 @@ components:
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], idx)
err := sp.Build(context.Background(), nil, compNode.Content[0], idx)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -1177,7 +1178,7 @@ properties:
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -1200,7 +1201,7 @@ func TestSchema_RenderProxyWithConfig_3(t *testing.T) {
_ = yaml.Unmarshal([]byte(testSpec), &compNode)
sp := new(lowbase.SchemaProxy)
err := sp.Build(nil, compNode.Content[0], nil)
err := sp.Build(context.Background(), nil, compNode.Content[0], nil)
assert.NoError(t, err)
config := index.CreateOpenAPIIndexConfig()
@@ -1234,7 +1235,7 @@ func TestSchema_RenderProxyWithConfig_Corrected_31(t *testing.T) {
}
idx := index.NewSpecIndexWithConfig(compNode.Content[0], config)
err := sp.Build(nil, compNode.Content[0], idx)
err := sp.Build(context.Background(), nil, compNode.Content[0], idx)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{
@@ -1268,7 +1269,7 @@ func TestSchema_RenderProxyWithConfig_Corrected_3(t *testing.T) {
}
idx := index.NewSpecIndexWithConfig(compNode.Content[0], config)
err := sp.Build(nil, compNode.Content[0], idx)
err := sp.Build(context.Background(), nil, compNode.Content[0], idx)
assert.NoError(t, err)
lowproxy := low.NodeReference[*lowbase.SchemaProxy]{

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
lowmodel "github.com/pb33f/libopenapi/datamodel/low"
lowbase "github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/stretchr/testify/assert"
@@ -28,7 +29,7 @@ cake:
var lowExt lowbase.SecurityRequirement
_ = lowmodel.BuildModel(cNode.Content[0], &lowExt)
_ = lowExt.Build(nil, cNode.Content[0], nil)
_ = lowExt.Build(context.Background(), nil, cNode.Content[0], nil)
highExt := NewSecurityRequirement(&lowExt)

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"fmt"
"strings"
"testing"
@@ -28,7 +29,7 @@ x-hack: code`
var lowTag lowbase.Tag
_ = lowmodel.BuildModel(cNode.Content[0], &lowTag)
_ = lowTag.Build(nil, cNode.Content[0], nil)
_ = lowTag.Build(context.Background(), nil, cNode.Content[0], nil)
highTag := NewTag(&lowTag)
@@ -75,7 +76,7 @@ x-hack: code`
// build out the low-level model
var lowTag lowbase.Tag
_ = lowmodel.BuildModel(node.Content[0], &lowTag)
_ = lowTag.Build(nil, node.Content[0], nil)
_ = lowTag.Build(context.Background(), nil, node.Content[0], nil)
// build the high level tag
highTag := NewTag(&lowTag)

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
v2 "github.com/pb33f/libopenapi/datamodel/low/v2"
"github.com/pb33f/libopenapi/index"
@@ -36,7 +37,7 @@ options:
var n v2.PathItem
_ = low.BuildModel(&idxNode, &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
r := NewPathItem(&n)

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -26,7 +27,7 @@ x-cake: hot`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "hot", n.Summary.Value)
assert.Equal(t, "cakes", n.Description.Value)
@@ -52,7 +53,7 @@ x-cake: hot`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "hot", n.Summary.Value)
assert.Equal(t, "cakes", n.Description.Value)
@@ -79,7 +80,7 @@ value:
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "hot", n.Summary.Value)
assert.Equal(t, "cakes", n.Description.Value)
@@ -110,7 +111,7 @@ value:
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "hot", n.Summary.Value)
assert.Equal(t, "cakes", n.Description.Value)
@@ -142,7 +143,7 @@ func TestExample_Build_Success_MergeNode(t *testing.T) {
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "hot", n.Summary.Value)
assert.Equal(t, "cakes", n.Description.Value)
@@ -237,8 +238,8 @@ x-burger: nice`
var rDoc Example
_ = low.BuildModel(lNode.Content[0], &lDoc)
_ = low.BuildModel(rNode.Content[0], &rDoc)
_ = lDoc.Build(nil, lNode.Content[0], nil)
_ = rDoc.Build(nil, rNode.Content[0], nil)
_ = lDoc.Build(context.Background(), nil, lNode.Content[0], nil)
_ = rDoc.Build(context.Background(), nil, rNode.Content[0], nil)
assert.Equal(t, lDoc.Hash(), rDoc.Hash())
assert.Len(t, lDoc.GetExtensions(), 1)

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -23,7 +24,7 @@ func TestExternalDoc_FindExtension(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "cake", n.FindExtension("x-fish").Value)
@@ -44,7 +45,7 @@ x-b33f: princess`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "https://pb33f.io", n.URL.Value)
assert.Equal(t, "the ranch", n.Description.Value)
@@ -73,8 +74,8 @@ description: the ranch`
var rDoc ExternalDoc
_ = low.BuildModel(lNode.Content[0], &lDoc)
_ = low.BuildModel(rNode.Content[0], &rDoc)
_ = lDoc.Build(nil, lNode.Content[0], nil)
_ = rDoc.Build(nil, rNode.Content[0], nil)
_ = lDoc.Build(context.Background(), nil, lNode.Content[0], nil)
_ = rDoc.Build(context.Background(), nil, rNode.Content[0], nil)
assert.Equal(t, lDoc.Hash(), rDoc.Hash())
assert.Len(t, lDoc.GetExtensions(), 1)

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"testing"
"github.com/pb33f/libopenapi/datamodel/low"
@@ -34,7 +35,7 @@ x-cli-name: pizza cli`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "pizza", n.Title.Value)
@@ -61,13 +62,13 @@ x-cli-name: pizza cli`
func TestContact_Build(t *testing.T) {
n := &Contact{}
k := n.Build(nil, nil, nil)
k := n.Build(context.Background(), nil, nil, nil)
assert.Nil(t, k)
}
func TestLicense_Build(t *testing.T) {
n := &License{}
k := n.Build(nil, nil, nil)
k := n.Build(context.Background(), nil, nil, nil)
assert.Nil(t, k)
}
@@ -107,8 +108,8 @@ x-b33f: princess`
var rDoc Info
_ = low.BuildModel(lNode.Content[0], &lDoc)
_ = low.BuildModel(rNode.Content[0], &rDoc)
_ = lDoc.Build(nil, lNode.Content[0], nil)
_ = rDoc.Build(nil, rNode.Content[0], nil)
_ = lDoc.Build(context.Background(), nil, lNode.Content[0], nil)
_ = rDoc.Build(context.Background(), nil, rNode.Content[0], nil)
assert.Equal(t, lDoc.Hash(), rDoc.Hash())
}

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
@@ -70,7 +71,7 @@ description: the ranch`
var lDoc License
err := low.BuildModel(lNode.Content[0], &lDoc)
err = lDoc.Build(nil, lNode.Content[0], nil)
err = lDoc.Build(context.Background(), nil, lNode.Content[0], nil)
assert.Error(t, err)
assert.Equal(t, "license cannot have both a URL and an identifier, they are mutually exclusive", err.Error())

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
@@ -19,7 +20,7 @@ description: something`
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
err := sch.Build(&idxNode, idxNode.Content[0], nil)
err := sch.Build(context.Background(), &idxNode, idxNode.Content[0], nil)
assert.NoError(t, err)
assert.Equal(t, "db2a35dd6fb3d9481d0682571b9d687616bb2a34c1887f7863f0b2e769ca7b23",
@@ -51,7 +52,7 @@ func TestSchemaProxy_Build_CheckRef(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
err := sch.Build(nil, idxNode.Content[0], nil)
err := sch.Build(context.Background(), nil, idxNode.Content[0], nil)
assert.NoError(t, err)
assert.True(t, sch.IsSchemaReference())
assert.Equal(t, "wat", sch.GetSchemaReference())
@@ -67,7 +68,7 @@ func TestSchemaProxy_Build_HashInline(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
err := sch.Build(nil, idxNode.Content[0], nil)
err := sch.Build(context.Background(), nil, idxNode.Content[0], nil)
assert.NoError(t, err)
assert.False(t, sch.IsSchemaReference())
assert.NotNil(t, sch.Schema())
@@ -89,7 +90,7 @@ x-common-definitions:
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
err := sch.Build(nil, idxNode.Content[0], nil)
err := sch.Build(context.Background(), nil, idxNode.Content[0], nil)
assert.NoError(t, err)
assert.Len(t, sch.Schema().Enum.Value, 3)
assert.Equal(t, "The type of life cycle", sch.Schema().Description.Value)

View File

@@ -1,13 +1,14 @@
package base
import (
"github.com/pb33f/libopenapi/datamodel"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/pb33f/libopenapi/utils"
"github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
"testing"
"context"
"github.com/pb33f/libopenapi/datamodel"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/pb33f/libopenapi/utils"
"github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
"testing"
)
func test_get_schema_blob() string {
@@ -165,7 +166,7 @@ func Test_Schema(t *testing.T) {
mbErr := low.BuildModel(rootNode.Content[0], &sch)
assert.NoError(t, mbErr)
schErr := sch.Build(rootNode.Content[0], nil)
schErr := sch.Build(context.Background(), rootNode.Content[0], nil)
assert.NoError(t, schErr)
assert.Equal(t, "something object", sch.Description.Value)
assert.True(t, sch.AdditionalProperties.Value.B)
@@ -341,7 +342,7 @@ func TestSchemaAllOfSequenceOrder(t *testing.T) {
mbErr := low.BuildModel(rootNode.Content[0], &sch)
assert.NoError(t, mbErr)
schErr := sch.Build(rootNode.Content[0], nil)
schErr := sch.Build(context.Background(), rootNode.Content[0], nil)
assert.NoError(t, schErr)
assert.Equal(t, "allOf sequence check", sch.Description.Value)
@@ -361,13 +362,13 @@ func TestSchema_Hash(t *testing.T) {
_ = yaml.Unmarshal([]byte(testSpec), &sc1n)
sch1 := Schema{}
_ = low.BuildModel(&sc1n, &sch1)
_ = sch1.Build(sc1n.Content[0], nil)
_ = sch1.Build(context.Background(), sc1n.Content[0], nil)
var sc2n yaml.Node
_ = yaml.Unmarshal([]byte(testSpec), &sc2n)
sch2 := Schema{}
_ = low.BuildModel(&sc2n, &sch2)
_ = sch2.Build(sc2n.Content[0], nil)
_ = sch2.Build(context.Background(), sc2n.Content[0], nil)
assert.Equal(t, sch1.Hash(), sch2.Hash())
}
@@ -379,13 +380,13 @@ func BenchmarkSchema_Hash(b *testing.B) {
_ = yaml.Unmarshal([]byte(testSpec), &sc1n)
sch1 := Schema{}
_ = low.BuildModel(&sc1n, &sch1)
_ = sch1.Build(sc1n.Content[0], nil)
_ = sch1.Build(context.Background(), sc1n.Content[0], nil)
var sc2n yaml.Node
_ = yaml.Unmarshal([]byte(testSpec), &sc2n)
sch2 := Schema{}
_ = low.BuildModel(&sc2n, &sch2)
_ = sch2.Build(sc2n.Content[0], nil)
_ = sch2.Build(context.Background(), sc2n.Content[0], nil)
for i := 0; i < b.N; i++ {
assert.Equal(b, sch1.Hash(), sch2.Hash())
@@ -415,7 +416,7 @@ const: tasty`
mbErr := low.BuildModel(rootNode.Content[0], &sch)
assert.NoError(t, mbErr)
schErr := sch.Build(rootNode.Content[0], nil)
schErr := sch.Build(context.Background(), rootNode.Content[0], nil)
assert.NoError(t, schErr)
assert.Equal(t, "something object", sch.Description.Value)
assert.Len(t, sch.Type.Value.B, 2)
@@ -456,7 +457,7 @@ properties:
_ = yaml.Unmarshal([]byte(yml), &idxNode)
var n Schema
err := n.Build(idxNode.Content[0], idx)
err := n.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "this is something", n.FindProperty("aValue").Value.Schema().Description.Value)
}
@@ -482,7 +483,7 @@ properties:
_ = yaml.Unmarshal([]byte(yml), &idxNode)
var n Schema
err := n.Build(idxNode.Content[0], idx)
err := n.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -507,7 +508,7 @@ dependentSchemas:
_ = yaml.Unmarshal([]byte(yml), &idxNode)
var n Schema
err := n.Build(idxNode.Content[0], idx)
err := n.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -532,7 +533,7 @@ patternProperties:
_ = yaml.Unmarshal([]byte(yml), &idxNode)
var n Schema
err := n.Build(idxNode.Content[0], idx)
err := n.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -572,7 +573,7 @@ items:
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, schErr)
desc := "poly thing"
@@ -619,7 +620,7 @@ items:
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, schErr)
}
@@ -659,7 +660,7 @@ items:
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, schErr)
desc := "poly thing"
@@ -706,7 +707,7 @@ items:
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, schErr)
}
@@ -732,7 +733,7 @@ allOf:
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, schErr)
}
@@ -758,7 +759,7 @@ allOf:
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, schErr)
}
@@ -786,7 +787,7 @@ allOf:
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, schErr)
assert.Nil(t, sch.AllOf.Value[0].Value.Schema()) // child can't be resolved, so this will be nil.
assert.Error(t, sch.AllOf.Value[0].Value.GetBuildError())
@@ -816,7 +817,7 @@ allOf:
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, schErr)
desc := "madness"
@@ -847,7 +848,7 @@ allOf:
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
err = sch.Build(idxNode.Content[0], idx)
err = sch.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -875,7 +876,7 @@ func Test_Schema_Polymorphism_RefMadnessIllegal(t *testing.T) {
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, schErr)
}
@@ -907,7 +908,7 @@ func Test_Schema_RefMadnessIllegal_Circular(t *testing.T) {
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, schErr)
}
@@ -939,7 +940,7 @@ func Test_Schema_RefMadnessIllegal_Nonexist(t *testing.T) {
err := low.BuildModel(&idxNode, &sch)
assert.NoError(t, err)
schErr := sch.Build(idxNode.Content[0], idx)
schErr := sch.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, schErr)
}
@@ -964,7 +965,7 @@ func TestExtractSchema(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], idx)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
assert.NotNil(t, res.Value)
aValue := res.Value.Schema().FindProperty("aValue")
@@ -980,7 +981,7 @@ schema:
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], nil)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], nil)
assert.NoError(t, err)
assert.NotNil(t, res.Value)
sch := res.Value.Schema()
@@ -996,7 +997,7 @@ schema:
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], nil)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], nil)
assert.NoError(t, err)
assert.NotNil(t, res.Value)
sch := res.Value.Schema()
@@ -1021,7 +1022,7 @@ func TestExtractSchema_Ref(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], idx)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
assert.NotNil(t, res.Value)
assert.Equal(t, "this is something", res.Value.Schema().Description.Value)
@@ -1045,7 +1046,7 @@ func TestExtractSchema_Ref_Fail(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
_, err := ExtractSchema(idxNode.Content[0], idx)
_, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -1080,7 +1081,7 @@ func TestExtractSchema_CheckChildPropCircular(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], idx)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
assert.NotNil(t, res.Value)
@@ -1105,7 +1106,7 @@ func TestExtractSchema_RefRoot(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], idx)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
assert.NotNil(t, res.Value)
assert.Equal(t, "this is something", res.Value.Schema().Description.Value)
@@ -1128,7 +1129,7 @@ func TestExtractSchema_RefRoot_Fail(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
_, err := ExtractSchema(idxNode.Content[0], idx)
_, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -1148,7 +1149,7 @@ func TestExtractSchema_RefRoot_Child_Fail(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
_, err := ExtractSchema(idxNode.Content[0], idx)
_, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -1169,7 +1170,7 @@ func TestExtractSchema_AdditionalPropertiesAsSchema(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], idx)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.NotNil(t, res.Value.Schema().AdditionalProperties.Value.A.Schema())
assert.Nil(t, err)
@@ -1191,7 +1192,7 @@ func TestExtractSchema_DoNothing(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], idx)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.Nil(t, res)
assert.Nil(t, err)
}
@@ -1219,7 +1220,7 @@ func TestExtractSchema_AdditionalProperties_Ref(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], idx)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.NotNil(t, res.Value.Schema().AdditionalProperties.Value.A.Schema())
assert.Nil(t, err)
}
@@ -1333,7 +1334,7 @@ func TestExtractSchema_OneOfRef(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, err := ExtractSchema(idxNode.Content[0], idx)
res, err := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "a frosty cold beverage can be coke or sprite",
res.Value.Schema().OneOf.Value[0].Value.Schema().Description.Value)
@@ -1426,8 +1427,8 @@ func TestSchema_Hash_Equal(t *testing.T) {
_ = yaml.Unmarshal([]byte(left), &lNode)
_ = yaml.Unmarshal([]byte(right), &rNode)
lDoc, _ := ExtractSchema(lNode.Content[0], nil)
rDoc, _ := ExtractSchema(rNode.Content[0], nil)
lDoc, _ := ExtractSchema(context.Background(), lNode.Content[0], nil)
rDoc, _ := ExtractSchema(context.Background(), rNode.Content[0], nil)
assert.NotNil(t, lDoc)
assert.NotNil(t, rDoc)
@@ -1451,8 +1452,8 @@ func TestSchema_Hash_AdditionalPropsSlice(t *testing.T) {
_ = yaml.Unmarshal([]byte(left), &lNode)
_ = yaml.Unmarshal([]byte(right), &rNode)
lDoc, _ := ExtractSchema(lNode.Content[0], nil)
rDoc, _ := ExtractSchema(rNode.Content[0], nil)
lDoc, _ := ExtractSchema(context.Background(), lNode.Content[0], nil)
rDoc, _ := ExtractSchema(context.Background(), rNode.Content[0], nil)
assert.NotNil(t, lDoc)
assert.NotNil(t, rDoc)
@@ -1476,8 +1477,8 @@ func TestSchema_Hash_AdditionalPropsSliceNoMap(t *testing.T) {
_ = yaml.Unmarshal([]byte(left), &lNode)
_ = yaml.Unmarshal([]byte(right), &rNode)
lDoc, _ := ExtractSchema(lNode.Content[0], nil)
rDoc, _ := ExtractSchema(rNode.Content[0], nil)
lDoc, _ := ExtractSchema(context.Background(), lNode.Content[0], nil)
rDoc, _ := ExtractSchema(context.Background(), rNode.Content[0], nil)
assert.NotNil(t, lDoc)
assert.NotNil(t, rDoc)
@@ -1513,8 +1514,8 @@ func TestSchema_Hash_NotEqual(t *testing.T) {
_ = yaml.Unmarshal([]byte(left), &lNode)
_ = yaml.Unmarshal([]byte(right), &rNode)
lDoc, _ := ExtractSchema(lNode.Content[0], nil)
rDoc, _ := ExtractSchema(rNode.Content[0], nil)
lDoc, _ := ExtractSchema(context.Background(), lNode.Content[0], nil)
rDoc, _ := ExtractSchema(context.Background(), rNode.Content[0], nil)
assert.False(t, low.AreEqual(lDoc.Value.Schema(), rDoc.Value.Schema()))
}
@@ -1550,8 +1551,8 @@ func TestSchema_Hash_EqualJumbled(t *testing.T) {
_ = yaml.Unmarshal([]byte(left), &lNode)
_ = yaml.Unmarshal([]byte(right), &rNode)
lDoc, _ := ExtractSchema(lNode.Content[0], nil)
rDoc, _ := ExtractSchema(rNode.Content[0], nil)
lDoc, _ := ExtractSchema(context.Background(), lNode.Content[0], nil)
rDoc, _ := ExtractSchema(context.Background(), rNode.Content[0], nil)
assert.True(t, low.AreEqual(lDoc.Value.Schema(), rDoc.Value.Schema()))
}
@@ -1584,7 +1585,7 @@ func TestSchema_UnevaluatedPropertiesAsBool_DefinedAsTrue(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, _ := ExtractSchema(idxNode.Content[0], idx)
res, _ := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.True(t, res.Value.Schema().UnevaluatedProperties.Value.IsB())
assert.True(t, res.Value.Schema().UnevaluatedProperties.Value.B)
@@ -1609,7 +1610,7 @@ func TestSchema_UnevaluatedPropertiesAsBool_DefinedAsFalse(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, _ := ExtractSchema(idxNode.Content[0], idx)
res, _ := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.True(t, res.Value.Schema().UnevaluatedProperties.Value.IsB())
assert.False(t, res.Value.Schema().UnevaluatedProperties.Value.B)
@@ -1631,7 +1632,7 @@ func TestSchema_UnevaluatedPropertiesAsBool_Undefined(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, _ := ExtractSchema(idxNode.Content[0], idx)
res, _ := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.Nil(t, res.Value.Schema().UnevaluatedProperties.Value)
}
@@ -1661,7 +1662,7 @@ components:
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, _ := ExtractSchema(idxNode.Content[0], idx)
res, _ := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.True(t, res.Value.Schema().ExclusiveMinimum.Value.A)
}
@@ -1691,7 +1692,7 @@ components:
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, _ := ExtractSchema(idxNode.Content[0], idx)
res, _ := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.Equal(t, 3.0, res.Value.Schema().ExclusiveMinimum.Value.B)
}
@@ -1721,7 +1722,7 @@ components:
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, _ := ExtractSchema(idxNode.Content[0], idx)
res, _ := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.True(t, res.Value.Schema().ExclusiveMaximum.Value.A)
}
@@ -1751,7 +1752,7 @@ components:
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
res, _ := ExtractSchema(idxNode.Content[0], idx)
res, _ := ExtractSchema(context.Background(), idxNode.Content[0], idx)
assert.Equal(t, 3.0, res.Value.Schema().ExclusiveMaximum.Value.B)
}

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
"testing"
@@ -33,8 +34,8 @@ one:
var idxNode2 yaml.Node
_ = yaml.Unmarshal([]byte(yml2), &idxNode2)
_ = sr.Build(nil, idxNode.Content[0], nil)
_ = sr2.Build(nil, idxNode2.Content[0], nil)
_ = sr.Build(context.Background(), nil, idxNode.Content[0], nil)
_ = sr2.Build(context.Background(), nil, idxNode2.Content[0], nil)
assert.Len(t, sr.Requirements.Value, 2)
assert.Len(t, sr.GetKeys(), 2)

View File

@@ -4,6 +4,7 @@
package base
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -27,7 +28,7 @@ x-coffee: tasty`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "a tag", n.Name.Value)
assert.Equal(t, "a description", n.Description.Value)
@@ -52,7 +53,7 @@ externalDocs:
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -79,8 +80,8 @@ x-b33f: princess`
var rDoc Tag
_ = low.BuildModel(lNode.Content[0], &lDoc)
_ = low.BuildModel(rNode.Content[0], &rDoc)
_ = lDoc.Build(nil, lNode.Content[0], nil)
_ = rDoc.Build(nil, rNode.Content[0], nil)
_ = lDoc.Build(context.Background(), nil, lNode.Content[0], nil)
_ = rDoc.Build(context.Background(), nil, rNode.Content[0], nil)
assert.Equal(t, lDoc.Hash(), rDoc.Hash())

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@
package low
import (
"context"
"crypto/sha256"
"fmt"
"strings"
@@ -61,7 +62,7 @@ func TestLocateRefNode(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
located, _ := LocateRefNode(cNode.Content[0], idx)
located, _, _ := LocateRefNode(cNode.Content[0], idx)
assert.NotNil(t, located)
}
@@ -83,7 +84,7 @@ func TestLocateRefNode_BadNode(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
located, err := LocateRefNode(cNode.Content[0], idx)
located, _, err := LocateRefNode(cNode.Content[0], idx)
// should both be empty.
assert.Nil(t, located)
@@ -107,7 +108,7 @@ func TestLocateRefNode_Path(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
located, _ := LocateRefNode(cNode.Content[0], idx)
located, _, _ := LocateRefNode(cNode.Content[0], idx)
assert.NotNil(t, located)
}
@@ -128,7 +129,7 @@ func TestLocateRefNode_Path_NotFound(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
located, err := LocateRefNode(cNode.Content[0], idx)
located, _, err := LocateRefNode(cNode.Content[0], idx)
assert.Nil(t, located)
assert.Error(t, err)
@@ -138,7 +139,7 @@ type pizza struct {
Description NodeReference[string]
}
func (p *pizza) Build(_, _ *yaml.Node, _ *index.SpecIndex) error {
func (p *pizza) Build(_ context.Context, _, _ *yaml.Node, _ *index.SpecIndex) error {
return nil
}
@@ -160,7 +161,7 @@ func TestExtractObject(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
tag, err := ExtractObject[*pizza]("tags", &cNode, idx)
tag, err := ExtractObject[*pizza](context.Background(), "tags", &cNode, idx)
assert.NoError(t, err)
assert.NotNil(t, tag)
assert.Equal(t, "hello pizza", tag.Value.Description.Value)
@@ -184,7 +185,7 @@ func TestExtractObject_Ref(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
tag, err := ExtractObject[*pizza]("tags", &cNode, idx)
tag, err := ExtractObject[*pizza](context.Background(), "tags", &cNode, idx)
assert.NoError(t, err)
assert.NotNil(t, tag)
assert.Equal(t, "hello pizza", tag.Value.Description.Value)
@@ -210,7 +211,7 @@ func TestExtractObject_DoubleRef(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
tag, err := ExtractObject[*pizza]("tags", &cNode, idx)
tag, err := ExtractObject[*pizza](context.Background(), "tags", &cNode, idx)
assert.NoError(t, err)
assert.NotNil(t, tag)
assert.Equal(t, "cake time!", tag.Value.Description.Value)
@@ -241,7 +242,7 @@ func TestExtractObject_DoubleRef_Circular(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
_, err := ExtractObject[*pizza]("tags", &cNode, idx)
_, err := ExtractObject[*pizza](context.Background(), "tags", &cNode, idx)
assert.Error(t, err)
assert.Equal(t, "cake -> loopy -> cake", idx.GetCircularReferences()[0].GenerateJourneyPath())
}
@@ -271,7 +272,7 @@ func TestExtractObject_DoubleRef_Circular_Fail(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
_, err := ExtractObject[*pizza]("tags", &cNode, idx)
_, err := ExtractObject[*pizza](context.Background(), "tags", &cNode, idx)
assert.Error(t, err)
}
@@ -300,7 +301,7 @@ func TestExtractObject_DoubleRef_Circular_Direct(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
_, err := ExtractObject[*pizza]("tags", cNode.Content[0], idx)
_, err := ExtractObject[*pizza](context.Background(), "tags", cNode.Content[0], idx)
assert.Error(t, err)
assert.Equal(t, "cake -> loopy -> cake", idx.GetCircularReferences()[0].GenerateJourneyPath())
}
@@ -330,7 +331,7 @@ func TestExtractObject_DoubleRef_Circular_Direct_Fail(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
_, err := ExtractObject[*pizza]("tags", cNode.Content[0], idx)
_, err := ExtractObject[*pizza](context.Background(), "tags", cNode.Content[0], idx)
assert.Error(t, err)
}
@@ -339,7 +340,7 @@ type test_borked struct {
DontWork int
}
func (t test_borked) Build(_, root *yaml.Node, idx *index.SpecIndex) error {
func (t test_borked) Build(_ context.Context, _, root *yaml.Node, idx *index.SpecIndex) error {
return fmt.Errorf("I am always going to fail, every thing")
}
@@ -347,7 +348,7 @@ type test_noGood struct {
DontWork int
}
func (t *test_noGood) Build(_, root *yaml.Node, idx *index.SpecIndex) error {
func (t *test_noGood) Build(_ context.Context, _, root *yaml.Node, idx *index.SpecIndex) error {
return fmt.Errorf("I am always going to fail a core build")
}
@@ -355,7 +356,7 @@ type test_almostGood struct {
AlmostWork NodeReference[int]
}
func (t *test_almostGood) Build(_, root *yaml.Node, idx *index.SpecIndex) error {
func (t *test_almostGood) Build(_ context.Context, _, root *yaml.Node, idx *index.SpecIndex) error {
return fmt.Errorf("I am always going to fail a build out")
}
@@ -363,7 +364,7 @@ type test_Good struct {
AlmostWork NodeReference[int]
}
func (t *test_Good) Build(_, root *yaml.Node, idx *index.SpecIndex) error {
func (t *test_Good) Build(_ context.Context, _, root *yaml.Node, idx *index.SpecIndex) error {
return nil
}
@@ -383,7 +384,7 @@ func TestExtractObject_BadLowLevelModel(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
_, err := ExtractObject[*test_noGood]("thing", &cNode, idx)
_, err := ExtractObject[*test_noGood](context.Background(), "thing", &cNode, idx)
assert.Error(t, err)
}
@@ -404,7 +405,7 @@ func TestExtractObject_BadBuild(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
_, err := ExtractObject[*test_almostGood]("thing", &cNode, idx)
_, err := ExtractObject[*test_almostGood](context.Background(), "thing", &cNode, idx)
assert.Error(t, err)
}
@@ -425,7 +426,7 @@ func TestExtractObject_BadLabel(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
res, err := ExtractObject[*test_almostGood]("ding", &cNode, idx)
res, err := ExtractObject[*test_almostGood](context.Background(), "ding", &cNode, idx)
assert.Nil(t, res.Value)
assert.NoError(t, err)
@@ -458,7 +459,7 @@ func TestExtractObject_PathIsCircular(t *testing.T) {
mErr = yaml.Unmarshal([]byte(yml), &rootNode)
assert.NoError(t, mErr)
res, err := ExtractObject[*test_Good]("thing", &rootNode, idx)
res, err := ExtractObject[*test_Good](context.Background(), "thing", &rootNode, idx)
assert.NotNil(t, res.Value)
assert.Error(t, err) // circular error would have been thrown.
@@ -494,7 +495,7 @@ func TestExtractObject_PathIsCircular_IgnoreErrors(t *testing.T) {
mErr = yaml.Unmarshal([]byte(yml), &rootNode)
assert.NoError(t, mErr)
res, err := ExtractObject[*test_Good]("thing", &rootNode, idx)
res, err := ExtractObject[*test_Good](context.Background(), "thing", &rootNode, idx)
assert.NotNil(t, res.Value)
assert.NoError(t, err) // circular error would have been thrown, but we're ignoring them.
@@ -517,7 +518,7 @@ func TestExtractObjectRaw(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
tag, err, _, _ := ExtractObjectRaw[*pizza](nil, cNode.Content[0], idx)
tag, err, _, _ := ExtractObjectRaw[*pizza](context.Background(), nil, cNode.Content[0], idx)
assert.NoError(t, err)
assert.NotNil(t, tag)
assert.Equal(t, "hello pizza", tag.Description.Value)
@@ -540,7 +541,7 @@ func TestExtractObjectRaw_With_Ref(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
tag, err, isRef, rv := ExtractObjectRaw[*pizza](nil, cNode.Content[0], idx)
tag, err, isRef, rv := ExtractObjectRaw[*pizza](context.Background(), nil, cNode.Content[0], idx)
assert.NoError(t, err)
assert.NotNil(t, tag)
assert.Equal(t, "hello", tag.Description.Value)
@@ -570,7 +571,7 @@ func TestExtractObjectRaw_Ref_Circular(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
tag, err, _, _ := ExtractObjectRaw[*pizza](nil, cNode.Content[0], idx)
tag, err, _, _ := ExtractObjectRaw[*pizza](context.Background(), nil, cNode.Content[0], idx)
assert.Error(t, err)
assert.NotNil(t, tag)
@@ -592,7 +593,7 @@ func TestExtractObjectRaw_RefBroken(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
tag, err, _, _ := ExtractObjectRaw[*pizza](nil, cNode.Content[0], idx)
tag, err, _, _ := ExtractObjectRaw[*pizza](context.Background(), nil, cNode.Content[0], idx)
assert.Error(t, err)
assert.Nil(t, tag)
@@ -614,7 +615,7 @@ func TestExtractObjectRaw_Ref_NonBuildable(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
_, err, _, _ := ExtractObjectRaw[*test_noGood](nil, cNode.Content[0], idx)
_, err, _, _ := ExtractObjectRaw[*test_noGood](context.Background(), nil, cNode.Content[0], idx)
assert.Error(t, err)
}
@@ -635,7 +636,7 @@ func TestExtractObjectRaw_Ref_AlmostBuildable(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
_, err, _, _ := ExtractObjectRaw[*test_almostGood](nil, cNode.Content[0], idx)
_, err, _, _ := ExtractObjectRaw[*test_almostGood](context.Background(), nil, cNode.Content[0], idx)
assert.Error(t, err)
}
@@ -660,7 +661,7 @@ func TestExtractArray(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
things, _, _, err := ExtractArray[*pizza]("things", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*pizza](context.Background(), "things", cNode.Content[0], idx)
assert.NoError(t, err)
assert.NotNil(t, things)
assert.Equal(t, "one", things[0].Value.Description.Value)
@@ -687,7 +688,7 @@ func TestExtractArray_Ref(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
things, _, _, err := ExtractArray[*pizza]("things", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*pizza](context.Background(), "things", cNode.Content[0], idx)
assert.NoError(t, err)
assert.NotNil(t, things)
assert.Equal(t, "one", things[0].Value.Description.Value)
@@ -714,7 +715,7 @@ func TestExtractArray_Ref_Unbuildable(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
things, _, _, err := ExtractArray[*test_noGood]("", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*test_noGood](context.Background(), "", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
}
@@ -742,7 +743,7 @@ func TestExtractArray_Ref_Circular(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
things, _, _, err := ExtractArray[*test_Good]("", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*test_Good](context.Background(), "", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
}
@@ -770,7 +771,7 @@ func TestExtractArray_Ref_Bad(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
things, _, _, err := ExtractArray[*test_Good]("", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*test_Good](context.Background(), "", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
}
@@ -799,7 +800,7 @@ func TestExtractArray_Ref_Nested(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
things, _, _, err := ExtractArray[*test_Good]("limes", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*test_Good](context.Background(), "limes", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
}
@@ -828,7 +829,7 @@ func TestExtractArray_Ref_Nested_Circular(t *testing.T) {
var cNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &cNode)
things, _, _, err := ExtractArray[*test_Good]("limes", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*test_Good](context.Background(), "limes", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 1)
}
@@ -855,7 +856,7 @@ func TestExtractArray_Ref_Nested_BadRef(t *testing.T) {
var cNode yaml.Node
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractArray[*test_Good]("limes", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*test_Good](context.Background(), "limes", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
}
@@ -884,7 +885,7 @@ func TestExtractArray_Ref_Nested_CircularFlat(t *testing.T) {
var cNode yaml.Node
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractArray[*test_Good]("limes", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*test_Good](context.Background(), "limes", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
}
@@ -906,7 +907,7 @@ func TestExtractArray_BadBuild(t *testing.T) {
var cNode yaml.Node
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractArray[*test_noGood]("limes", cNode.Content[0], idx)
things, _, _, err := ExtractArray[*test_noGood](context.Background(), "limes", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
}
@@ -965,7 +966,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, err := ExtractMapNoLookup[*test_Good](cNode.Content[0], idx)
things, err := ExtractMapNoLookup[*test_Good](context.Background(), cNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, things, 1)
@@ -988,7 +989,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, err := ExtractMapNoLookupExtensions[*test_Good](cNode.Content[0], idx, true)
things, err := ExtractMapNoLookupExtensions[*test_Good](context.Background(), cNode.Content[0], idx, true)
assert.NoError(t, err)
assert.Len(t, things, 2)
@@ -1021,7 +1022,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, err := ExtractMapNoLookupExtensions[*test_Good](cNode.Content[0], idx, true)
things, err := ExtractMapNoLookupExtensions[*test_Good](context.Background(), cNode.Content[0], idx, true)
assert.NoError(t, err)
assert.Len(t, things, 4)
@@ -1044,7 +1045,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, err := ExtractMapNoLookupExtensions[*test_Good](cNode.Content[0], idx, false)
things, err := ExtractMapNoLookupExtensions[*test_Good](context.Background(), cNode.Content[0], idx, false)
assert.NoError(t, err)
assert.Len(t, things, 1)
@@ -1070,7 +1071,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMapExtensions[*test_Good]("one", cNode.Content[0], idx, true)
things, _, _, err := ExtractMapExtensions[*test_Good](context.Background(), "one", cNode.Content[0], idx, true)
assert.NoError(t, err)
assert.Len(t, things, 1)
}
@@ -1092,7 +1093,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMapExtensions[*test_Good]("one", cNode.Content[0], idx, false)
things, _, _, err := ExtractMapExtensions[*test_Good](context.Background(), "one", cNode.Content[0], idx, false)
assert.NoError(t, err)
assert.Len(t, things, 0)
}
@@ -1117,7 +1118,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, err := ExtractMapNoLookup[*test_Good](cNode.Content[0], idx)
things, err := ExtractMapNoLookup[*test_Good](context.Background(), cNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, things, 1)
@@ -1143,7 +1144,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, err := ExtractMapNoLookup[*test_Good](cNode.Content[0], idx)
things, err := ExtractMapNoLookup[*test_Good](context.Background(), cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
@@ -1175,7 +1176,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, err := ExtractMapNoLookup[*test_Good](cNode.Content[0], idx)
things, err := ExtractMapNoLookup[*test_Good](context.Background(), cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 1)
@@ -1201,7 +1202,7 @@ hello:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, err := ExtractMapNoLookup[*test_noGood](cNode.Content[0], idx)
things, err := ExtractMapNoLookup[*test_noGood](context.Background(), cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
@@ -1227,7 +1228,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, err := ExtractMapNoLookup[*test_almostGood](cNode.Content[0], idx)
things, err := ExtractMapNoLookup[*test_almostGood](context.Background(), cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
@@ -1250,7 +1251,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_Good]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_Good](context.Background(), "one", cNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, things, 1)
@@ -1277,7 +1278,7 @@ one:
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_Good]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_Good](context.Background(), "one", cNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, things, 1)
@@ -1307,7 +1308,7 @@ func TestExtractMapFlat_DoubleRef(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_Good]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_Good](context.Background(), "one", cNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, things, 1)
@@ -1337,7 +1338,7 @@ func TestExtractMapFlat_DoubleRef_Error(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_almostGood]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_almostGood](context.Background(), "one", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
@@ -1364,7 +1365,7 @@ func TestExtractMapFlat_DoubleRef_Error_NotFound(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_almostGood]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_almostGood](context.Background(), "one", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
@@ -1396,7 +1397,7 @@ func TestExtractMapFlat_DoubleRef_Circles(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_Good]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_Good](context.Background(), "one", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 1)
@@ -1423,7 +1424,7 @@ func TestExtractMapFlat_Ref_Error(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_almostGood]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_almostGood](context.Background(), "one", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
@@ -1453,7 +1454,7 @@ func TestExtractMapFlat_Ref_Circ_Error(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_Good]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_Good](context.Background(), "one", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 1)
}
@@ -1483,7 +1484,7 @@ func TestExtractMapFlat_Ref_Nested_Circ_Error(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_Good]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_Good](context.Background(), "one", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 1)
}
@@ -1509,7 +1510,7 @@ func TestExtractMapFlat_Ref_Nested_Error(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_Good]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_Good](context.Background(), "one", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
}
@@ -1535,7 +1536,7 @@ func TestExtractMapFlat_BadKey_Ref_Nested_Error(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_Good]("not-even-there", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_Good](context.Background(), "not-even-there", cNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, things, 0)
}
@@ -1564,7 +1565,7 @@ func TestExtractMapFlat_Ref_Bad(t *testing.T) {
e := yaml.Unmarshal([]byte(yml), &cNode)
assert.NoError(t, e)
things, _, _, err := ExtractMap[*test_Good]("one", cNode.Content[0], idx)
things, _, _, err := ExtractMap[*test_Good](context.Background(), "one", cNode.Content[0], idx)
assert.Error(t, err)
assert.Len(t, things, 0)
}

View File

@@ -4,15 +4,15 @@
package low
import (
"crypto/sha256"
"fmt"
"github.com/pb33f/libopenapi/utils"
"strings"
"testing"
"crypto/sha256"
"fmt"
"github.com/pb33f/libopenapi/utils"
"strings"
"testing"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
)
func TestNodeReference_IsEmpty(t *testing.T) {
@@ -130,7 +130,7 @@ func TestIsCircular_LookupFromJourney(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
ref, err := LocateRefNode(idxNode.Content[0], idx)
ref, _, err := LocateRefNode(idxNode.Content[0], idx)
assert.NoError(t, err)
assert.True(t, IsCircular(ref, idx))
}
@@ -163,7 +163,7 @@ func TestIsCircular_LookupFromJourney_Optional(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
ref, err := LocateRefNode(idxNode.Content[0], idx)
ref, _, err := LocateRefNode(idxNode.Content[0], idx)
assert.NoError(t, err)
assert.True(t, IsCircular(ref, idx))
}
@@ -199,7 +199,7 @@ func TestIsCircular_LookupFromLoopPoint(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
ref, err := LocateRefNode(idxNode.Content[0], idx)
ref, _, err := LocateRefNode(idxNode.Content[0], idx)
assert.NoError(t, err)
assert.True(t, IsCircular(ref, idx))
}
@@ -231,7 +231,7 @@ func TestIsCircular_LookupFromLoopPoint_Optional(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
ref, err := LocateRefNode(idxNode.Content[0], idx)
ref, _, err := LocateRefNode(idxNode.Content[0], idx)
assert.NoError(t, err)
assert.True(t, IsCircular(ref, idx))
}
@@ -352,7 +352,7 @@ func TestGetCircularReferenceResult_FromJourney(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
ref, err := LocateRefNode(idxNode.Content[0], idx)
ref, _, err := LocateRefNode(idxNode.Content[0], idx)
assert.NoError(t, err)
circ := GetCircularReferenceResult(ref, idx)
assert.NotNil(t, circ)
@@ -386,7 +386,7 @@ func TestGetCircularReferenceResult_FromJourney_Optional(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
ref, err := LocateRefNode(idxNode.Content[0], idx)
ref, _, err := LocateRefNode(idxNode.Content[0], idx)
assert.NoError(t, err)
circ := GetCircularReferenceResult(ref, idx)
assert.NotNil(t, circ)
@@ -424,7 +424,7 @@ func TestGetCircularReferenceResult_FromLoopPoint(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
ref, err := LocateRefNode(idxNode.Content[0], idx)
ref, _, err := LocateRefNode(idxNode.Content[0], idx)
assert.NoError(t, err)
circ := GetCircularReferenceResult(ref, idx)
assert.NotNil(t, circ)
@@ -458,7 +458,7 @@ func TestGetCircularReferenceResult_FromLoopPoint_Optional(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
ref, err := LocateRefNode(idxNode.Content[0], idx)
ref, _, err := LocateRefNode(idxNode.Content[0], idx)
assert.NoError(t, err)
circ := GetCircularReferenceResult(ref, idx)
assert.NotNil(t, circ)

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -25,7 +26,7 @@ func TestDefinitions_Schemas_Build_Error(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -44,7 +45,7 @@ func TestDefinitions_Parameters_Build_Error(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -63,7 +64,7 @@ func TestDefinitions_Hash(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Equal(t, "26d23786e6873e1a337f8e9be85f7de1490e4ff6cd303c3b15e593a25a6a149d",
low.GenerateHashString(&n))
@@ -83,7 +84,7 @@ func TestDefinitions_Responses_Build_Error(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -102,7 +103,7 @@ func TestDefinitions_Security_Build_Error(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -27,7 +28,7 @@ nothing: int`
var n Examples
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `anything:
cake: burger
@@ -43,7 +44,7 @@ yes:
var n2 Examples
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -25,7 +26,7 @@ func TestHeader_Build(t *testing.T) {
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -44,7 +45,7 @@ default:
var n Header
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NotNil(t, n.Default.Value)
assert.Len(t, n.Default.Value, 3)
@@ -65,7 +66,7 @@ func TestHeader_DefaultAsObject(t *testing.T) {
var n Header
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NotNil(t, n.Default.Value)
}
@@ -80,7 +81,7 @@ func TestHeader_NoDefault(t *testing.T) {
var n Header
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Equal(t, 12, n.Minimum.Value)
}
@@ -116,7 +117,7 @@ multipleOf: 12`
var n Header
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `description: head
items:
@@ -148,7 +149,7 @@ pattern: wow
var n2 Header
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -25,7 +26,7 @@ func TestItems_Build(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -42,7 +43,7 @@ default:
var n Items
_ = low.BuildModel(&idxNode, &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Len(t, n.Default.Value, 2)
assert.Len(t, n.GetExtensions(), 1)
@@ -60,7 +61,7 @@ func TestItems_DefaultAsMap(t *testing.T) {
var n Items
_ = low.BuildModel(&idxNode, &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Len(t, n.Default.Value, 2)
@@ -96,7 +97,7 @@ multipleOf: 12`
var n Items
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `items:
type: int
@@ -127,7 +128,7 @@ pattern: wow
var n2 Items
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/pb33f/libopenapi/index"
@@ -26,7 +27,7 @@ func TestOperation_Build_ExternalDocs(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -45,7 +46,7 @@ func TestOperation_Build_Params(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -64,7 +65,7 @@ func TestOperation_Build_Responses(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -83,7 +84,7 @@ func TestOperation_Build_Security(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -126,7 +127,7 @@ x-smoke: not for a while`
var n Operation
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `summary: a nice day
tags:
@@ -164,7 +165,7 @@ security:
var n2 Operation
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/pb33f/libopenapi/index"
@@ -25,7 +26,7 @@ func TestParameter_Build(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -44,7 +45,7 @@ func TestParameter_Build_Items(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -63,7 +64,7 @@ func TestParameter_DefaultSlice(t *testing.T) {
var n Parameter
_ = low.BuildModel(&idxNode, &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Len(t, n.Default.Value.([]any), 3)
}
@@ -80,7 +81,7 @@ func TestParameter_DefaultMap(t *testing.T) {
var n Parameter
_ = low.BuildModel(&idxNode, &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Len(t, n.Default.Value.(map[string]any), 2)
}
@@ -95,7 +96,7 @@ func TestParameter_NoDefaultNoError(t *testing.T) {
var n Parameter
_ = low.BuildModel(&idxNode, &n)
err := n.Build(nil, idxNode.Content[0], idx)
err := n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
}
@@ -136,7 +137,7 @@ required: true`
var n Parameter
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `items:
type: int
@@ -174,7 +175,7 @@ allowEmptyValue: true
var n2 Parameter
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -25,7 +26,7 @@ func TestPathItem_Build_Params(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -44,7 +45,7 @@ func TestPathItem_Build_MethodFail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -76,7 +77,7 @@ x-winter: is coming`
var n PathItem
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `post:
description: post me there
@@ -103,7 +104,7 @@ parameters:
var n2 PathItem
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"fmt"
"testing"
@@ -27,7 +28,7 @@ func TestPaths_Build(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -47,7 +48,7 @@ func TestPaths_FindPathAndKey(t *testing.T) {
var n Paths
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
_, k := n.FindPathAndKey("/no/pizza")
assert.Equal(t, "because i'm fat", k.Value.Post.Value.Description.Value)
@@ -74,7 +75,7 @@ x-milk: creamy`
var n Paths
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `x-milk: creamy
/spl/unk:
@@ -94,7 +95,7 @@ x-milk: creamy`
var n2 Paths
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())
@@ -123,6 +124,6 @@ func TestPaths_Build_Fail_Many(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -25,7 +26,7 @@ func TestResponse_Build_Schema(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -44,7 +45,7 @@ func TestResponse_Build_Examples(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -63,7 +64,7 @@ func TestResponse_Build_Headers(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -87,7 +88,7 @@ x-herbs: missing`
var n Response
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `description: your thing, sir.
examples:
@@ -106,7 +107,7 @@ headers:
var n2 Response
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -24,7 +25,7 @@ func TestResponses_Build_Response(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -43,7 +44,7 @@ func TestResponses_Build_Response_Default(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -61,7 +62,7 @@ func TestResponses_Build_WrongType(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -88,7 +89,7 @@ x-tea: warm
var n Responses
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `401:
description: and you are?
@@ -110,7 +111,7 @@ x-tea: warm`
var n2 Responses
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -23,7 +24,7 @@ x-men: needs a reboot or a refresh`
var n Scopes
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `x-men: needs a reboot or a refresh
pizza: beans
@@ -35,7 +36,7 @@ burgers: chips`
var n2 Scopes
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v2
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -25,7 +26,7 @@ func TestSecurityScheme_Build_Borked(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -45,7 +46,7 @@ func TestSecurityScheme_Build_Scopes(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, n.Scopes.Value.Values, 2)
@@ -70,7 +71,7 @@ x-beer: not for a while`
var n SecurityScheme
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `in: my heart
scopes:
@@ -90,7 +91,7 @@ authorizationUrl: https://pb33f.io
var n2 SecurityScheme
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -33,7 +34,7 @@ func TestCallback_Build_Success(t *testing.T) {
err := low.BuildModel(rootNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, rootNode.Content[0], nil)
err = n.Build(context.Background(), nil, rootNode.Content[0], nil)
assert.NoError(t, err)
assert.Len(t, n.Expression.Value, 1)
@@ -65,7 +66,7 @@ func TestCallback_Build_Error(t *testing.T) {
err := low.BuildModel(rootNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, rootNode.Content[0], idx)
err = n.Build(context.Background(), nil, rootNode.Content[0], idx)
assert.Error(t, err)
}
@@ -100,7 +101,7 @@ func TestCallback_Build_Using_InlineRef(t *testing.T) {
err := low.BuildModel(rootNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, rootNode.Content[0], idx)
err = n.Build(context.Background(), nil, rootNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, n.Expression.Value, 1)
@@ -128,7 +129,7 @@ x-weed: loved`
var n Callback
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `burgers:
description: tasty!
@@ -145,7 +146,7 @@ beer:
var n2 Callback
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"fmt"
"testing"
@@ -76,7 +77,7 @@ func TestComponents_Build_Success(t *testing.T) {
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(idxNode.Content[0], idx)
err = n.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "one of many", n.FindSchema("one").Value.Schema().Description.Value)
@@ -118,7 +119,7 @@ func TestComponents_Build_Success_Skip(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(idxNode.Content[0], idx)
err = n.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
}
@@ -139,7 +140,7 @@ func TestComponents_Build_Fail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(idxNode.Content[0], idx)
err = n.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -161,7 +162,7 @@ func TestComponents_Build_ParameterFail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(idxNode.Content[0], idx)
err = n.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -191,7 +192,7 @@ func TestComponents_Build_ParameterFail_Many(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(idxNode.Content[0], idx)
err = n.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -211,7 +212,7 @@ func TestComponents_Build_Fail_TypeFail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(idxNode.Content[0], idx)
err = n.Build(context.Background(), idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -230,7 +231,7 @@ headers:
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(idxNode.Content[0], idx)
err = n.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "seagull", n.FindExtension("x-curry").Value)
@@ -249,7 +250,7 @@ func TestComponents_Build_HashEmpty(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(idxNode.Content[0], idx)
err = n.Build(context.Background(), idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "seagull", n.FindExtension("x-curry").Value)
assert.Len(t, n.GetExtensions(), 1)

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -31,7 +32,7 @@ explode: true`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "hot/cakes", n.ContentType.Value)
assert.Equal(t, true, n.AllowReserved.Value)
@@ -59,7 +60,7 @@ headers:
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -79,7 +80,7 @@ allowReserved: true`
var n Encoding
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `explode: true
contentType: application/waffle
@@ -96,7 +97,7 @@ style: post modern
var n2 Encoding
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/pb33f/libopenapi/index"
@@ -53,7 +54,7 @@ content:
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "michelle, meddy and maddy", n.Description.Value)
assert.True(t, n.AllowReserved.Value)
@@ -101,7 +102,7 @@ func TestHeader_Build_Success_Examples(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
exp := n.FindExample("family").Value
@@ -129,7 +130,7 @@ func TestHeader_Build_Fail_Examples(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -145,7 +146,7 @@ func TestHeader_Build_Fail_Schema(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -162,7 +163,7 @@ func TestHeader_Build_Fail_Content(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -195,7 +196,7 @@ x-mango: chutney`
var n Header
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `x-mango: chutney
required: true
@@ -224,7 +225,7 @@ schema:
var n2 Header
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -33,7 +34,7 @@ x-linky: slinky
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "#/someref", n.OperationRef.Value)
@@ -75,7 +76,7 @@ server:
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -99,7 +100,7 @@ x-mcdonalds: bigmac`
var n Link
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `parameters:
bacon: eggs
@@ -118,7 +119,7 @@ server:
var n2 Link
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -33,7 +34,7 @@ x-rock: and roll`
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "and roll", n.FindExtension("x-rock").Value)
assert.Equal(t, "string", n.Schema.Value.Schema().Type.Value.A)
@@ -56,7 +57,7 @@ func TestMediaType_Build_Fail_Schema(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -73,7 +74,7 @@ func TestMediaType_Build_Fail_Examples(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -91,7 +92,7 @@ func TestMediaType_Build_Fail_Encoding(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -116,7 +117,7 @@ x-done: for the day!`
var n MediaType
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `encoding:
meaty/chewy:
@@ -137,7 +138,7 @@ example: a thing`
var n2 MediaType
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -30,7 +31,7 @@ x-tasty: herbs
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "herbs", n.FindExtension("x-tasty").Value)
assert.Equal(t, "https://pb33f.io/auth", n.AuthorizationUrl.Value)
@@ -54,7 +55,7 @@ x-tasty: herbs`
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "herbs", n.FindExtension("x-tasty").Value)
assert.Equal(t, "https://pb33f.io/auth", n.Implicit.Value.AuthorizationUrl.Value)
@@ -74,7 +75,7 @@ func TestOAuthFlow_Build_Implicit_Fail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -91,7 +92,7 @@ func TestOAuthFlow_Build_Password(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "https://pb33f.io/auth", n.Password.Value.AuthorizationUrl.Value)
}
@@ -109,7 +110,7 @@ func TestOAuthFlow_Build_Password_Fail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -126,7 +127,7 @@ func TestOAuthFlow_Build_ClientCredentials(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "https://pb33f.io/auth", n.ClientCredentials.Value.AuthorizationUrl.Value)
}
@@ -144,7 +145,7 @@ func TestOAuthFlow_Build_ClientCredentials_Fail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -161,7 +162,7 @@ func TestOAuthFlow_Build_AuthCode(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "https://pb33f.io/auth", n.AuthorizationCode.Value.AuthorizationUrl.Value)
}
@@ -179,7 +180,7 @@ func TestOAuthFlow_Build_AuthCode_Fail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -198,7 +199,7 @@ x-sleepy: tired`
var n OAuthFlow
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `refreshUrl: https://pb33f.io/refresh
tokenUrl: https://pb33f.io/token
@@ -213,7 +214,7 @@ scopes:
var n2 OAuthFlow
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())
@@ -239,7 +240,7 @@ x-code: cody
var n OAuthFlows
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `authorizationCode:
authorizationUrl: https://pb33f.io/auth
@@ -258,7 +259,7 @@ password:
var n2 OAuthFlows
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/pb33f/libopenapi/index"
@@ -50,7 +51,7 @@ servers:
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, n.Tags.Value, 2)
@@ -87,7 +88,7 @@ func TestOperation_Build_FailDocs(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -104,7 +105,7 @@ func TestOperation_Build_FailParams(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -121,7 +122,7 @@ func TestOperation_Build_FailRequestBody(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -138,7 +139,7 @@ func TestOperation_Build_FailResponses(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -155,7 +156,7 @@ func TestOperation_Build_FailCallbacks(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -172,7 +173,7 @@ func TestOperation_Build_FailSecurity(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -189,7 +190,7 @@ func TestOperation_Build_FailServers(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -229,7 +230,7 @@ x-mint: sweet`
var n Operation
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `tags:
- nice
@@ -265,7 +266,7 @@ x-mint: sweet`
var n2 Operation
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())
@@ -300,7 +301,7 @@ security: []`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, n.Security.Value, 0)

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/pb33f/libopenapi/index"
@@ -55,7 +56,7 @@ content:
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "michelle, meddy and maddy", n.Description.Value)
assert.True(t, n.AllowReserved.Value)
@@ -105,7 +106,7 @@ func TestParameter_Build_Success_Examples(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
exp := n.FindExample("family").Value
@@ -133,7 +134,7 @@ func TestParameter_Build_Fail_Examples(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -149,7 +150,7 @@ func TestParameter_Build_Fail_Schema(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -166,7 +167,7 @@ func TestParameter_Build_Fail_Content(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -216,7 +217,7 @@ content:
var n Parameter
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `description: michelle, meddy and maddy
required: true
@@ -262,7 +263,7 @@ content:
var n2 Parameter
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -222,7 +222,7 @@ func (p *PathItem) Build(ctx context.Context, _, root *yaml.Node, idx *index.Spe
}
pathNode = r
foundContext = nCtx
foundContext = context.WithValue(foundContext, "foundIndex", newIdx)
foundContext = context.WithValue(foundContext, index.FoundIndexKey, newIdx)
if r.Tag == "" {
// If it's a node from file, tag is empty
@@ -239,7 +239,7 @@ func (p *PathItem) Build(ctx context.Context, _, root *yaml.Node, idx *index.Spe
pathNode.Content[1].Value, pathNode.Content[1].Line, pathNode.Content[1].Column)
}
} else {
foundContext = context.WithValue(foundContext, "foundIndex", idx)
foundContext = context.WithValue(foundContext, index.FoundIndexKey, idx)
}
wg.Add(1)
low.BuildModelAsync(pathNode, &op, &wg, &errors)
@@ -285,7 +285,7 @@ func (p *PathItem) Build(ctx context.Context, _, root *yaml.Node, idx *index.Spe
ref = op.Reference
}
err := op.Value.Build(op.Context, op.KeyNode, op.ValueNode, op.Context.Value("foundIndex").(*index.SpecIndex))
err := op.Value.Build(op.Context, op.KeyNode, op.ValueNode, op.Context.Value(index.FoundIndexKey).(*index.SpecIndex))
if ref != "" {
op.Value.Reference.Reference = ref
}

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -43,7 +44,7 @@ x-byebye: boebert`
var n PathItem
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `get:
description: get me
@@ -75,7 +76,7 @@ summary: it's another path item`
var n2 PathItem
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -159,10 +159,11 @@ func (p *Paths) Build(ctx context.Context, _, root *yaml.Node, idx *index.SpecIn
_ = low.BuildModel(pNode, path)
err := path.Build(ctx, cNode, pNode, idx)
// don't fail the pipeline if there is an error, log it instead.
if err != nil {
if idx.GetLogger() != nil {
idx.GetLogger().Error(fmt.Sprintf("error building path item '%s'", err.Error()))
}
//return buildResult{}, err
idx.GetLogger().Error(fmt.Sprintf("error building path item '%s'", err.Error()))
}
return buildResult{

View File

@@ -4,7 +4,11 @@
package v3
import (
"bytes"
"context"
"fmt"
"log/slog"
"strings"
"testing"
"github.com/pb33f/libopenapi/datamodel/low"
@@ -47,7 +51,7 @@ x-milk: cold`
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
path := n.FindPath("/some/path").Value
@@ -79,7 +83,7 @@ func TestPaths_Build_Fail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -105,7 +109,7 @@ func TestPaths_Build_FailRef(t *testing.T) {
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
somePath := n.FindPath("/some/path").Value
@@ -134,14 +138,25 @@ func TestPaths_Build_FailRefDeadEnd(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
idx := index.NewSpecIndex(&idxNode)
var b []byte
buf := bytes.NewBuffer(b)
log := slog.New(slog.NewTextHandler(buf, &slog.HandlerOptions{
Level: slog.LevelError,
}))
cfg := index.SpecIndexConfig{
Logger: log,
}
idx := index.NewSpecIndexWithConfig(&idxNode, &cfg)
var n Paths
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
assert.Error(t, err)
n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Contains(t, buf.String(), "msg=\"unable to locate reference anywhere in the rolodex\" reference=#/no/path")
assert.Contains(t, buf.String(), "msg=\"unable to locate reference anywhere in the rolodex\" reference=#/nowhere")
}
func TestPaths_Build_SuccessRef(t *testing.T) {
@@ -160,13 +175,14 @@ func TestPaths_Build_SuccessRef(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
idx := index.NewSpecIndex(&idxNode)
var n Paths
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
somePath := n.FindPath("/some/path").Value
@@ -189,14 +205,24 @@ func TestPaths_Build_BadParams(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
idx := index.NewSpecIndex(&idxNode)
var b []byte
buf := bytes.NewBuffer(b)
log := slog.New(slog.NewTextHandler(buf, &slog.HandlerOptions{
Level: slog.LevelError,
}))
cfg := index.SpecIndexConfig{
Logger: log,
}
idx := index.NewSpecIndexWithConfig(&idxNode, &cfg)
var n Paths
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
assert.Error(t, err)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Contains(t, buf.String(), "array build failed, input is not an array, line 3, column 5'")
}
func TestPaths_Build_BadRef(t *testing.T) {
@@ -215,14 +241,27 @@ func TestPaths_Build_BadRef(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
idx := index.NewSpecIndex(&idxNode)
var b []byte
buf := bytes.NewBuffer(b)
log := slog.New(slog.NewTextHandler(buf, &slog.HandlerOptions{
Level: slog.LevelError,
}))
cfg := index.SpecIndexConfig{
Logger: log,
}
idx := index.NewSpecIndexWithConfig(&idxNode, &cfg)
var n Paths
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
assert.Error(t, err)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Contains(t, buf.String(), "unable to locate reference anywhere in the rolodex\" reference=#/no-where")
assert.Contains(t, buf.String(), "error building path item 'path item build failed: cannot find reference: #/no-where at line 4, col 10'")
}
func TestPathItem_Build_GoodRef(t *testing.T) {
@@ -251,7 +290,7 @@ func TestPathItem_Build_GoodRef(t *testing.T) {
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
}
@@ -275,14 +314,25 @@ func TestPathItem_Build_BadRef(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
idx := index.NewSpecIndex(&idxNode)
var b []byte
buf := bytes.NewBuffer(b)
log := slog.New(slog.NewTextHandler(buf, &slog.HandlerOptions{
Level: slog.LevelError,
}))
cfg := index.SpecIndexConfig{
Logger: log,
}
idx := index.NewSpecIndexWithConfig(&idxNode, &cfg)
var n Paths
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
assert.Error(t, err)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Contains(t, buf.String(), "unable to locate reference anywhere in the rolodex\" reference=#/~1cakes/NotFound")
assert.Contains(t, buf.String(), "error building path item 'path item build failed: cannot find reference: #/~1another~1path/get at line 4, col 10")
}
func TestPathNoOps(t *testing.T) {
@@ -299,7 +349,7 @@ func TestPathNoOps(t *testing.T) {
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
}
@@ -329,7 +379,7 @@ func TestPathItem_Build_Using_Ref(t *testing.T) {
err := low.BuildModel(rootNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, rootNode.Content[0], idx)
err = n.Build(context.Background(), nil, rootNode.Content[0], idx)
assert.NoError(t, err)
somePath := n.FindPath("/a/path")
@@ -372,7 +422,7 @@ func TestPath_Build_Using_CircularRef(t *testing.T) {
err := low.BuildModel(rootNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, rootNode.Content[0], idx)
err = n.Build(context.Background(), nil, rootNode.Content[0], idx)
assert.Error(t, err)
}
@@ -391,7 +441,16 @@ func TestPath_Build_Using_CircularRefWithOp(t *testing.T) {
var idxNode yaml.Node
mErr := yaml.Unmarshal([]byte(yml), &idxNode)
assert.NoError(t, mErr)
idx := index.NewSpecIndex(&idxNode)
var b []byte
buf := bytes.NewBuffer(b)
log := slog.New(slog.NewTextHandler(buf, &slog.HandlerOptions{
Level: slog.LevelError,
}))
cfg := index.SpecIndexConfig{
Logger: log,
}
idx := index.NewSpecIndexWithConfig(&idxNode, &cfg)
resolve := index.NewResolver(idx)
errs := resolve.CheckForCircularReferences()
@@ -409,8 +468,8 @@ func TestPath_Build_Using_CircularRefWithOp(t *testing.T) {
err := low.BuildModel(rootNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, rootNode.Content[0], idx)
assert.Error(t, err)
_ = n.Build(context.Background(), nil, rootNode.Content[0], idx)
assert.Contains(t, buf.String(), "error building path item 'build schema failed: circular reference 'post -> post -> post' found during lookup at line 4, column 7, It cannot be resolved'")
}
@@ -423,14 +482,23 @@ func TestPaths_Build_BrokenOp(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
idx := index.NewSpecIndex(&idxNode)
var b []byte
buf := bytes.NewBuffer(b)
log := slog.New(slog.NewTextHandler(buf, &slog.HandlerOptions{
Level: slog.LevelError,
}))
cfg := index.SpecIndexConfig{
Logger: log,
}
idx := index.NewSpecIndexWithConfig(&idxNode, &cfg)
var n Paths
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
assert.Error(t, err)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Contains(t, buf.String(), "error building path item 'object extraction failed: reference at line 4, column 7 is empty, it cannot be resolved'")
}
func TestPaths_Hash(t *testing.T) {
@@ -449,7 +517,7 @@ x-france: french`
var n Paths
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `/french/toast:
description: toast
@@ -465,7 +533,7 @@ x-france: french`
var n2 Paths
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())
@@ -493,12 +561,22 @@ func TestPaths_Build_Fail_Many(t *testing.T) {
var idxNode yaml.Node
_ = yaml.Unmarshal([]byte(yml), &idxNode)
idx := index.NewSpecIndex(&idxNode)
var b []byte
buf := bytes.NewBuffer(b)
log := slog.New(slog.NewTextHandler(buf, &slog.HandlerOptions{
Level: slog.LevelError,
}))
cfg := index.SpecIndexConfig{
Logger: log,
}
idx := index.NewSpecIndexWithConfig(&idxNode, &cfg)
var n Paths
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
assert.Error(t, err)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
errors := strings.Split(buf.String(), "\n")
assert.Len(t, errors, 1001)
}

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -28,7 +29,7 @@ x-requesto: presto`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "a nice request", n.Description.Value)
assert.True(t, n.Required.Value)
@@ -51,7 +52,7 @@ func TestRequestBody_Fail(t *testing.T) {
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -75,7 +76,7 @@ x-toast: nice
var n RequestBody
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `description: nice toast
content:
@@ -94,7 +95,7 @@ x-toast: nice`
var n2 RequestBody
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -39,7 +40,7 @@ default:
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "default response", n.Default.Value.Description.Value)
@@ -92,7 +93,7 @@ x-shoes: old`
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
// check hash
assert.Equal(t, "54ab66e6cb8bd226940f421c2387e45215b84c946182435dfe2a3036043fa07c",
@@ -116,7 +117,7 @@ func TestResponses_Build_FailCodes_WrongType(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -134,7 +135,7 @@ func TestResponses_Build_FailCodes(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -151,7 +152,7 @@ func TestResponses_Build_FailDefault(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -171,7 +172,7 @@ func TestResponses_Build_FailBadHeader(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -191,7 +192,7 @@ func TestResponses_Build_FailBadContent(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -211,7 +212,7 @@ func TestResponses_Build_FailBadLinks(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}
@@ -232,7 +233,7 @@ func TestResponses_Build_AllowXPrefixHeader(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "string",
@@ -267,7 +268,7 @@ links:
var n Response
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(nil, idxNode.Content[0], idx)
_ = n.Build(context.Background(), nil, idxNode.Content[0], idx)
yml2 := `description: nice toast
x-ham: jam
@@ -294,7 +295,7 @@ links:
var n2 Response
_ = low.BuildModel(idxNode2.Content[0], &n2)
_ = n2.Build(nil, idxNode2.Content[0], idx2)
_ = n2.Build(context.Background(), nil, idxNode2.Content[0], idx2)
// hash
assert.Equal(t, n.Hash(), n2.Hash())

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/datamodel/low/base"
"github.com/pb33f/libopenapi/index"
@@ -25,7 +26,7 @@ func TestSecurityRequirement_Build(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Len(t, n.Requirements.Value, 1)
@@ -55,7 +56,7 @@ x-milk: please`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "0b5ee36519fdfc6383c7befd92294d77b5799cd115911ff8c3e194f345a8c103",
@@ -86,6 +87,6 @@ func TestSecurityScheme_Build_Fail(t *testing.T) {
err := low.BuildModel(&idxNode, &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.Error(t, err)
}

View File

@@ -4,6 +4,7 @@
package v3
import (
"context"
"github.com/pb33f/libopenapi/datamodel/low"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
@@ -30,7 +31,7 @@ variables:
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "ec69dfcf68ad8988f3804e170ee6c4a7ad2e4ac51084796eea93168820827546",
@@ -63,7 +64,7 @@ description: high quality software for developers.`
err := low.BuildModel(idxNode.Content[0], &n)
assert.NoError(t, err)
err = n.Build(nil, idxNode.Content[0], idx)
err = n.Build(context.Background(), nil, idxNode.Content[0], idx)
assert.NoError(t, err)
assert.Equal(t, "https://pb33f.io", n.URL.Value)
assert.Equal(t, "high quality software for developers.", n.Description.Value)

View File

@@ -13,6 +13,7 @@ import (
type ContextKey string
const CurrentPathKey ContextKey = "currentPath"
const FoundIndexKey ContextKey = "foundIndex"
func (index *SpecIndex) SearchIndexForReferenceByReference(fullRef *Reference) (*Reference, *SpecIndex) {
r, idx, _ := index.SearchIndexForReferenceByReferenceWithContext(context.Background(), fullRef)
@@ -148,7 +149,9 @@ func (index *SpecIndex) SearchIndexForReferenceByReferenceWithContext(ctx contex
}
}
index.logger.Error("unable to locate reference anywhere in the rolodex", "reference", ref)
if index.logger != nil {
index.logger.Error("unable to locate reference anywhere in the rolodex", "reference", ref)
}
return nil, index, ctx
}

View File

@@ -61,11 +61,8 @@ func NewSpecIndexWithConfig(rootNode *yaml.Node, config *SpecIndexConfig) *SpecI
// other than a raw index of every node for every content type in the specification. This process runs as fast as
// possible so dependencies looking through the tree, don't need to walk the entire thing over, and over.
//
// Deprecated: Use NewSpecIndexWithConfig instead, this function will be removed in the future because it
// defaults to allowing remote references and file references. This is a potential security risk and should be controlled by
// providing a SpecIndexConfig that explicitly sets the AllowRemoteLookup and AllowFileLookup to true.
// This function also does not support specifications with relative references that may not exist locally.
// - https://github.com/pb33f/libopenapi/issues/73
// This creates a new index using a default 'open' configuration. This means if a BaseURL or BasePath are supplied
// the rolodex will automatically read those files or open those h
func NewSpecIndex(rootNode *yaml.Node) *SpecIndex {
index := new(SpecIndex)
index.config = CreateOpenAPIIndexConfig()