github.com/snyk/vervet/v4@v4.27.2/ref_alias_resolver_test.go (about)

     1  package vervet_test
     2  
     3  import (
     4  	"context"
     5  	"encoding/json"
     6  	"io/ioutil"
     7  	"testing"
     8  
     9  	qt "github.com/frankban/quicktest"
    10  
    11  	"github.com/snyk/vervet/v4"
    12  	"github.com/snyk/vervet/v4/testdata"
    13  )
    14  
    15  func TestLocalize(t *testing.T) {
    16  	c := qt.New(t)
    17  	doc, err := vervet.NewDocumentFile(testdata.Path("resources/_examples/hello-world/2021-06-01/spec.yaml"))
    18  	c.Assert(err, qt.IsNil)
    19  	err = vervet.Localize(doc)
    20  	c.Assert(err, qt.IsNil)
    21  	err = doc.Validate(context.TODO())
    22  	c.Assert(err, qt.IsNil)
    23  
    24  	// OpenAPI DOM should be fully localized and relocatable now.
    25  	yamlBuf, err := vervet.ToSpecYAML(doc)
    26  	c.Assert(err, qt.IsNil)
    27  	tmpDir := c.TempDir()
    28  	err = ioutil.WriteFile(tmpDir+"/spec.yaml", yamlBuf, 0644)
    29  	c.Assert(err, qt.IsNil)
    30  
    31  	// This will fail to load if references have not been localized!
    32  	doc2, err := vervet.NewDocumentFile(tmpDir + "/spec.yaml")
    33  	c.Assert(err, qt.IsNil)
    34  	c.Assert(doc2.Validate(context.TODO()), qt.IsNil)
    35  
    36  	// Assert round-trip serialization equality
    37  	jsonBuf, err := json.Marshal(doc)
    38  	c.Assert(err, qt.IsNil)
    39  	c.Assert(jsonBuf, qt.JSONEquals, doc2)
    40  }