launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/environs/tools/validation_test.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package tools 5 6 import ( 7 gc "launchpad.net/gocheck" 8 9 "launchpad.net/juju-core/environs/simplestreams" 10 "launchpad.net/juju-core/juju/osenv" 11 coretesting "launchpad.net/juju-core/testing" 12 "launchpad.net/juju-core/testing/testbase" 13 ) 14 15 type ValidateSuite struct { 16 testbase.LoggingSuite 17 home *coretesting.FakeHome 18 } 19 20 var _ = gc.Suite(&ValidateSuite{}) 21 22 func (s *ValidateSuite) makeLocalMetadata(c *gc.C, version, region, series, endpoint string) error { 23 tm := ToolsMetadata{ 24 Version: version, 25 Release: series, 26 Arch: "amd64", 27 Path: "/tools/tools.tar.gz", 28 Size: 1234, 29 FileType: "tar.gz", 30 SHA256: "f65a92b3b41311bdf398663ee1c5cd0c", 31 } 32 cloudSpec := simplestreams.CloudSpec{ 33 Region: region, 34 Endpoint: endpoint, 35 } 36 _, err := MakeBoilerplate(&tm, &cloudSpec, false) 37 if err != nil { 38 return err 39 } 40 return nil 41 } 42 43 func (s *ValidateSuite) SetUpTest(c *gc.C) { 44 s.LoggingSuite.SetUpTest(c) 45 s.home = coretesting.MakeEmptyFakeHome(c) 46 } 47 48 func (s *ValidateSuite) TearDownTest(c *gc.C) { 49 s.home.Restore() 50 s.LoggingSuite.TearDownTest(c) 51 } 52 53 func (s *ValidateSuite) TestExactVersionMatch(c *gc.C) { 54 s.makeLocalMetadata(c, "1.11.2", "region-2", "raring", "some-auth-url") 55 metadataDir := osenv.JujuHomePath("") 56 params := &ToolsMetadataLookupParams{ 57 Version: "1.11.2", 58 MetadataLookupParams: simplestreams.MetadataLookupParams{ 59 Region: "region-2", 60 Series: "raring", 61 Architectures: []string{"amd64"}, 62 Endpoint: "some-auth-url", 63 Sources: []simplestreams.DataSource{simplestreams.NewURLDataSource("file://"+metadataDir, simplestreams.VerifySSLHostnames)}, 64 }, 65 } 66 versions, err := ValidateToolsMetadata(params) 67 c.Assert(err, gc.IsNil) 68 c.Assert(versions, gc.DeepEquals, []string{"1.11.2-raring-amd64"}) 69 } 70 71 func (s *ValidateSuite) TestMajorVersionMatch(c *gc.C) { 72 s.makeLocalMetadata(c, "1.11.2", "region-2", "raring", "some-auth-url") 73 metadataDir := osenv.JujuHomePath("") 74 params := &ToolsMetadataLookupParams{ 75 Major: 1, 76 Minor: -1, 77 MetadataLookupParams: simplestreams.MetadataLookupParams{ 78 Region: "region-2", 79 Series: "raring", 80 Architectures: []string{"amd64"}, 81 Endpoint: "some-auth-url", 82 Sources: []simplestreams.DataSource{simplestreams.NewURLDataSource("file://"+metadataDir, simplestreams.VerifySSLHostnames)}, 83 }, 84 } 85 versions, err := ValidateToolsMetadata(params) 86 c.Assert(err, gc.IsNil) 87 c.Assert(versions, gc.DeepEquals, []string{"1.11.2-raring-amd64"}) 88 } 89 90 func (s *ValidateSuite) TestMajorMinorVersionMatch(c *gc.C) { 91 s.makeLocalMetadata(c, "1.11.2", "region-2", "raring", "some-auth-url") 92 metadataDir := osenv.JujuHomePath("") 93 params := &ToolsMetadataLookupParams{ 94 Major: 1, 95 Minor: 11, 96 MetadataLookupParams: simplestreams.MetadataLookupParams{ 97 Region: "region-2", 98 Series: "raring", 99 Architectures: []string{"amd64"}, 100 Endpoint: "some-auth-url", 101 Sources: []simplestreams.DataSource{simplestreams.NewURLDataSource("file://"+metadataDir, simplestreams.VerifySSLHostnames)}, 102 }, 103 } 104 versions, err := ValidateToolsMetadata(params) 105 c.Assert(err, gc.IsNil) 106 c.Assert(versions, gc.DeepEquals, []string{"1.11.2-raring-amd64"}) 107 } 108 109 func (s *ValidateSuite) TestNoMatch(c *gc.C) { 110 s.makeLocalMetadata(c, "1.11.2", "region-2", "raring", "some-auth-url") 111 metadataDir := osenv.JujuHomePath("") 112 params := &ToolsMetadataLookupParams{ 113 Version: "1.11.2", 114 MetadataLookupParams: simplestreams.MetadataLookupParams{ 115 Region: "region-2", 116 Series: "precise", 117 Architectures: []string{"amd64"}, 118 Endpoint: "some-auth-url", 119 Sources: []simplestreams.DataSource{simplestreams.NewURLDataSource("file://"+metadataDir, simplestreams.VerifySSLHostnames)}, 120 }, 121 } 122 _, err := ValidateToolsMetadata(params) 123 c.Assert(err, gc.Not(gc.IsNil)) 124 }