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  }