github.com/snyk/vervet/v4@v4.27.2/internal/scaffold/manifest_test.go (about)

     1  package scaffold
     2  
     3  import (
     4  	"io/ioutil"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	qt "github.com/frankban/quicktest"
     9  )
    10  
    11  var manifestTests = []struct {
    12  	desc     string
    13  	version  string
    14  	organize map[string]string
    15  	err      string
    16  }{{
    17  	desc:     "invalid version",
    18  	version:  "nope",
    19  	organize: map[string]string{"foo": "foo"},
    20  	err:      `unsupported manifest version "nope"`,
    21  }, {
    22  	desc:     "empty manifest - nil map",
    23  	organize: map[string]string{},
    24  	err:      `empty manifest`,
    25  }, {
    26  	desc:     "empty manifest - empty map",
    27  	organize: map[string]string{},
    28  	err:      `empty manifest`,
    29  }, {
    30  	desc:     "missing file",
    31  	organize: map[string]string{"foo": "foo", "bar": "bar"},
    32  	err:      `.*cannot stat source item ".*/bar":.*`,
    33  }, {
    34  	desc:     "ok, default version",
    35  	organize: map[string]string{"foo": "foo"},
    36  }, {
    37  	desc:     "ok, version 1",
    38  	version:  "1",
    39  	organize: map[string]string{"foo": "foo"},
    40  }}
    41  
    42  func TestManifestValidate(t *testing.T) {
    43  	c := qt.New(t)
    44  	fakeSrc := c.TempDir()
    45  	c.Assert(ioutil.WriteFile(filepath.Join(fakeSrc, "foo"), []byte("foo"), 0666), qt.IsNil)
    46  	for _, t := range manifestTests {
    47  		m := &Manifest{
    48  			Version:  t.version,
    49  			Organize: t.organize,
    50  		}
    51  		if t.err == "" {
    52  			c.Assert(m.validate(fakeSrc), qt.IsNil)
    53  		} else {
    54  			err := m.validate(fakeSrc)
    55  			c.Assert(err, qt.ErrorMatches, t.err)
    56  		}
    57  	}
    58  }