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