github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/provider/maas/maas_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package maas 5 6 import ( 7 "time" 8 9 gc "gopkg.in/check.v1" 10 "launchpad.net/gomaasapi" 11 12 "github.com/juju/juju/environs" 13 "github.com/juju/juju/environs/config" 14 envtesting "github.com/juju/juju/environs/testing" 15 "github.com/juju/juju/feature" 16 coretesting "github.com/juju/juju/testing" 17 "github.com/juju/juju/version" 18 ) 19 20 // Ensure maasEnviron supports environs.NetworkingEnviron. 21 var _ environs.NetworkingEnviron = (*maasEnviron)(nil) 22 23 type providerSuite struct { 24 coretesting.FakeJujuHomeSuite 25 envtesting.ToolsFixture 26 testMAASObject *gomaasapi.TestMAASObject 27 } 28 29 var _ = gc.Suite(&providerSuite{}) 30 31 func (s *providerSuite) SetUpSuite(c *gc.C) { 32 s.FakeJujuHomeSuite.SetUpSuite(c) 33 restoreTimeouts := envtesting.PatchAttemptStrategies(&shortAttempt) 34 TestMAASObject := gomaasapi.NewTestMAAS("1.0") 35 s.testMAASObject = TestMAASObject 36 restoreFinishBootstrap := envtesting.DisableFinishBootstrap() 37 s.AddSuiteCleanup(func(*gc.C) { 38 restoreFinishBootstrap() 39 restoreTimeouts() 40 }) 41 s.PatchValue(&nodeDeploymentTimeout, func(*maasEnviron) time.Duration { 42 return coretesting.ShortWait 43 }) 44 } 45 46 func (s *providerSuite) SetUpTest(c *gc.C) { 47 s.PatchValue(&version.Current.Number, coretesting.FakeVersionNumber) 48 s.FakeJujuHomeSuite.SetUpTest(c) 49 s.ToolsFixture.SetUpTest(c) 50 s.SetFeatureFlags(feature.AddressAllocation) 51 } 52 53 func (s *providerSuite) TearDownTest(c *gc.C) { 54 s.testMAASObject.TestServer.Clear() 55 s.ToolsFixture.TearDownTest(c) 56 s.FakeJujuHomeSuite.TearDownTest(c) 57 } 58 59 func (s *providerSuite) TearDownSuite(c *gc.C) { 60 s.testMAASObject.Close() 61 s.FakeJujuHomeSuite.TearDownSuite(c) 62 } 63 64 const exampleAgentName = "dfb69555-0bc4-4d1f-85f2-4ee390974984" 65 66 var maasEnvAttrs = coretesting.Attrs{ 67 "name": "test env", 68 "type": "maas", 69 "maas-oauth": "a:b:c", 70 "maas-agent-name": exampleAgentName, 71 } 72 73 // makeEnviron creates a functional maasEnviron for a test. 74 func (suite *providerSuite) makeEnviron() *maasEnviron { 75 testAttrs := maasEnvAttrs 76 testAttrs["maas-server"] = suite.testMAASObject.TestServer.URL 77 attrs := coretesting.FakeConfig().Merge(maasEnvAttrs) 78 cfg, err := config.New(config.NoDefaults, attrs) 79 if err != nil { 80 panic(err) 81 } 82 env, err := NewEnviron(cfg) 83 if err != nil { 84 panic(err) 85 } 86 return env 87 }