mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-09 12:37:49 +00:00
Workaround to test error in ExampleNewDocument_modifyAndReRender.
Revert change to `Scopes` back to `map` type. `orderedmap.Map` is not properly marshaling this one field from YAML.
This commit is contained in:
@@ -147,7 +147,6 @@ func (n *NodeBuilder) add(key string, i int) {
|
|||||||
// create a new node entry
|
// create a new node entry
|
||||||
nodeEntry := &NodeEntry{Tag: tagName, Key: key}
|
nodeEntry := &NodeEntry{Tag: tagName, Key: key}
|
||||||
nodeEntry.RenderZero = renderZeroFlag
|
nodeEntry.RenderZero = renderZeroFlag
|
||||||
|
|
||||||
switch value.Kind() {
|
switch value.Kind() {
|
||||||
case reflect.Float64, reflect.Float32:
|
case reflect.Float64, reflect.Float32:
|
||||||
nodeEntry.Value = value.Float()
|
nodeEntry.Value = value.Float()
|
||||||
|
|||||||
@@ -292,8 +292,8 @@ func TestNewDocument_Components_SecuritySchemes(t *testing.T) {
|
|||||||
assert.Equal(t, "an oAuth security scheme", oAuth.Description)
|
assert.Equal(t, "an oAuth security scheme", oAuth.Description)
|
||||||
assert.Equal(t, 375, oAuth.GoLow().Description.ValueNode.Line)
|
assert.Equal(t, 375, oAuth.GoLow().Description.ValueNode.Line)
|
||||||
assert.Equal(t, 20, oAuth.GoLow().Description.ValueNode.Column)
|
assert.Equal(t, 20, oAuth.GoLow().Description.ValueNode.Column)
|
||||||
assert.Equal(t, 2, orderedmap.Len(oAuth.Flows.Implicit.Scopes))
|
assert.Equal(t, 2, len(oAuth.Flows.Implicit.Scopes))
|
||||||
assert.Equal(t, "read all burgers", oAuth.Flows.Implicit.Scopes.GetOrZero("read:burgers"))
|
assert.Equal(t, "read all burgers", oAuth.Flows.Implicit.Scopes["read:burgers"])
|
||||||
assert.Equal(t, "https://pb33f.io/oauth", oAuth.Flows.AuthorizationCode.AuthorizationUrl)
|
assert.Equal(t, "https://pb33f.io/oauth", oAuth.Flows.AuthorizationCode.AuthorizationUrl)
|
||||||
|
|
||||||
// check the lowness is low.
|
// check the lowness is low.
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ package v3
|
|||||||
import (
|
import (
|
||||||
"github.com/pb33f/libopenapi/datamodel/high"
|
"github.com/pb33f/libopenapi/datamodel/high"
|
||||||
low "github.com/pb33f/libopenapi/datamodel/low/v3"
|
low "github.com/pb33f/libopenapi/datamodel/low/v3"
|
||||||
"github.com/pb33f/libopenapi/orderedmap"
|
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -16,7 +15,8 @@ type OAuthFlow struct {
|
|||||||
AuthorizationUrl string `json:"authorizationUrl,omitempty" yaml:"authorizationUrl,omitempty"`
|
AuthorizationUrl string `json:"authorizationUrl,omitempty" yaml:"authorizationUrl,omitempty"`
|
||||||
TokenUrl string `json:"tokenUrl,omitempty" yaml:"tokenUrl,omitempty"`
|
TokenUrl string `json:"tokenUrl,omitempty" yaml:"tokenUrl,omitempty"`
|
||||||
RefreshUrl string `json:"refreshUrl,omitempty" yaml:"refreshUrl,omitempty"`
|
RefreshUrl string `json:"refreshUrl,omitempty" yaml:"refreshUrl,omitempty"`
|
||||||
Scopes orderedmap.Map[string, string] `json:"scopes,omitempty" yaml:"scopes,omitempty"`
|
// FIXME: Scopes must be converted to orderedmap.Map. Fix unmarshaling issue causing omitted `scopes` stanza on parsing.
|
||||||
|
Scopes map[string]string `json:"scopes,omitempty" yaml:"scopes,omitempty"`
|
||||||
Extensions map[string]any `json:"-" yaml:"-"`
|
Extensions map[string]any `json:"-" yaml:"-"`
|
||||||
low *low.OAuthFlow
|
low *low.OAuthFlow
|
||||||
}
|
}
|
||||||
@@ -28,9 +28,9 @@ func NewOAuthFlow(flow *low.OAuthFlow) *OAuthFlow {
|
|||||||
o.TokenUrl = flow.TokenUrl.Value
|
o.TokenUrl = flow.TokenUrl.Value
|
||||||
o.AuthorizationUrl = flow.AuthorizationUrl.Value
|
o.AuthorizationUrl = flow.AuthorizationUrl.Value
|
||||||
o.RefreshUrl = flow.RefreshUrl.Value
|
o.RefreshUrl = flow.RefreshUrl.Value
|
||||||
scopes := orderedmap.New[string, string]()
|
scopes := map[string]string{}
|
||||||
for pair := orderedmap.First(flow.Scopes.Value); pair != nil; pair = pair.Next() {
|
for k, v := range flow.Scopes.Value {
|
||||||
scopes.Set(pair.Key().Value, pair.Value().Value)
|
scopes[k.Value] = v.Value
|
||||||
}
|
}
|
||||||
o.Scopes = scopes
|
o.Scopes = scopes
|
||||||
o.Extensions = high.ExtractExtensions(flow.Extensions)
|
o.Extensions = high.ExtractExtensions(flow.Extensions)
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/pb33f/libopenapi/orderedmap"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -17,10 +16,10 @@ func TestOAuthFlow_MarshalYAML(t *testing.T) {
|
|||||||
AuthorizationUrl: "https://pb33f.io",
|
AuthorizationUrl: "https://pb33f.io",
|
||||||
TokenUrl: "https://pb33f.io/token",
|
TokenUrl: "https://pb33f.io/token",
|
||||||
RefreshUrl: "https://pb33f.io/refresh",
|
RefreshUrl: "https://pb33f.io/refresh",
|
||||||
Scopes: orderedmap.ToOrderedMap(map[string]string{
|
Scopes: map[string]string{
|
||||||
"chicken": "nuggets",
|
"chicken": "nuggets",
|
||||||
"beefy": "soup",
|
"beefy": "soup",
|
||||||
}),
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
rend, _ := oflow.Render()
|
rend, _ := oflow.Render()
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ clientCredentials:
|
|||||||
CHIP:CHOP: microwave a sock`
|
CHIP:CHOP: microwave a sock`
|
||||||
|
|
||||||
// now modify it and render it back out, and it should be identical!
|
// now modify it and render it back out, and it should be identical!
|
||||||
r.ClientCredentials.Scopes.Set("CHIP:CHOP", "microwave a sock")
|
r.ClientCredentials.Scopes["CHIP:CHOP"] = "microwave a sock"
|
||||||
rBytes, _ = r.Render()
|
rBytes, _ = r.Render()
|
||||||
assert.Equal(t, modified, strings.TrimSpace(string(rBytes)))
|
assert.Equal(t, modified, strings.TrimSpace(string(rBytes)))
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import (
|
|||||||
|
|
||||||
"github.com/pb33f/libopenapi/datamodel/low"
|
"github.com/pb33f/libopenapi/datamodel/low"
|
||||||
"github.com/pb33f/libopenapi/index"
|
"github.com/pb33f/libopenapi/index"
|
||||||
"github.com/pb33f/libopenapi/orderedmap"
|
|
||||||
"github.com/pb33f/libopenapi/utils"
|
"github.com/pb33f/libopenapi/utils"
|
||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
)
|
)
|
||||||
@@ -97,7 +96,7 @@ type OAuthFlow struct {
|
|||||||
AuthorizationUrl low.NodeReference[string]
|
AuthorizationUrl low.NodeReference[string]
|
||||||
TokenUrl low.NodeReference[string]
|
TokenUrl low.NodeReference[string]
|
||||||
RefreshUrl low.NodeReference[string]
|
RefreshUrl low.NodeReference[string]
|
||||||
Scopes low.NodeReference[orderedmap.Map[low.KeyReference[string], low.ValueReference[string]]]
|
Scopes low.NodeReference[map[low.KeyReference[string]]low.ValueReference[string]]
|
||||||
Extensions map[low.KeyReference[string]]low.ValueReference[any]
|
Extensions map[low.KeyReference[string]]low.ValueReference[any]
|
||||||
*low.Reference
|
*low.Reference
|
||||||
}
|
}
|
||||||
@@ -109,7 +108,7 @@ func (o *OAuthFlow) GetExtensions() map[low.KeyReference[string]]low.ValueRefere
|
|||||||
|
|
||||||
// FindScope attempts to locate a scope using a specified name.
|
// FindScope attempts to locate a scope using a specified name.
|
||||||
func (o *OAuthFlow) FindScope(scope string) *low.ValueReference[string] {
|
func (o *OAuthFlow) FindScope(scope string) *low.ValueReference[string] {
|
||||||
return low.FindItemInOrderedMap[string](scope, o.Scopes.Value)
|
return low.FindItemInMap[string](scope, o.Scopes.Value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindExtension attempts to locate an extension with a specified key
|
// FindExtension attempts to locate an extension with a specified key
|
||||||
@@ -136,10 +135,10 @@ func (o *OAuthFlow) Hash() [32]byte {
|
|||||||
if !o.RefreshUrl.IsEmpty() {
|
if !o.RefreshUrl.IsEmpty() {
|
||||||
f = append(f, o.RefreshUrl.Value)
|
f = append(f, o.RefreshUrl.Value)
|
||||||
}
|
}
|
||||||
keys := make([]string, orderedmap.Len(o.Scopes.Value))
|
keys := make([]string, len(o.Scopes.Value))
|
||||||
z := 0
|
z := 0
|
||||||
for pair := orderedmap.First(o.Scopes.Value); pair != nil; pair = pair.Next() {
|
for k, v := range o.Scopes.Value {
|
||||||
keys[z] = fmt.Sprintf("%s-%s", pair.Key().Value, sha256.Sum256([]byte(fmt.Sprint(pair.Value().Value))))
|
keys[z] = fmt.Sprintf("%s-%s", k.Value, sha256.Sum256([]byte(fmt.Sprint(v.Value))))
|
||||||
z++
|
z++
|
||||||
}
|
}
|
||||||
sort.Strings(keys)
|
sort.Strings(keys)
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ package model
|
|||||||
import (
|
import (
|
||||||
"github.com/pb33f/libopenapi/datamodel/low"
|
"github.com/pb33f/libopenapi/datamodel/low"
|
||||||
v3 "github.com/pb33f/libopenapi/datamodel/low/v3"
|
v3 "github.com/pb33f/libopenapi/datamodel/low/v3"
|
||||||
"github.com/pb33f/libopenapi/orderedmap"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// OAuthFlowsChanges represents changes found between two OpenAPI OAuthFlows objects.
|
// OAuthFlowsChanges represents changes found between two OpenAPI OAuthFlows objects.
|
||||||
@@ -229,26 +228,26 @@ func CompareOAuthFlow(l, r *v3.OAuthFlow) *OAuthFlowChanges {
|
|||||||
|
|
||||||
CheckProperties(props)
|
CheckProperties(props)
|
||||||
|
|
||||||
for pair := orderedmap.First(l.Scopes.Value); pair != nil; pair = pair.Next() {
|
for k, v := range l.Scopes.Value {
|
||||||
if r != nil && r.FindScope(pair.Key().Value) == nil {
|
if r != nil && r.FindScope(k.Value) == nil {
|
||||||
CreateChange(&changes, ObjectRemoved, v3.Scopes,
|
CreateChange(&changes, ObjectRemoved, v3.Scopes,
|
||||||
pair.Value().ValueNode, nil, true,
|
v.ValueNode, nil, true,
|
||||||
pair.Key().Value, nil)
|
k.Value, nil)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if r != nil && r.FindScope(pair.Key().Value) != nil {
|
if r != nil && r.FindScope(k.Value) != nil {
|
||||||
if pair.Value().Value != r.FindScope(pair.Key().Value).Value {
|
if v.Value != r.FindScope(k.Value).Value {
|
||||||
CreateChange(&changes, Modified, v3.Scopes,
|
CreateChange(&changes, Modified, v3.Scopes,
|
||||||
pair.Value().ValueNode, r.FindScope(pair.Key().Value).ValueNode, true,
|
v.ValueNode, r.FindScope(k.Value).ValueNode, true,
|
||||||
pair.Value().Value, r.FindScope(pair.Key().Value).Value)
|
v.Value, r.FindScope(k.Value).Value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for pair := orderedmap.First(r.Scopes.Value); pair != nil; pair = pair.Next() {
|
for k, v := range r.Scopes.Value {
|
||||||
if l != nil && l.FindScope(pair.Key().Value) == nil {
|
if l != nil && l.FindScope(k.Value) == nil {
|
||||||
CreateChange(&changes, ObjectAdded, v3.Scopes,
|
CreateChange(&changes, ObjectAdded, v3.Scopes,
|
||||||
nil, pair.Value().ValueNode, false,
|
nil, v.ValueNode, false,
|
||||||
nil, pair.Key().Value)
|
nil, k.Value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
oa := new(OAuthFlowChanges)
|
oa := new(OAuthFlowChanges)
|
||||||
|
|||||||
Reference in New Issue
Block a user