Working through more coverage

adding more tests.

Signed-off-by: quobix <dave@quobix.com>
This commit is contained in:
quobix
2023-10-31 08:25:56 -04:00
parent ba8b5ac776
commit fde9ede4ac
4 changed files with 31 additions and 9 deletions

View File

@@ -215,7 +215,17 @@ func NewRolodex(indexConfig *SpecIndexConfig) *Rolodex {
} }
func (r *Rolodex) GetIgnoredCircularReferences() []*CircularReferenceResult { func (r *Rolodex) GetIgnoredCircularReferences() []*CircularReferenceResult {
return r.ignoredCircularReferences debounced := make(map[string]*CircularReferenceResult)
for _, c := range r.ignoredCircularReferences {
if _, ok := debounced[c.LoopPoint.FullDefinition]; !ok {
debounced[c.LoopPoint.FullDefinition] = c
}
}
var debouncedResults []*CircularReferenceResult
for _, v := range debounced {
debouncedResults = append(debouncedResults, v)
}
return debouncedResults
} }
func (r *Rolodex) GetIndexingDuration() time.Duration { func (r *Rolodex) GetIndexingDuration() time.Duration {

View File

@@ -198,7 +198,7 @@ func NewRemoteFSWithConfig(specIndexConfig *SpecIndexConfig) (*RemoteFS, error)
} else { } else {
// default http client // default http client
client := &http.Client{ client := &http.Client{
Timeout: time.Second * 60, Timeout: time.Second * 120,
} }
rfs.RemoteHandlerFunc = func(url string) (*http.Response, error) { rfs.RemoteHandlerFunc = func(url string) (*http.Response, error) {
return client.Get(url) return client.Get(url)

View File

@@ -438,7 +438,7 @@ components:
assert.Len(t, rolodex.GetCaughtErrors(), 0) assert.Len(t, rolodex.GetCaughtErrors(), 0)
// multiple loops across two files // multiple loops across two files
assert.Len(t, rolodex.GetIgnoredCircularReferences(), 3) assert.Len(t, rolodex.GetIgnoredCircularReferences(), 1)
} }
func TestRolodex_IndexCircularLookup_PolyItemsHttpOnly(t *testing.T) { func TestRolodex_IndexCircularLookup_PolyItemsHttpOnly(t *testing.T) {
@@ -505,12 +505,18 @@ components:
required: required:
- muffins - muffins
properties: properties:
chuffins:
type: object
allOf:
- $ref: "https://kjahsdkjahdkjashdas.com/third.yaml"
buffins:
type: object
allOf:
- $ref: "https://kjahsdkjahdkjashdas.com/second.yaml#/"
muffins: muffins:
type: object type: object
anyOf: anyOf:
- $ref: "https://kjahsdkjahdkjashdas.com/second.yaml#/components/schemas/CircleTest" - $ref: "https://kjahsdkjahdkjashdas.com/second.yaml#/components/schemas/CircleTest"
- $ref: "https://kjahsdkjahdkjashdas.com/second.yaml#/"
- $ref: "https://kjahsdkjahdkjashdas.com/third.yaml"
` `
var rootNode yaml.Node var rootNode yaml.Node
@@ -536,7 +542,7 @@ components:
assert.Len(t, rolodex.GetCaughtErrors(), 0) assert.Len(t, rolodex.GetCaughtErrors(), 0)
// should only be a single loop. // should only be a single loop.
assert.Len(t, rolodex.GetIgnoredCircularReferences(), 3) assert.Len(t, rolodex.GetIgnoredCircularReferences(), 1)
assert.Equal(t, rolodex.GetRootIndex().GetResolver().GetIndexesVisited(), 6) assert.Equal(t, rolodex.GetRootIndex().GetResolver().GetIndexesVisited(), 6)
} }

View File

@@ -4,6 +4,7 @@
package index package index
import ( import (
"bytes"
"fmt" "fmt"
"github.com/pb33f/libopenapi/utils" "github.com/pb33f/libopenapi/utils"
"log" "log"
@@ -121,8 +122,9 @@ func TestSpecIndex_DigitalOcean(t *testing.T) {
// create a handler that uses an env variable to capture any GITHUB_TOKEN in the OS ENV // create a handler that uses an env variable to capture any GITHUB_TOKEN in the OS ENV
// and inject it into the request header, so this does not fail when running lots of local tests. // and inject it into the request header, so this does not fail when running lots of local tests.
if os.Getenv("GITHUB_TOKEN") != "" { if os.Getenv("GITHUB_TOKEN") != "" {
fmt.Println("GITHUB_TOKEN found, setting remote handler func")
client := &http.Client{ client := &http.Client{
Timeout: time.Second * 60, Timeout: time.Second * 120,
} }
remoteFS.SetRemoteHandlerFunc(func(url string) (*http.Response, error) { remoteFS.SetRemoteHandlerFunc(func(url string) (*http.Response, error) {
request, _ := http.NewRequest(http.MethodGet, url, nil) request, _ := http.NewRequest(http.MethodGet, url, nil)
@@ -233,7 +235,9 @@ func TestSpecIndex_DigitalOcean_LookupsNotAllowed(t *testing.T) {
cf := &SpecIndexConfig{} cf := &SpecIndexConfig{}
cf.AvoidBuildIndex = true cf.AvoidBuildIndex = true
cf.AvoidCircularReferenceCheck = true cf.AvoidCircularReferenceCheck = true
cf.Logger = slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{ var op []byte
buf := bytes.NewBuffer(op)
cf.Logger = slog.New(slog.NewJSONHandler(buf, &slog.HandlerOptions{
Level: slog.LevelError, Level: slog.LevelError,
})) }))
@@ -282,7 +286,9 @@ func TestSpecIndex_BaseURLError(t *testing.T) {
cf.AvoidBuildIndex = true cf.AvoidBuildIndex = true
cf.AllowRemoteLookup = true cf.AllowRemoteLookup = true
cf.AvoidCircularReferenceCheck = true cf.AvoidCircularReferenceCheck = true
cf.Logger = slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{ var op []byte
buf := bytes.NewBuffer(op)
cf.Logger = slog.New(slog.NewJSONHandler(buf, &slog.HandlerOptions{
Level: slog.LevelError, Level: slog.LevelError,
})) }))