From a18daf719dea64d617a83bc2331a34a6c00435ed Mon Sep 17 00:00:00 2001 From: Sasha Melentyev Date: Tue, 25 Jan 2022 20:48:40 +0300 Subject: [PATCH] feat(parse): add openapi parse case --- internal/parse/parse.go | 13 +++++++---- internal/parse/parse_test.go | 28 +++++++++++++++++++++++ internal/parse/testdata/empty-openapi.yml | 0 internal/parse/testdata/openapi.yml | 4 ++++ 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 internal/parse/testdata/empty-openapi.yml create mode 100644 internal/parse/testdata/openapi.yml diff --git a/internal/parse/parse.go b/internal/parse/parse.go index c62a349..d8e400e 100644 --- a/internal/parse/parse.go +++ b/internal/parse/parse.go @@ -104,13 +104,16 @@ func GetSpecType(path string) (SpecType, error) { switch splitPath[1] { case "yml", "yaml": - if err := yaml.Unmarshal(file, &openapi.OpenAPI{}); err == nil { - return OpenAPI, nil - } + var openapi openapi.OpenAPI - return Unknown, &SpecTypeError{ - Path: path, + err := yaml.Unmarshal(file, &openapi) + if err != nil || len(openapi.OpenAPI) == 0 { + return Unknown, &SpecTypeError{ + Path: path, + } } + + return OpenAPI, nil case "graphql": return GraphQL, nil default: diff --git a/internal/parse/parse_test.go b/internal/parse/parse_test.go index 3974dcc..97b0913 100644 --- a/internal/parse/parse_test.go +++ b/internal/parse/parse_test.go @@ -53,6 +53,34 @@ func TestParse(t *testing.T) { Path: "./testdata/openapi", }, }, + { + name: "graphql", + path: "./testdata/schema.graphql", + want: api.API{}, + err: nil, + }, + { + name: "", + path: "./testdata/empty-openapi.yml", + want: api.API{}, + err: &parse.SpecTypeError{ + Path: "./testdata/empty-openapi.yml", + }, + }, + { + name: "", + path: "./testdata/openapi.yml", + want: api.API{}, + err: nil, + }, + { + name: "unknown format", + path: "./testdata/api.raml", + want: api.API{}, + err: &parse.SpecTypeError{ + Path: "./testdata/api.raml", + }, + }, } for _, tc := range tests { diff --git a/internal/parse/testdata/empty-openapi.yml b/internal/parse/testdata/empty-openapi.yml new file mode 100644 index 0000000..e69de29 diff --git a/internal/parse/testdata/openapi.yml b/internal/parse/testdata/openapi.yml new file mode 100644 index 0000000..d61f3ea --- /dev/null +++ b/internal/parse/testdata/openapi.yml @@ -0,0 +1,4 @@ +openapi: 3.0.3 +info: + title: Users dummy API + version: 0.1.0