Files
libopenapi/datamodel/high/v3/callback_test.go
Dave Shanley c3cf5f1e38 Added support for unevaluatedProperties as Schema and bool #118
Also ran `gofmt` across the entire project. Things need cleaning up.

Signed-off-by: Dave Shanley <dave@quobix.com>
2023-06-17 14:12:27 -04:00

77 lines
1.9 KiB
Go

// Copyright 2023 Princess B33f Heavy Industries / Dave Shanley
// SPDX-License-Identifier: MIT
package v3
import (
"github.com/pb33f/libopenapi/datamodel/low"
v3 "github.com/pb33f/libopenapi/datamodel/low/v3"
"github.com/pb33f/libopenapi/index"
"github.com/stretchr/testify/assert"
"gopkg.in/yaml.v3"
"strings"
"testing"
)
func TestCallback_MarshalYAML(t *testing.T) {
cb := &Callback{
Expression: map[string]*PathItem{
"https://pb33f.io": {
Get: &Operation{
OperationId: "oneTwoThree",
},
},
"https://pb33f.io/libopenapi": {
Get: &Operation{
OperationId: "openaypeeeye",
},
},
},
Extensions: map[string]any{
"x-burgers": "why not?",
},
}
rend, _ := cb.Render()
// there is no way to determine order in brand new maps, so we have to check length.
assert.Len(t, rend, 152)
// mutate
cb.Expression["https://pb33f.io"].Get.OperationId = "blim-blam"
cb.Extensions = map[string]interface{}{"x-burgers": "yes please!"}
rend, _ = cb.Render()
// there is no way to determine order in brand new maps, so we have to check length.
assert.Len(t, rend, 153)
k := `x-break-everything: please
'{$request.query.queryUrl}':
post:
description: Callback payload
responses:
"200":
description: callback successfully processed
content:
application/json:
schema:
type: string`
var idxNode yaml.Node
err := yaml.Unmarshal([]byte(k), &idxNode)
assert.NoError(t, err)
idx := index.NewSpecIndexWithConfig(&idxNode, index.CreateOpenAPIIndexConfig())
var n v3.Callback
_ = low.BuildModel(idxNode.Content[0], &n)
_ = n.Build(idxNode.Content[0], idx)
r := NewCallback(&n)
assert.Equal(t, "please", r.Extensions["x-break-everything"])
rend, _ = r.Render()
assert.Equal(t, k, strings.TrimSpace(string(rend)))
}