mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-09 04:20:17 +00:00
chore: Adds tests for optional circular references to low/references.go
This commit is contained in:
committed by
Dave Shanley
parent
05d519c25f
commit
d73fde2e42
@@ -133,10 +133,42 @@ func TestIsCircular_LookupFromJourney(t *testing.T) {
|
|||||||
assert.True(t, IsCircular(ref, idx))
|
assert.True(t, IsCircular(ref, idx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsCircular_LookupFromLoopPoint(t *testing.T) {
|
func TestIsCircular_LookupFromJourney_Optional(t *testing.T) {
|
||||||
|
|
||||||
yml := `components:
|
yml := `components:
|
||||||
schemas:
|
schemas:
|
||||||
|
Something:
|
||||||
|
properties:
|
||||||
|
nothing:
|
||||||
|
$ref: '#/components/schemas/Nothing'
|
||||||
|
Nothing:
|
||||||
|
properties:
|
||||||
|
something:
|
||||||
|
$ref: '#/components/schemas/Something'
|
||||||
|
`
|
||||||
|
|
||||||
|
var iNode yaml.Node
|
||||||
|
mErr := yaml.Unmarshal([]byte(yml), &iNode)
|
||||||
|
assert.NoError(t, mErr)
|
||||||
|
idx := index.NewSpecIndex(&iNode)
|
||||||
|
|
||||||
|
yml = `$ref: '#/components/schemas/Something'`
|
||||||
|
|
||||||
|
resolve := resolver.NewResolver(idx)
|
||||||
|
errs := resolve.CheckForCircularReferences()
|
||||||
|
assert.Len(t, errs, 0)
|
||||||
|
|
||||||
|
var idxNode yaml.Node
|
||||||
|
_ = yaml.Unmarshal([]byte(yml), &idxNode)
|
||||||
|
|
||||||
|
ref, err := LocateRefNode(idxNode.Content[0], idx)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, IsCircular(ref, idx))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIsCircular_LookupFromLoopPoint(t *testing.T) {
|
||||||
|
yml := `components:
|
||||||
|
schemas:
|
||||||
Something:
|
Something:
|
||||||
properties:
|
properties:
|
||||||
nothing:
|
nothing:
|
||||||
@@ -170,6 +202,38 @@ func TestIsCircular_LookupFromLoopPoint(t *testing.T) {
|
|||||||
assert.True(t, IsCircular(ref, idx))
|
assert.True(t, IsCircular(ref, idx))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIsCircular_LookupFromLoopPoint_Optional(t *testing.T) {
|
||||||
|
yml := `components:
|
||||||
|
schemas:
|
||||||
|
Something:
|
||||||
|
properties:
|
||||||
|
nothing:
|
||||||
|
$ref: '#/components/schemas/Nothing'
|
||||||
|
Nothing:
|
||||||
|
properties:
|
||||||
|
something:
|
||||||
|
$ref: '#/components/schemas/Something'
|
||||||
|
`
|
||||||
|
|
||||||
|
var iNode yaml.Node
|
||||||
|
mErr := yaml.Unmarshal([]byte(yml), &iNode)
|
||||||
|
assert.NoError(t, mErr)
|
||||||
|
idx := index.NewSpecIndex(&iNode)
|
||||||
|
|
||||||
|
yml = `$ref: '#/components/schemas/Nothing'`
|
||||||
|
|
||||||
|
resolve := resolver.NewResolver(idx)
|
||||||
|
errs := resolve.CheckForCircularReferences()
|
||||||
|
assert.Len(t, errs, 0)
|
||||||
|
|
||||||
|
var idxNode yaml.Node
|
||||||
|
_ = yaml.Unmarshal([]byte(yml), &idxNode)
|
||||||
|
|
||||||
|
ref, err := LocateRefNode(idxNode.Content[0], idx)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, IsCircular(ref, idx))
|
||||||
|
}
|
||||||
|
|
||||||
func TestIsCircular_FromRefLookup(t *testing.T) {
|
func TestIsCircular_FromRefLookup(t *testing.T) {
|
||||||
|
|
||||||
yml := `components:
|
yml := `components:
|
||||||
@@ -211,6 +275,42 @@ func TestIsCircular_FromRefLookup(t *testing.T) {
|
|||||||
assert.False(t, IsCircular(idxNode.Content[0], idx))
|
assert.False(t, IsCircular(idxNode.Content[0], idx))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIsCircular_FromRefLookup_Optional(t *testing.T) {
|
||||||
|
yml := `components:
|
||||||
|
schemas:
|
||||||
|
NotCircle:
|
||||||
|
description: not a circle
|
||||||
|
Something:
|
||||||
|
properties:
|
||||||
|
nothing:
|
||||||
|
$ref: '#/components/schemas/Nothing'
|
||||||
|
Nothing:
|
||||||
|
properties:
|
||||||
|
something:
|
||||||
|
$ref: '#/components/schemas/Something'
|
||||||
|
`
|
||||||
|
|
||||||
|
var iNode yaml.Node
|
||||||
|
mErr := yaml.Unmarshal([]byte(yml), &iNode)
|
||||||
|
assert.NoError(t, mErr)
|
||||||
|
idx := index.NewSpecIndex(&iNode)
|
||||||
|
|
||||||
|
resolve := resolver.NewResolver(idx)
|
||||||
|
errs := resolve.CheckForCircularReferences()
|
||||||
|
assert.Len(t, errs, 0)
|
||||||
|
|
||||||
|
yml = `$ref: '#/components/schemas/Nothing'`
|
||||||
|
var idxNode yaml.Node
|
||||||
|
_ = yaml.Unmarshal([]byte(yml), &idxNode)
|
||||||
|
|
||||||
|
assert.True(t, IsCircular(idxNode.Content[0], idx))
|
||||||
|
|
||||||
|
yml = `$ref: '#/components/schemas/NotCircle'`
|
||||||
|
_ = yaml.Unmarshal([]byte(yml), &idxNode)
|
||||||
|
|
||||||
|
assert.False(t, IsCircular(idxNode.Content[0], idx))
|
||||||
|
}
|
||||||
|
|
||||||
func TestIsCircular_NoNode(t *testing.T) {
|
func TestIsCircular_NoNode(t *testing.T) {
|
||||||
assert.False(t, IsCircular(nil, nil))
|
assert.False(t, IsCircular(nil, nil))
|
||||||
}
|
}
|
||||||
@@ -220,7 +320,6 @@ func TestGetCircularReferenceResult_NoNode(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetCircularReferenceResult_FromJourney(t *testing.T) {
|
func TestGetCircularReferenceResult_FromJourney(t *testing.T) {
|
||||||
|
|
||||||
yml := `components:
|
yml := `components:
|
||||||
schemas:
|
schemas:
|
||||||
Something:
|
Something:
|
||||||
@@ -256,11 +355,43 @@ func TestGetCircularReferenceResult_FromJourney(t *testing.T) {
|
|||||||
circ := GetCircularReferenceResult(ref, idx)
|
circ := GetCircularReferenceResult(ref, idx)
|
||||||
assert.NotNil(t, circ)
|
assert.NotNil(t, circ)
|
||||||
assert.Equal(t, "Nothing -> Something -> Nothing", circ.GenerateJourneyPath())
|
assert.Equal(t, "Nothing -> Something -> Nothing", circ.GenerateJourneyPath())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetCircularReferenceResult_FromJourney_Optional(t *testing.T) {
|
||||||
|
yml := `components:
|
||||||
|
schemas:
|
||||||
|
Something:
|
||||||
|
properties:
|
||||||
|
nothing:
|
||||||
|
$ref: '#/components/schemas/Nothing'
|
||||||
|
Nothing:
|
||||||
|
properties:
|
||||||
|
something:
|
||||||
|
$ref: '#/components/schemas/Something'
|
||||||
|
`
|
||||||
|
|
||||||
|
var iNode yaml.Node
|
||||||
|
mErr := yaml.Unmarshal([]byte(yml), &iNode)
|
||||||
|
assert.NoError(t, mErr)
|
||||||
|
idx := index.NewSpecIndex(&iNode)
|
||||||
|
|
||||||
|
yml = `$ref: '#/components/schemas/Something'`
|
||||||
|
|
||||||
|
resolve := resolver.NewResolver(idx)
|
||||||
|
errs := resolve.CheckForCircularReferences()
|
||||||
|
assert.Len(t, errs, 0)
|
||||||
|
|
||||||
|
var idxNode yaml.Node
|
||||||
|
_ = yaml.Unmarshal([]byte(yml), &idxNode)
|
||||||
|
|
||||||
|
ref, err := LocateRefNode(idxNode.Content[0], idx)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
circ := GetCircularReferenceResult(ref, idx)
|
||||||
|
assert.NotNil(t, circ)
|
||||||
|
assert.Equal(t, "Nothing -> Something -> Nothing", circ.GenerateJourneyPath())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetCircularReferenceResult_FromLoopPoint(t *testing.T) {
|
func TestGetCircularReferenceResult_FromLoopPoint(t *testing.T) {
|
||||||
|
|
||||||
yml := `components:
|
yml := `components:
|
||||||
schemas:
|
schemas:
|
||||||
Something:
|
Something:
|
||||||
@@ -296,11 +427,43 @@ func TestGetCircularReferenceResult_FromLoopPoint(t *testing.T) {
|
|||||||
circ := GetCircularReferenceResult(ref, idx)
|
circ := GetCircularReferenceResult(ref, idx)
|
||||||
assert.NotNil(t, circ)
|
assert.NotNil(t, circ)
|
||||||
assert.Equal(t, "Nothing -> Something -> Nothing", circ.GenerateJourneyPath())
|
assert.Equal(t, "Nothing -> Something -> Nothing", circ.GenerateJourneyPath())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetCircularReferenceResult_FromLoopPoint_Optional(t *testing.T) {
|
||||||
|
yml := `components:
|
||||||
|
schemas:
|
||||||
|
Something:
|
||||||
|
properties:
|
||||||
|
nothing:
|
||||||
|
$ref: '#/components/schemas/Nothing'
|
||||||
|
Nothing:
|
||||||
|
properties:
|
||||||
|
something:
|
||||||
|
$ref: '#/components/schemas/Something'
|
||||||
|
`
|
||||||
|
|
||||||
|
var iNode yaml.Node
|
||||||
|
mErr := yaml.Unmarshal([]byte(yml), &iNode)
|
||||||
|
assert.NoError(t, mErr)
|
||||||
|
idx := index.NewSpecIndex(&iNode)
|
||||||
|
|
||||||
|
yml = `$ref: '#/components/schemas/Nothing'`
|
||||||
|
|
||||||
|
resolve := resolver.NewResolver(idx)
|
||||||
|
errs := resolve.CheckForCircularReferences()
|
||||||
|
assert.Len(t, errs, 0)
|
||||||
|
|
||||||
|
var idxNode yaml.Node
|
||||||
|
_ = yaml.Unmarshal([]byte(yml), &idxNode)
|
||||||
|
|
||||||
|
ref, err := LocateRefNode(idxNode.Content[0], idx)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
circ := GetCircularReferenceResult(ref, idx)
|
||||||
|
assert.NotNil(t, circ)
|
||||||
|
assert.Equal(t, "Nothing -> Something -> Nothing", circ.GenerateJourneyPath())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetCircularReferenceResult_FromMappedRef(t *testing.T) {
|
func TestGetCircularReferenceResult_FromMappedRef(t *testing.T) {
|
||||||
|
|
||||||
yml := `components:
|
yml := `components:
|
||||||
schemas:
|
schemas:
|
||||||
Something:
|
Something:
|
||||||
@@ -334,11 +497,41 @@ func TestGetCircularReferenceResult_FromMappedRef(t *testing.T) {
|
|||||||
circ := GetCircularReferenceResult(idxNode.Content[0], idx)
|
circ := GetCircularReferenceResult(idxNode.Content[0], idx)
|
||||||
assert.NotNil(t, circ)
|
assert.NotNil(t, circ)
|
||||||
assert.Equal(t, "Nothing -> Something -> Nothing", circ.GenerateJourneyPath())
|
assert.Equal(t, "Nothing -> Something -> Nothing", circ.GenerateJourneyPath())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetCircularReferenceResult_FromMappedRef_Optional(t *testing.T) {
|
||||||
|
yml := `components:
|
||||||
|
schemas:
|
||||||
|
Something:
|
||||||
|
properties:
|
||||||
|
nothing:
|
||||||
|
$ref: '#/components/schemas/Nothing'
|
||||||
|
Nothing:
|
||||||
|
properties:
|
||||||
|
something:
|
||||||
|
$ref: '#/components/schemas/Something'
|
||||||
|
`
|
||||||
|
|
||||||
|
var iNode yaml.Node
|
||||||
|
mErr := yaml.Unmarshal([]byte(yml), &iNode)
|
||||||
|
assert.NoError(t, mErr)
|
||||||
|
idx := index.NewSpecIndex(&iNode)
|
||||||
|
|
||||||
|
yml = `$ref: '#/components/schemas/Nothing'`
|
||||||
|
|
||||||
|
resolve := resolver.NewResolver(idx)
|
||||||
|
errs := resolve.CheckForCircularReferences()
|
||||||
|
assert.Len(t, errs, 0)
|
||||||
|
|
||||||
|
var idxNode yaml.Node
|
||||||
|
_ = yaml.Unmarshal([]byte(yml), &idxNode)
|
||||||
|
|
||||||
|
circ := GetCircularReferenceResult(idxNode.Content[0], idx)
|
||||||
|
assert.NotNil(t, circ)
|
||||||
|
assert.Equal(t, "Nothing -> Something -> Nothing", circ.GenerateJourneyPath())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetCircularReferenceResult_NothingFound(t *testing.T) {
|
func TestGetCircularReferenceResult_NothingFound(t *testing.T) {
|
||||||
|
|
||||||
yml := `components:
|
yml := `components:
|
||||||
schemas:
|
schemas:
|
||||||
NotCircle:
|
NotCircle:
|
||||||
|
|||||||
Reference in New Issue
Block a user