github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/apiserver/imagemetadata/package_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package imagemetadata_test 5 6 import ( 7 stdtesting "testing" 8 9 "github.com/juju/names" 10 jc "github.com/juju/testing/checkers" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/apiserver/common" 14 "github.com/juju/juju/apiserver/imagemetadata" 15 "github.com/juju/juju/apiserver/testing" 16 "github.com/juju/juju/environs/config" 17 "github.com/juju/juju/provider/dummy" 18 "github.com/juju/juju/state/cloudimagemetadata" 19 coretesting "github.com/juju/juju/testing" 20 ) 21 22 func TestAll(t *stdtesting.T) { 23 gc.TestingT(t) 24 } 25 26 type baseImageMetadataSuite struct { 27 coretesting.BaseSuite 28 29 resources *common.Resources 30 authorizer testing.FakeAuthorizer 31 32 api *imagemetadata.API 33 state *mockState 34 35 calls []string 36 } 37 38 func (s *baseImageMetadataSuite) SetUpTest(c *gc.C) { 39 s.BaseSuite.SetUpTest(c) 40 s.resources = common.NewResources() 41 s.authorizer = testing.FakeAuthorizer{names.NewUserTag("testuser"), true} 42 43 s.calls = []string{} 44 s.state = s.constructState() 45 46 var err error 47 s.api, err = imagemetadata.CreateAPI(s.state, s.resources, s.authorizer) 48 c.Assert(err, jc.ErrorIsNil) 49 } 50 51 func (s *baseImageMetadataSuite) assertCalls(c *gc.C, expectedCalls []string) { 52 c.Assert(s.calls, jc.SameContents, expectedCalls) 53 } 54 55 const ( 56 findMetadata = "findMetadata" 57 saveMetadata = "saveMetadata" 58 environConfig = "environConfig" 59 ) 60 61 func (s *baseImageMetadataSuite) constructState() *mockState { 62 return &mockState{ 63 findMetadata: func(f cloudimagemetadata.MetadataFilter) (map[cloudimagemetadata.SourceType][]cloudimagemetadata.Metadata, error) { 64 s.calls = append(s.calls, findMetadata) 65 return nil, nil 66 }, 67 saveMetadata: func(m cloudimagemetadata.Metadata) error { 68 s.calls = append(s.calls, saveMetadata) 69 return nil 70 }, 71 environConfig: func() (*config.Config, error) { 72 s.calls = append(s.calls, environConfig) 73 return testConfig(), nil 74 }, 75 } 76 } 77 78 type mockState struct { 79 findMetadata func(f cloudimagemetadata.MetadataFilter) (map[cloudimagemetadata.SourceType][]cloudimagemetadata.Metadata, error) 80 saveMetadata func(m cloudimagemetadata.Metadata) error 81 environConfig func() (*config.Config, error) 82 } 83 84 func (st *mockState) FindMetadata(f cloudimagemetadata.MetadataFilter) (map[cloudimagemetadata.SourceType][]cloudimagemetadata.Metadata, error) { 85 return st.findMetadata(f) 86 } 87 88 func (st *mockState) SaveMetadata(m cloudimagemetadata.Metadata) error { 89 return st.saveMetadata(m) 90 } 91 92 func (st *mockState) EnvironConfig() (*config.Config, error) { 93 return st.environConfig() 94 } 95 96 func testConfig() *config.Config { 97 attrs := dummy.SampleConfig().Merge(coretesting.Attrs{ 98 "type": "nonex", 99 }) 100 cfg, _ := config.New(config.NoDefaults, attrs) 101 return cfg 102 }