github.com/snyk/vervet/v6@v6.2.4/include_headers_test.go (about) 1 package vervet_test 2 3 import ( 4 "context" 5 "testing" 6 7 qt "github.com/frankban/quicktest" 8 9 "github.com/snyk/vervet/v6" 10 "github.com/snyk/vervet/v6/testdata" 11 ) 12 13 func TestCommonResponseHeaders(t *testing.T) { 14 c := qt.New(t) 15 specFile := testdata.Path("resources/_examples/hello-world/2021-06-13/spec.yaml") 16 doc, err := vervet.NewDocumentFile(specFile) 17 c.Assert(err, qt.IsNil) 18 err = doc.Validate(context.TODO()) 19 c.Assert(err, qt.IsNil) 20 21 // Headers are not included 22 pathItem := doc.Paths["/examples/hello-world"] 23 c.Assert(pathItem, qt.Not(qt.IsNil)) 24 resp := pathItem.Post.Responses["201"].Value 25 c.Assert(resp, qt.Not(qt.IsNil)) 26 // There's a Location header defined outside of the common includes 27 c.Assert(resp.Headers, qt.HasLen, 1) 28 29 err = vervet.IncludeHeaders(doc) 30 c.Assert(err, qt.IsNil) 31 32 // Included header refs are resolved 33 pathItem = doc.Paths["/examples/hello-world"] 34 c.Assert(pathItem, qt.Not(qt.IsNil)) 35 resp = pathItem.Post.Responses["201"].Value 36 c.Assert(resp, qt.Not(qt.IsNil)) 37 // Now add 3 more common included headers 38 c.Assert(resp.Headers, qt.HasLen, 4) 39 for _, name := range []string{"snyk-version-requested", "snyk-version-served", "snyk-request-id"} { 40 // All of these headers are string type 41 c.Assert(resp.Headers[name].Value.Schema.Value.Type, qt.Equals, "string") 42 } 43 }