github.com/snyk/vervet/v3@v3.7.0/resource_test.go (about)

     1  package vervet_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  	"time"
     7  
     8  	qt "github.com/frankban/quicktest"
     9  
    10  	. "github.com/snyk/vervet/v3"
    11  	"github.com/snyk/vervet/v3/testdata"
    12  )
    13  
    14  func TestResource(t *testing.T) {
    15  	c := qt.New(t)
    16  	eps, err := LoadResourceVersions(testdata.Path("resources/_examples/hello-world"))
    17  	c.Assert(err, qt.IsNil)
    18  	c.Assert(eps.Versions(), qt.DeepEquals, []Version{{
    19  		Date:      time.Date(2021, time.June, 1, 0, 0, 0, 0, time.UTC),
    20  		Stability: StabilityExperimental,
    21  	}, {
    22  		Date:      time.Date(2021, time.June, 7, 0, 0, 0, 0, time.UTC),
    23  		Stability: StabilityExperimental,
    24  	}, {
    25  		Date:      time.Date(2021, time.June, 13, 0, 0, 0, 0, time.UTC),
    26  		Stability: StabilityBeta,
    27  	}})
    28  	for _, v := range eps.Versions() {
    29  		e, err := eps.At(v.String())
    30  		c.Assert(err, qt.IsNil)
    31  		c.Assert(e.Validate(context.Background()), qt.IsNil)
    32  		c.Assert(e.Version, qt.DeepEquals, v)
    33  	}
    34  }
    35  
    36  func TestVersionRangesHelloWorld(t *testing.T) {
    37  	c := qt.New(t)
    38  	eps, err := LoadResourceVersions(testdata.Path("resources/_examples/hello-world"))
    39  	c.Assert(err, qt.IsNil)
    40  	tests := []struct {
    41  		query, match string
    42  	}{{
    43  		query: "2021-07-01~experimental",
    44  		match: "2021-06-13~beta",
    45  	}, {
    46  		query: "2021-07-01~beta",
    47  		match: "2021-06-13~beta",
    48  	}, {
    49  		query: "2021-06-08~experimental",
    50  		match: "2021-06-07~experimental",
    51  	}}
    52  	for _, t := range tests {
    53  		e, err := eps.At(t.query)
    54  		c.Assert(err, qt.IsNil)
    55  		c.Assert(e.Version.String(), qt.Equals, t.match)
    56  	}
    57  }
    58  
    59  func TestVersionRangesProjects(t *testing.T) {
    60  	c := qt.New(t)
    61  	eps, err := LoadResourceVersions(testdata.Path("resources/projects"))
    62  	c.Assert(err, qt.IsNil)
    63  	c.Assert(eps.Versions(), qt.HasLen, 2)
    64  	tests := []struct {
    65  		query, match, err string
    66  	}{{
    67  		query: "2021-07-01~experimental",
    68  		match: "2021-06-04~experimental",
    69  	}, {
    70  		query: "2021-07-01~beta",
    71  		err:   `no matching version`,
    72  	}, {
    73  		query: "2021-07-01",
    74  		err:   `no matching version`,
    75  	}}
    76  	for i, t := range tests {
    77  		c.Logf("test#%d: %#v", i, t)
    78  		e, err := eps.At(t.query)
    79  		if t.err != "" {
    80  			c.Assert(err, qt.ErrorMatches, t.err)
    81  		} else {
    82  			c.Assert(err, qt.IsNil)
    83  			c.Assert(e.Version.String(), qt.Equals, t.match)
    84  		}
    85  	}
    86  }
    87  
    88  func TestIsExtensionNotFound(t *testing.T) {
    89  	c := qt.New(t)
    90  	eps, err := LoadResourceVersions(testdata.Path("resources/_examples/hello-world"))
    91  	c.Assert(err, qt.IsNil)
    92  	resource, err := eps.At("2021-06-04~experimental")
    93  	c.Assert(err, qt.IsNil)
    94  
    95  	_, err = ExtensionString(resource.ExtensionProps, ExtSnykApiVersion)
    96  	c.Assert(IsExtensionNotFound(err), qt.IsTrue)
    97  
    98  	_, err = ExtensionString(resource.ExtensionProps, "some-bogus-value")
    99  	c.Assert(IsExtensionNotFound(err), qt.IsTrue)
   100  
   101  	_, err = ExtensionString(resource.ExtensionProps, ExtSnykApiStability)
   102  	c.Assert(IsExtensionNotFound(err), qt.IsFalse)
   103  }