diff --git a/datamodel/low/v2/swagger.go b/datamodel/low/v2/swagger.go index 6493fb9..6f5bb35 100644 --- a/datamodel/low/v2/swagger.go +++ b/datamodel/low/v2/swagger.go @@ -181,10 +181,7 @@ func createDocument(info *datamodel.SpecInfo, config *datamodel.DocumentConfigur if idxConfig.BaseURL != nil { // create a remote filesystem - remoteFS, fsErr := index.NewRemoteFSWithConfig(idxConfig) - if fsErr != nil { - return nil, fsErr - } + remoteFS, _ := index.NewRemoteFSWithConfig(idxConfig) if config.RemoteURLHandler != nil { remoteFS.RemoteHandlerFunc = config.RemoteURLHandler } diff --git a/datamodel/low/v2/swagger_test.go b/datamodel/low/v2/swagger_test.go index eef0cf7..af114bc 100644 --- a/datamodel/low/v2/swagger_test.go +++ b/datamodel/low/v2/swagger_test.go @@ -467,3 +467,22 @@ func TestRolodexRemoteFileSystem_CustomHttpHandler(t *testing.T) { assert.NotNil(t, lDoc) assert.Error(t, err) } + +func TestRolodexRemoteFileSystem_FailRemoteFS(t *testing.T) { + data, _ := os.ReadFile("../../../test_specs/first.yaml") + info, _ := datamodel.ExtractSpecInfo(data) + + cf := datamodel.NewDocumentConfiguration() + cf.RemoteURLHandler = http.Get + baseUrl := "https://no-no-this-will-not-work-it-just-will-not-get-the-job-done-mate.com" + u, _ := url.Parse(baseUrl) + cf.BaseURL = u + + pizza := func(url string) (resp *http.Response, err error) { + return nil, nil + } + cf.RemoteURLHandler = pizza + lDoc, err := CreateDocumentFromConfig(info, cf) + assert.NotNil(t, lDoc) + assert.Error(t, err) +} diff --git a/datamodel/low/v3/create_document_test.go b/datamodel/low/v3/create_document_test.go index 6abcec8..fc91222 100644 --- a/datamodel/low/v3/create_document_test.go +++ b/datamodel/low/v3/create_document_test.go @@ -825,6 +825,16 @@ func TestCreateDocument_YamlAnchor(t *testing.T) { assert.NotNil(t, postJsonType) } +func TestCreateDocument_NotOpenAPI_EnforcedDocCheck(t *testing.T) { + yml := `notadoc: no` + + info, _ := datamodel.ExtractSpecInfo([]byte(yml)) + var err error + _, err = CreateDocumentFromConfig(info, &datamodel.DocumentConfiguration{}) + assert.Equal(t, + "no openapi version/tag found, cannot create document", err.Error()) +} + func ExampleCreateDocument() { // How to create a low-level OpenAPI 3 Document diff --git a/document_test.go b/document_test.go index a9e2bab..4562007 100644 --- a/document_test.go +++ b/document_test.go @@ -706,6 +706,9 @@ paths: panic(err) } + assert.NotNil(t, doc.GetConfiguration()) + assert.Equal(t, doc.GetConfiguration(), cf) + result, errs := doc.BuildV3Model() if len(errs) > 0 { panic(errs) diff --git a/index/spec_index_test.go b/index/spec_index_test.go index 3d9c896..d0ff277 100644 --- a/index/spec_index_test.go +++ b/index/spec_index_test.go @@ -88,6 +88,8 @@ func TestSpecIndex_ExtractRefsStripe(t *testing.T) { assert.Len(t, index.GetAllReferenceSchemas(), 1972) assert.NotNil(t, index.GetRootServersNode()) assert.Len(t, index.GetAllRootServers(), 1) + assert.Equal(t, "", index.GetSpecAbsolutePath()) + assert.NotNil(t, index.GetLogger()) // not required, but flip the circular result switch on and off. assert.False(t, index.AllowCircularReferenceResolving())