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 }