mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-09 04:20:17 +00:00
54 lines
1.7 KiB
Go
54 lines
1.7 KiB
Go
// Copyright 2023 Princess B33f Heavy Industries / Dave Shanley
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package index
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"gopkg.in/yaml.v3"
|
|
"io/ioutil"
|
|
"net/url"
|
|
"testing"
|
|
)
|
|
|
|
func TestSpecIndex_SearchIndexForReference(t *testing.T) {
|
|
petstore, _ := ioutil.ReadFile("../test_specs/petstorev3.json")
|
|
var rootNode yaml.Node
|
|
_ = yaml.Unmarshal(petstore, &rootNode)
|
|
|
|
c := CreateOpenAPIIndexConfig()
|
|
idx := NewSpecIndexWithConfig(&rootNode, c)
|
|
|
|
ref := idx.SearchIndexForReference("#/components/schemas/Pet")
|
|
assert.NotNil(t, ref)
|
|
}
|
|
|
|
func TestSpecIndex_SearchIndexForReference_ExternalSpecs(t *testing.T) {
|
|
|
|
// load up an index with lots of references
|
|
petstore, _ := ioutil.ReadFile("../test_specs/digitalocean.yaml")
|
|
var rootNode yaml.Node
|
|
_ = yaml.Unmarshal(petstore, &rootNode)
|
|
|
|
c := CreateOpenAPIIndexConfig()
|
|
c.BaseURL, _ = url.Parse("https://raw.githubusercontent.com/digitalocean/openapi/main/specification")
|
|
idx := NewSpecIndexWithConfig(&rootNode, c)
|
|
|
|
ref := idx.SearchIndexForReference("resources/apps/apps_list_instanceSizes.yml")
|
|
assert.NotNil(t, ref)
|
|
assert.Equal(t, "operationId", ref[0].Node.Content[0].Value)
|
|
|
|
ref = idx.SearchIndexForReference("examples/ruby/domains_create.yml")
|
|
assert.NotNil(t, ref)
|
|
assert.Equal(t, "lang", ref[0].Node.Content[0].Value)
|
|
|
|
ref = idx.SearchIndexForReference("../../shared/responses/server_error.yml")
|
|
assert.NotNil(t, ref)
|
|
assert.Equal(t, "description", ref[0].Node.Content[0].Value)
|
|
|
|
ref = idx.SearchIndexForReference("../models/options.yml")
|
|
assert.NotNil(t, ref)
|
|
assert.Equal(t, "kubernetes_options", ref[0].Node.Content[0].Value)
|
|
|
|
}
|