github.com/mwhudson/juju@v0.0.0-20160512215208-90ff01f3497f/environs/imagemetadata/urls_test.go (about) 1 // Copyright 2012, 2013, 2014 Canonical Ltd. 2 // Copyright 2014 Cloudbase Solutions SRL 3 // Licensed under the AGPLv3, see LICENCE file for details. 4 5 package imagemetadata_test 6 7 import ( 8 "fmt" 9 10 jc "github.com/juju/testing/checkers" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/environs/imagemetadata" 14 coretesting "github.com/juju/juju/testing" 15 ) 16 17 type URLsSuite struct { 18 coretesting.BaseSuite 19 } 20 21 var _ = gc.Suite(&URLsSuite{}) 22 23 func (s *URLsSuite) TestImageMetadataURL(c *gc.C) { 24 var imageTests = []struct { 25 in string 26 expected string 27 expectedErr error 28 }{{ 29 in: "", 30 expected: "", 31 expectedErr: nil, 32 }, { 33 in: "file://foo", 34 expected: "file://foo", 35 expectedErr: nil, 36 }, { 37 in: "http://foo", 38 expected: "http://foo", 39 expectedErr: nil, 40 }, { 41 in: "foo", 42 expected: "", 43 expectedErr: fmt.Errorf("foo is not an absolute path"), 44 }} 45 imageTests = append(imageTests, imageTestsPlatformSpecific...) 46 for i, t := range imageTests { 47 c.Logf("Test %d:", i) 48 49 out, err := imagemetadata.ImageMetadataURL(t.in, "") 50 c.Assert(err, gc.DeepEquals, t.expectedErr) 51 c.Assert(out, gc.Equals, t.expected) 52 } 53 } 54 55 func (s *URLsSuite) TestImageMetadataURLOfficialSource(c *gc.C) { 56 s.assertImageMetadataURLOfficialSource(c, imagemetadata.UbuntuCloudImagesURL) 57 s.assertImageMetadataURLOfficialSource(c, imagemetadata.JujuStreamsImagesURL) 58 } 59 60 func (s *URLsSuite) assertImageMetadataURLOfficialSource(c *gc.C, baseURL string) { 61 // Released streams. 62 URL, err := imagemetadata.ImageMetadataURL(baseURL, "") 63 c.Assert(err, jc.ErrorIsNil) 64 c.Assert(URL, gc.Equals, fmt.Sprintf("%s/%s", baseURL, "releases")) 65 URL, err = imagemetadata.ImageMetadataURL(baseURL, imagemetadata.ReleasedStream) 66 c.Assert(err, jc.ErrorIsNil) 67 c.Assert(URL, gc.Equals, fmt.Sprintf("%s/%s", baseURL, "releases")) 68 // Non-released streams. 69 URL, err = imagemetadata.ImageMetadataURL(baseURL, "daily") 70 c.Assert(err, jc.ErrorIsNil) 71 c.Assert(URL, gc.Equals, fmt.Sprintf("%s/%s", baseURL, "daily")) 72 }