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 )