mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-10 12:37:48 +00:00
Working through what-changed fixes and tuneups.
more testing is required, however things feel quite reasonable and rounded. All changes correctly detected in a spec so far.
This commit is contained in:
@@ -5,7 +5,7 @@ package model
|
||||
|
||||
import (
|
||||
"github.com/pb33f/libopenapi/datamodel/low"
|
||||
"github.com/pb33f/libopenapi/datamodel/low/v2"
|
||||
v2 "github.com/pb33f/libopenapi/datamodel/low/v2"
|
||||
"github.com/pb33f/libopenapi/datamodel/low/v3"
|
||||
"github.com/pb33f/libopenapi/index"
|
||||
"github.com/pb33f/libopenapi/resolver"
|
||||
@@ -17,18 +17,18 @@ import (
|
||||
func TestCompareComponents_Swagger_Definitions_Equal(t *testing.T) {
|
||||
|
||||
left := `thing1:
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.`
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.`
|
||||
|
||||
right := `thing1:
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.`
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -50,18 +50,15 @@ thing2:
|
||||
func TestCompareComponents_Swagger_Definitions_Modified(t *testing.T) {
|
||||
|
||||
left := `thing1:
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: int
|
||||
description: another thing.`
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: int
|
||||
description: another thing.`
|
||||
|
||||
right := `thing1:
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.`
|
||||
type: int
|
||||
description: a thing that changed`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -77,30 +74,29 @@ thing2:
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 1, extChanges.TotalChanges())
|
||||
assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
assert.Equal(t, 1, extChanges.TotalBreakingChanges())
|
||||
assert.Equal(t, 1, extChanges.SchemaChanges["thing2"].TotalChanges())
|
||||
|
||||
}
|
||||
|
||||
func TestCompareComponents_Swagger_Definitions_Added(t *testing.T) {
|
||||
|
||||
left := `thing1:
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.`
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.`
|
||||
|
||||
right := `thing1:
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.
|
||||
thing3:
|
||||
type: int
|
||||
description: added a thing`
|
||||
type: int
|
||||
description: added a thing`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -125,21 +121,21 @@ thing3:
|
||||
func TestCompareComponents_Swagger_Definitions_Removed(t *testing.T) {
|
||||
|
||||
left := `thing1:
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.`
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.`
|
||||
|
||||
right := `thing1:
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.
|
||||
type: int
|
||||
description: a thing
|
||||
thing2:
|
||||
type: string
|
||||
description: another thing.
|
||||
thing3:
|
||||
type: int
|
||||
description: added a thing`
|
||||
type: int
|
||||
description: added a thing`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -161,95 +157,23 @@ thing3:
|
||||
assert.Equal(t, "thing3", extChanges.Changes[0].Original)
|
||||
}
|
||||
|
||||
func TestCompareComponents_Swagger_Parameters_Equal(t *testing.T) {
|
||||
|
||||
left := `param1:
|
||||
name: nap
|
||||
param2:
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
`
|
||||
right := `param1:
|
||||
name: nap
|
||||
param2:
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v2.ParameterDefinitions
|
||||
var rDoc v2.ParameterDefinitions
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_Swagger_Parameters_Modified(t *testing.T) {
|
||||
|
||||
left := `param1:
|
||||
name: nap
|
||||
param2:
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
`
|
||||
right := `param1:
|
||||
name: WIDE AWAKE
|
||||
param2:
|
||||
name: sleep
|
||||
param3:
|
||||
name: KINDA SNOOZ`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v2.ParameterDefinitions
|
||||
var rDoc v2.ParameterDefinitions
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
assert.Equal(t, 2, extChanges.TotalBreakingChanges())
|
||||
assert.Equal(t, Modified, extChanges.ParameterChanges["param1"].Changes[0].ChangeType)
|
||||
assert.Equal(t, "WIDE AWAKE", extChanges.ParameterChanges["param1"].Changes[0].New)
|
||||
assert.Equal(t, "KINDA SNOOZ", extChanges.ParameterChanges["param3"].Changes[0].New)
|
||||
assert.Equal(t, v3.NameLabel, extChanges.ParameterChanges["param1"].Changes[0].Property)
|
||||
|
||||
}
|
||||
|
||||
func TestCompareComponents_Swagger_Parameters_Added(t *testing.T) {
|
||||
|
||||
left := `param1:
|
||||
name: nap
|
||||
name: nap
|
||||
param2:
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
`
|
||||
right := `param1:
|
||||
name: nap
|
||||
name: nap
|
||||
param2:
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
param4:
|
||||
name: I woke up!`
|
||||
name: I woke up!`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -274,20 +198,20 @@ param4:
|
||||
func TestCompareComponents_Swagger_Parameters_Removed(t *testing.T) {
|
||||
|
||||
left := `param1:
|
||||
name: nap
|
||||
name: nap
|
||||
param2:
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
`
|
||||
right := `param1:
|
||||
name: nap
|
||||
name: nap
|
||||
param2:
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
name: sleep
|
||||
param3:
|
||||
name: snooze
|
||||
param4:
|
||||
name: I woke up!`
|
||||
name: I woke up!`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -309,81 +233,19 @@ param4:
|
||||
assert.Equal(t, "param4", extChanges.Changes[0].Original)
|
||||
}
|
||||
|
||||
func TestCompareComponents_Swagger_Responses_Equal(t *testing.T) {
|
||||
|
||||
left := `resp1:
|
||||
description: hi!
|
||||
resp2:
|
||||
description: bye!
|
||||
`
|
||||
right := `resp1:
|
||||
description: hi!
|
||||
resp2:
|
||||
description: bye!`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v2.ResponsesDefinitions
|
||||
var rDoc v2.ResponsesDefinitions
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_Swagger_Responses_Modified(t *testing.T) {
|
||||
|
||||
left := `resp1:
|
||||
description: hi!
|
||||
resp2:
|
||||
description: bye!
|
||||
`
|
||||
right := `resp1:
|
||||
description: hi!
|
||||
resp2:
|
||||
description: oh, so you want to change huh?`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v2.ResponsesDefinitions
|
||||
var rDoc v2.ResponsesDefinitions
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
|
||||
assert.Equal(t, 1, extChanges.TotalChanges())
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
assert.Equal(t, 1, extChanges.ResponsesChanges["resp2"].TotalChanges())
|
||||
assert.Equal(t, v3.DescriptionLabel, extChanges.ResponsesChanges["resp2"].Changes[0].Property)
|
||||
}
|
||||
|
||||
func TestCompareComponents_Swagger_Responses_Added(t *testing.T) {
|
||||
|
||||
left := `resp1:
|
||||
description: hi!
|
||||
description: hi!
|
||||
resp2:
|
||||
description: bye!
|
||||
description: bye!
|
||||
`
|
||||
right := `resp1:
|
||||
description: hi!
|
||||
description: hi!
|
||||
resp2:
|
||||
description: bye!
|
||||
resp3:
|
||||
description: another response!`
|
||||
description: bye!
|
||||
resp3:
|
||||
description: another response!`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -410,16 +272,16 @@ resp3:
|
||||
func TestCompareComponents_Swagger_Responses_Removed(t *testing.T) {
|
||||
|
||||
left := `resp1:
|
||||
description: hi!
|
||||
description: hi!
|
||||
resp2:
|
||||
description: bye!
|
||||
description: bye!
|
||||
`
|
||||
right := `resp1:
|
||||
description: hi!
|
||||
description: hi!
|
||||
resp2:
|
||||
description: bye!
|
||||
resp3:
|
||||
description: another response!`
|
||||
description: bye!
|
||||
resp3:
|
||||
description: another response!`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -443,46 +305,15 @@ resp3:
|
||||
assert.Equal(t, v2.ResponsesLabel, extChanges.Changes[0].Property)
|
||||
}
|
||||
|
||||
func TestCompareComponents_Swagger_SecurityDefinitions_Equal(t *testing.T) {
|
||||
|
||||
left := `scheme1:
|
||||
description: hi!
|
||||
scheme2:
|
||||
description: bye!
|
||||
`
|
||||
right := `scheme1:
|
||||
description: hi!
|
||||
scheme2:
|
||||
description: bye!`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v2.SecurityDefinitions
|
||||
var rDoc v2.SecurityDefinitions
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_Swagger_SecurityDefinitions_Modified(t *testing.T) {
|
||||
|
||||
left := `scheme1:
|
||||
description: hi!
|
||||
scheme2:
|
||||
description: bye!
|
||||
`
|
||||
description: hi!`
|
||||
|
||||
right := `scheme1:
|
||||
description: hi!
|
||||
description: hi! again
|
||||
scheme2:
|
||||
description: bye! again!`
|
||||
description: bye! again!`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -498,10 +329,10 @@ scheme2:
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 1, extChanges.TotalChanges())
|
||||
assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
assert.Equal(t, 1, extChanges.SecuritySchemeChanges["scheme2"].TotalChanges())
|
||||
assert.Equal(t, v3.DescriptionLabel, extChanges.SecuritySchemeChanges["scheme2"].Changes[0].Property)
|
||||
assert.Equal(t, 1, extChanges.SecuritySchemeChanges["scheme1"].TotalChanges())
|
||||
assert.Equal(t, v3.DescriptionLabel, extChanges.SecuritySchemeChanges["scheme1"].Changes[0].Property)
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Schemas_Equal(t *testing.T) {
|
||||
@@ -704,12 +535,11 @@ responses:
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Responses_FullBuild(t *testing.T) {
|
||||
left := `components:
|
||||
responses:
|
||||
coffee:
|
||||
description: tasty
|
||||
tv:
|
||||
$ref: '#/components/responses/coffee'`
|
||||
left := `responses:
|
||||
coffee:
|
||||
description: tasty
|
||||
tv:
|
||||
$ref: '#/components/responses/coffee'`
|
||||
|
||||
right := left
|
||||
|
||||
@@ -734,6 +564,44 @@ func TestCompareComponents_OpenAPI_Responses_FullBuild(t *testing.T) {
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_ResponsesAdd_FullBuild(t *testing.T) {
|
||||
left := `responses:
|
||||
coffee:
|
||||
description: tasty
|
||||
tv:
|
||||
$ref: '#/responses/coffee'`
|
||||
|
||||
right := `responses:
|
||||
herbs:
|
||||
description: refreshing
|
||||
coffee:
|
||||
description: tasty
|
||||
tv:
|
||||
$ref: '#/responses/coffee'`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v3.Components
|
||||
var rDoc v3.Components
|
||||
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
|
||||
idx := index.NewSpecIndex(&lNode)
|
||||
|
||||
_ = lDoc.Build(lNode.Content[0], idx)
|
||||
_ = rDoc.Build(rNode.Content[0], idx)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 1, extChanges.TotalChanges())
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Responses_FullBuild_IdenticalRef(t *testing.T) {
|
||||
left := `components:
|
||||
responses:
|
||||
@@ -815,37 +683,37 @@ func TestCompareComponents_OpenAPI_Responses_FullBuild_CircularRef(t *testing.T)
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Responses_Modify(t *testing.T) {
|
||||
|
||||
left := `responses:
|
||||
niceResponse:
|
||||
description: hello
|
||||
badResponse:
|
||||
description: go away please`
|
||||
|
||||
right := `responses:
|
||||
niceResponse:
|
||||
description: hello my matey
|
||||
badResponse:
|
||||
description: go away please, now!`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v3.Components
|
||||
var rDoc v3.Components
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&rDoc, &lDoc)
|
||||
assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
}
|
||||
//func TestCompareComponents_OpenAPI_Responses_Modify(t *testing.T) {
|
||||
//
|
||||
// left := `responses:
|
||||
// niceResponse:
|
||||
// description: hello
|
||||
// badResponse:
|
||||
// description: go away please`
|
||||
//
|
||||
// right := `responses:
|
||||
// niceResponse:
|
||||
// description: hello my matey
|
||||
// badResponse:
|
||||
// description: go away please, now!`
|
||||
//
|
||||
// var lNode, rNode yaml.Node
|
||||
// _ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
// _ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
//
|
||||
// // create low level objects
|
||||
// var lDoc v3.Components
|
||||
// var rDoc v3.Components
|
||||
// _ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
// _ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
// _ = lDoc.Build(lNode.Content[0], nil)
|
||||
// _ = rDoc.Build(rNode.Content[0], nil)
|
||||
//
|
||||
// // compare.
|
||||
// extChanges := CompareComponents(&rDoc, &lDoc)
|
||||
// assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
// assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
//}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Responses_Add(t *testing.T) {
|
||||
|
||||
@@ -944,38 +812,6 @@ func TestCompareComponents_OpenAPI_Parameters_Equal(t *testing.T) {
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Parameters_Modified(t *testing.T) {
|
||||
|
||||
left := `parameters:
|
||||
param1:
|
||||
name: a parameter
|
||||
param2:
|
||||
name: another param`
|
||||
|
||||
right := `parameters:
|
||||
param1:
|
||||
name: a parameter modified
|
||||
param2:
|
||||
name: another param but modified`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v3.Components
|
||||
var rDoc v3.Components
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
assert.Equal(t, 2, extChanges.TotalBreakingChanges())
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Parameters_Added(t *testing.T) {
|
||||
|
||||
left := `parameters:
|
||||
@@ -1046,99 +882,11 @@ func TestCompareComponents_OpenAPI_Parameters_Removed(t *testing.T) {
|
||||
assert.Equal(t, "param3", extChanges.Changes[0].Original)
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Examples_Equal(t *testing.T) {
|
||||
|
||||
left := `examples:
|
||||
example1:
|
||||
description: an example
|
||||
example2:
|
||||
description: another example`
|
||||
|
||||
right := left
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v3.Components
|
||||
var rDoc v3.Components
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Examples_Modified(t *testing.T) {
|
||||
|
||||
left := `examples:
|
||||
example1:
|
||||
description: an example
|
||||
example2:
|
||||
description: another example`
|
||||
|
||||
right := `examples:
|
||||
example1:
|
||||
description: change me
|
||||
example2:
|
||||
description: grow me`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v3.Components
|
||||
var rDoc v3.Components
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_RequestBodies_Equal(t *testing.T) {
|
||||
|
||||
left := `requestBodies:
|
||||
body1:
|
||||
description: a request
|
||||
body2:
|
||||
description: another request`
|
||||
|
||||
right := left
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v3.Components
|
||||
var rDoc v3.Components
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_RequestBodies_Modified(t *testing.T) {
|
||||
|
||||
left := `requestBodies:
|
||||
body1:
|
||||
description: a request
|
||||
body2:
|
||||
description: another request`
|
||||
description: a request`
|
||||
|
||||
right := `requestBodies:
|
||||
body1:
|
||||
@@ -1160,50 +908,21 @@ func TestCompareComponents_OpenAPI_RequestBodies_Modified(t *testing.T) {
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
assert.Equal(t, 1, extChanges.TotalChanges())
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Headers_Equal(t *testing.T) {
|
||||
func TestCompareComponents_OpenAPI_Headers_Add(t *testing.T) {
|
||||
|
||||
left := `headers:
|
||||
header1:
|
||||
description: a header
|
||||
header2:
|
||||
description: another header`
|
||||
|
||||
right := left
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v3.Components
|
||||
var rDoc v3.Components
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Headers_Modified(t *testing.T) {
|
||||
|
||||
left := `headers:
|
||||
header1:
|
||||
description: a header
|
||||
header2:
|
||||
description: another header`
|
||||
description: a header`
|
||||
|
||||
right := `headers:
|
||||
header1:
|
||||
description: a header but different
|
||||
description: a header
|
||||
header2:
|
||||
description: another header, also different`
|
||||
description: another header`
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
@@ -1219,7 +938,7 @@ func TestCompareComponents_OpenAPI_Headers_Modified(t *testing.T) {
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
assert.Equal(t, 1, extChanges.TotalChanges())
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
}
|
||||
|
||||
@@ -1282,40 +1001,11 @@ func TestCompareComponents_OpenAPI_SecuritySchemes_Modified(t *testing.T) {
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Links_Equal(t *testing.T) {
|
||||
func TestCompareComponents_OpenAPI_Links_Added(t *testing.T) {
|
||||
|
||||
left := `links:
|
||||
link1:
|
||||
operationId: link1
|
||||
link2:
|
||||
operationId: link2`
|
||||
|
||||
right := left
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v3.Components
|
||||
var rDoc v3.Components
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Nil(t, extChanges)
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Links_Modified(t *testing.T) {
|
||||
|
||||
left := `links:
|
||||
link1:
|
||||
operationId: link1
|
||||
link2:
|
||||
operationId: link2`
|
||||
operationId: link1`
|
||||
|
||||
right := `links:
|
||||
link1:
|
||||
@@ -1337,35 +1027,8 @@ func TestCompareComponents_OpenAPI_Links_Modified(t *testing.T) {
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 2, extChanges.TotalChanges())
|
||||
assert.Equal(t, 2, extChanges.TotalBreakingChanges())
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Callbacks_Equal(t *testing.T) {
|
||||
|
||||
left := `callbacks:
|
||||
link1:
|
||||
url: https://pb33f.io
|
||||
link2:
|
||||
url: https://pb33f.io`
|
||||
|
||||
right := left
|
||||
|
||||
var lNode, rNode yaml.Node
|
||||
_ = yaml.Unmarshal([]byte(left), &lNode)
|
||||
_ = yaml.Unmarshal([]byte(right), &rNode)
|
||||
|
||||
// create low level objects
|
||||
var lDoc v3.Components
|
||||
var rDoc v3.Components
|
||||
_ = low.BuildModel(lNode.Content[0], &lDoc)
|
||||
_ = low.BuildModel(rNode.Content[0], &rDoc)
|
||||
_ = lDoc.Build(lNode.Content[0], nil)
|
||||
_ = rDoc.Build(rNode.Content[0], nil)
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Nil(t, extChanges)
|
||||
assert.Equal(t, 1, extChanges.TotalChanges())
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Callbacks_Modified(t *testing.T) {
|
||||
@@ -1374,11 +1037,7 @@ func TestCompareComponents_OpenAPI_Callbacks_Modified(t *testing.T) {
|
||||
link1:
|
||||
'{$request.query.queryUrl}':
|
||||
post:
|
||||
description: a nice callback
|
||||
link2:
|
||||
'{$pizza.cake.burgers}':
|
||||
post:
|
||||
description: pizza and cake, and burgers.`
|
||||
description: a nice callback`
|
||||
|
||||
right := `callbacks:
|
||||
link1:
|
||||
@@ -1404,8 +1063,8 @@ func TestCompareComponents_OpenAPI_Callbacks_Modified(t *testing.T) {
|
||||
|
||||
// compare.
|
||||
extChanges := CompareComponents(&lDoc, &rDoc)
|
||||
assert.Equal(t, 3, extChanges.TotalChanges())
|
||||
assert.Equal(t, 1, extChanges.TotalBreakingChanges())
|
||||
assert.Equal(t, 1, extChanges.TotalChanges())
|
||||
assert.Equal(t, 0, extChanges.TotalBreakingChanges())
|
||||
}
|
||||
|
||||
func TestCompareComponents_OpenAPI_Extensions_Modified(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user