github.com/snyk/vervet/v3@v3.7.0/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/v3"
    10  	"github.com/snyk/vervet/v3/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  }