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  }