github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/provider/azure/azure_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package azure
     5  
     6  import (
     7  	stdtesting "testing"
     8  	"time"
     9  
    10  	jc "github.com/juju/testing/checkers"
    11  	"github.com/juju/utils/set"
    12  	gc "gopkg.in/check.v1"
    13  	"launchpad.net/gwacl"
    14  
    15  	"github.com/juju/juju/environs/imagemetadata"
    16  	"github.com/juju/juju/environs/jujutest"
    17  	"github.com/juju/juju/environs/simplestreams"
    18  	envtesting "github.com/juju/juju/environs/testing"
    19  	"github.com/juju/juju/juju/arch"
    20  	"github.com/juju/juju/testing"
    21  	"github.com/juju/juju/version"
    22  )
    23  
    24  func TestAzureProvider(t *stdtesting.T) {
    25  	gc.TestingT(t)
    26  }
    27  
    28  type providerSuite struct {
    29  	testing.BaseSuite
    30  	envtesting.ToolsFixture
    31  	restoreTimeouts func()
    32  }
    33  
    34  var _ = gc.Suite(&providerSuite{})
    35  
    36  var testRoundTripper = &jujutest.ProxyRoundTripper{}
    37  
    38  func init() {
    39  	// Prepare mock http transport for overriding metadata and images output in tests.
    40  	testRoundTripper.RegisterForScheme("test")
    41  }
    42  
    43  func (s *providerSuite) SetUpSuite(c *gc.C) {
    44  	s.BaseSuite.SetUpSuite(c)
    45  	s.restoreTimeouts = envtesting.PatchAttemptStrategies()
    46  	s.UploadArches = []string{arch.AMD64}
    47  }
    48  
    49  func (s *providerSuite) TearDownSuite(c *gc.C) {
    50  	s.restoreTimeouts()
    51  	s.BaseSuite.TearDownSuite(c)
    52  }
    53  
    54  func (s *providerSuite) SetUpTest(c *gc.C) {
    55  	s.BaseSuite.SetUpTest(c)
    56  	s.ToolsFixture.SetUpTest(c)
    57  	s.PatchValue(&imagemetadata.DefaultBaseURL, "test:")
    58  	s.PatchValue(&signedImageDataOnly, false)
    59  	s.PatchValue(&getVirtualNetwork, func(*azureEnviron) (*gwacl.VirtualNetworkSite, error) {
    60  		return &gwacl.VirtualNetworkSite{Name: "vnet", Location: "West US"}, nil
    61  	})
    62  
    63  	available := make(set.Strings)
    64  	for _, rs := range gwacl.RoleSizes {
    65  		available.Add(rs.Name)
    66  	}
    67  	s.PatchValue(&getAvailableRoleSizes, func(*azureEnviron) (set.Strings, error) {
    68  		return available, nil
    69  	})
    70  }
    71  
    72  func (s *providerSuite) TearDownTest(c *gc.C) {
    73  	s.ToolsFixture.TearDownTest(c)
    74  	s.BaseSuite.TearDownTest(c)
    75  }
    76  
    77  func (s *providerSuite) makeTestMetadata(c *gc.C, series, location string, im []*imagemetadata.ImageMetadata) {
    78  	cloudSpec := simplestreams.CloudSpec{
    79  		Region:   location,
    80  		Endpoint: "https://management.core.windows.net/",
    81  	}
    82  
    83  	seriesVersion, err := version.SeriesVersion(series)
    84  	c.Assert(err, jc.ErrorIsNil)
    85  	for _, im := range im {
    86  		im.Version = seriesVersion
    87  		im.RegionName = cloudSpec.Region
    88  		im.Endpoint = cloudSpec.Endpoint
    89  	}
    90  
    91  	index, products, err := imagemetadata.MarshalImageMetadataJSON(
    92  		im, []simplestreams.CloudSpec{cloudSpec}, time.Now(),
    93  	)
    94  	c.Assert(err, jc.ErrorIsNil)
    95  	files := map[string]string{
    96  		"/streams/v1/index.json":                string(index),
    97  		"/" + imagemetadata.ProductMetadataPath: string(products),
    98  	}
    99  	s.PatchValue(&testRoundTripper.Sub, jujutest.NewCannedRoundTripper(files, nil))
   100  }