github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/environs/tools/versionfile_test.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package tools_test
     5  
     6  import (
     7  	"bytes"
     8  
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	"github.com/juju/juju/environs/tools"
    13  	"github.com/juju/juju/testing"
    14  )
    15  
    16  type versionSuite struct {
    17  	testing.BaseSuite
    18  }
    19  
    20  var _ = gc.Suite(&versionSuite{})
    21  
    22  func getVersions(c *gc.C) *tools.Versions {
    23  	r := bytes.NewReader([]byte(data))
    24  	versions, err := tools.ParseVersions(r)
    25  	c.Assert(err, jc.ErrorIsNil)
    26  	return versions
    27  }
    28  
    29  func (s *versionSuite) TestParseVersions(c *gc.C) {
    30  	c.Assert(getVersions(c), gc.DeepEquals, &tools.Versions{
    31  		Versions: []tools.VersionHash{{
    32  			Version: "2.2.4-xenial-amd64",
    33  			SHA256:  "eeead9934c597c7678e989e7fd20bf57056a52ce8e25ace371a83711ad484d0c",
    34  		}, {
    35  			Version: "2.2.4-trusty-amd64",
    36  			SHA256:  "eeead9934c597c7678e989e7fd20bf57056a52ce8e25ace371a83711ad484d0c",
    37  		}, {
    38  			Version: "2.2.4-centos7-amd64",
    39  			SHA256:  "eeead9934c597c7678e989e7fd20bf57056a52ce8e25ace371a83711ad484d0c",
    40  		}, {
    41  			Version: "2.2.4-xenial-arm64",
    42  			SHA256:  "f6cf381fc20545d827b307dd413377bff3c123e1894fdf6c239f07a4143beb47",
    43  		}},
    44  	})
    45  }
    46  
    47  func (s *versionSuite) TestVersionsMatching(c *gc.C) {
    48  	v := getVersions(c)
    49  	results, err := v.VersionsMatching(bytes.NewReader([]byte(fakeContent1)))
    50  	c.Assert(err, jc.ErrorIsNil)
    51  	c.Assert(results, gc.DeepEquals, []string{
    52  		"2.2.4-xenial-amd64",
    53  		"2.2.4-trusty-amd64",
    54  		"2.2.4-centos7-amd64",
    55  	})
    56  	results, err = v.VersionsMatching(bytes.NewReader([]byte(fakeContent2)))
    57  	c.Assert(err, jc.ErrorIsNil)
    58  	c.Assert(results, gc.DeepEquals, []string{
    59  		"2.2.4-xenial-arm64",
    60  	})
    61  }
    62  
    63  func (s *versionSuite) TestVersionsMatchingHash(c *gc.C) {
    64  	v := getVersions(c)
    65  	results := tools.VersionsMatchingHash(v,
    66  		"eeead9934c597c7678e989e7fd20bf57056a52ce8e25ace371a83711ad484d0c")
    67  	c.Assert(results, gc.DeepEquals, []string{
    68  		"2.2.4-xenial-amd64",
    69  		"2.2.4-trusty-amd64",
    70  		"2.2.4-centos7-amd64",
    71  	})
    72  	results = tools.VersionsMatchingHash(v,
    73  		"f6cf381fc20545d827b307dd413377bff3c123e1894fdf6c239f07a4143beb47")
    74  	c.Assert(results, gc.DeepEquals, []string{
    75  		"2.2.4-xenial-arm64",
    76  	})
    77  }
    78  
    79  const (
    80  	data = `
    81  versions:
    82    - version: 2.2.4-xenial-amd64
    83      sha256: eeead9934c597c7678e989e7fd20bf57056a52ce8e25ace371a83711ad484d0c
    84    - version: 2.2.4-trusty-amd64
    85      sha256: eeead9934c597c7678e989e7fd20bf57056a52ce8e25ace371a83711ad484d0c
    86    - version: 2.2.4-centos7-amd64
    87      sha256: eeead9934c597c7678e989e7fd20bf57056a52ce8e25ace371a83711ad484d0c
    88    - version: 2.2.4-xenial-arm64
    89      sha256: f6cf381fc20545d827b307dd413377bff3c123e1894fdf6c239f07a4143beb47
    90  `
    91  
    92  	fakeContent1 = "fake binary content 1\n"
    93  	fakeContent2 = "fake binary content 2\n"
    94  )