github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/apiserver/backups/backups_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package backups_test 5 6 import ( 7 "io" 8 "io/ioutil" 9 10 "github.com/juju/errors" 11 "github.com/juju/names" 12 jc "github.com/juju/testing/checkers" 13 gc "gopkg.in/check.v1" 14 15 backupsAPI "github.com/juju/juju/apiserver/backups" 16 "github.com/juju/juju/apiserver/common" 17 apiservertesting "github.com/juju/juju/apiserver/testing" 18 "github.com/juju/juju/juju/testing" 19 "github.com/juju/juju/state" 20 "github.com/juju/juju/state/backups" 21 backupstesting "github.com/juju/juju/state/backups/testing" 22 "github.com/juju/juju/testing/factory" 23 ) 24 25 type backupsSuite struct { 26 testing.JujuConnSuite 27 resources *common.Resources 28 authorizer *apiservertesting.FakeAuthorizer 29 api *backupsAPI.API 30 meta *backups.Metadata 31 } 32 33 var _ = gc.Suite(&backupsSuite{}) 34 35 func (s *backupsSuite) SetUpTest(c *gc.C) { 36 s.JujuConnSuite.SetUpTest(c) 37 s.resources = common.NewResources() 38 s.resources.RegisterNamed("dataDir", common.StringResource("/var/lib/juju")) 39 tag := names.NewLocalUserTag("spam") 40 s.authorizer = &apiservertesting.FakeAuthorizer{Tag: tag} 41 var err error 42 s.api, err = backupsAPI.NewAPI(s.State, s.resources, s.authorizer) 43 c.Assert(err, jc.ErrorIsNil) 44 s.meta = backupstesting.NewMetadataStarted() 45 } 46 47 func (s *backupsSuite) setBackups(c *gc.C, meta *backups.Metadata, err string) *backupstesting.FakeBackups { 48 fake := backupstesting.FakeBackups{ 49 Meta: meta, 50 } 51 if meta != nil { 52 fake.MetaList = append(fake.MetaList, meta) 53 } 54 if err != "" { 55 fake.Error = errors.Errorf(err) 56 } 57 s.PatchValue(backupsAPI.NewBackups, 58 func(*state.State) (backups.Backups, io.Closer) { 59 return &fake, ioutil.NopCloser(nil) 60 }, 61 ) 62 return &fake 63 } 64 65 func (s *backupsSuite) TestRegistered(c *gc.C) { 66 _, err := common.Facades.GetType("Backups", 1) 67 c.Check(err, jc.ErrorIsNil) 68 } 69 70 func (s *backupsSuite) TestNewAPIOkay(c *gc.C) { 71 _, err := backupsAPI.NewAPI(s.State, s.resources, s.authorizer) 72 c.Check(err, jc.ErrorIsNil) 73 } 74 75 func (s *backupsSuite) TestNewAPINotAuthorized(c *gc.C) { 76 s.authorizer.Tag = names.NewServiceTag("eggs") 77 _, err := backupsAPI.NewAPI(s.State, s.resources, s.authorizer) 78 79 c.Check(errors.Cause(err), gc.Equals, common.ErrPerm) 80 } 81 82 func (s *backupsSuite) TestNewAPIHostedEnvironmentFails(c *gc.C) { 83 otherState := factory.NewFactory(s.State).MakeModel(c, nil) 84 defer otherState.Close() 85 _, err := backupsAPI.NewAPI(otherState, s.resources, s.authorizer) 86 c.Check(err, gc.ErrorMatches, "backups are not supported for hosted models") 87 }