mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-09 12:37:49 +00:00
Added more support for YAML merge nodes, anchors and aliases
And added deeper support for Aliases. Also added in local file handling through renamed `FSHandler` configuration property for the index. Also re-ran `go fmt` Signed-off-by: Dave Shanley <dave@quobix.com>
This commit is contained in:
@@ -571,20 +571,20 @@ func TestIsNodeFloatValue(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestIsNodeNumberValue(t *testing.T) {
|
||||
n := &yaml.Node{
|
||||
Tag: "!!float",
|
||||
}
|
||||
assert.True(t, IsNodeNumberValue(n))
|
||||
n.Tag = "!!pizza"
|
||||
assert.False(t, IsNodeNumberValue(n))
|
||||
n := &yaml.Node{
|
||||
Tag: "!!float",
|
||||
}
|
||||
assert.True(t, IsNodeNumberValue(n))
|
||||
n.Tag = "!!pizza"
|
||||
assert.False(t, IsNodeNumberValue(n))
|
||||
|
||||
n = &yaml.Node{
|
||||
Tag: "!!int",
|
||||
}
|
||||
assert.True(t, IsNodeNumberValue(n))
|
||||
n.Tag = "!!pizza"
|
||||
assert.False(t, IsNodeNumberValue(n))
|
||||
assert.False(t, IsNodeNumberValue(nil))
|
||||
n = &yaml.Node{
|
||||
Tag: "!!int",
|
||||
}
|
||||
assert.True(t, IsNodeNumberValue(n))
|
||||
n.Tag = "!!pizza"
|
||||
assert.False(t, IsNodeNumberValue(n))
|
||||
assert.False(t, IsNodeNumberValue(nil))
|
||||
}
|
||||
|
||||
func TestIsNodeFloatValue_Nil(t *testing.T) {
|
||||
@@ -767,6 +767,69 @@ func TestIsNodeRefValue(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func TestIsNodeAlias(t *testing.T) {
|
||||
|
||||
yml := `things:
|
||||
&anchorA
|
||||
- Stuff
|
||||
- Junk
|
||||
thangs: *anchorA`
|
||||
|
||||
var node yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(yml), &node)
|
||||
|
||||
ref, a := IsNodeAlias(node.Content[0].Content[3])
|
||||
|
||||
assert.True(t, a)
|
||||
assert.Len(t, ref.Content, 2)
|
||||
|
||||
}
|
||||
|
||||
func TestNodeAlias(t *testing.T) {
|
||||
|
||||
yml := `things:
|
||||
&anchorA
|
||||
- Stuff
|
||||
- Junk
|
||||
thangs: *anchorA`
|
||||
|
||||
var node yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(yml), &node)
|
||||
|
||||
ref := NodeAlias(node.Content[0].Content[3])
|
||||
|
||||
assert.Len(t, ref.Content, 2)
|
||||
|
||||
}
|
||||
|
||||
func TestCheckForMergeNodes(t *testing.T) {
|
||||
|
||||
yml := `x-common-definitions:
|
||||
life_cycle_types: &life_cycle_types_def
|
||||
type: string
|
||||
enum: ["Onboarding", "Monitoring", "Re-Assessment"]
|
||||
description: The type of life cycle
|
||||
<<: *life_cycle_types_def`
|
||||
|
||||
var node yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(yml), &node)
|
||||
|
||||
mainNode := node.Content[0]
|
||||
|
||||
CheckForMergeNodes(mainNode)
|
||||
|
||||
_, _, enumVal := FindKeyNodeFullTop("enum", mainNode.Content)
|
||||
_, _, descriptionVal := FindKeyNodeFullTop("description", mainNode.Content)
|
||||
|
||||
assert.Equal(t, "The type of life cycle", descriptionVal.Value)
|
||||
assert.Len(t, enumVal.Content, 3)
|
||||
|
||||
}
|
||||
|
||||
func TestCheckForMergeNodes_Empty_NoPanic(t *testing.T) {
|
||||
CheckForMergeNodes(nil)
|
||||
}
|
||||
|
||||
func TestIsNodeRefValue_False(t *testing.T) {
|
||||
|
||||
f := &yaml.Node{
|
||||
|
||||
Reference in New Issue
Block a user