github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/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 jc "github.com/juju/testing/checkers" 12 gc "gopkg.in/check.v1" 13 "gopkg.in/juju/names.v2" 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/backups" 20 backupstesting "github.com/juju/juju/state/backups/testing" 21 "github.com/juju/juju/testing/factory" 22 ) 23 24 type backupsSuite struct { 25 testing.JujuConnSuite 26 resources *common.Resources 27 authorizer *apiservertesting.FakeAuthorizer 28 api *backupsAPI.API 29 meta *backups.Metadata 30 } 31 32 var _ = gc.Suite(&backupsSuite{}) 33 34 func (s *backupsSuite) SetUpTest(c *gc.C) { 35 s.JujuConnSuite.SetUpTest(c) 36 s.resources = common.NewResources() 37 s.resources.RegisterNamed("dataDir", common.StringResource("/var/lib/juju")) 38 tag := names.NewLocalUserTag("admin") 39 s.authorizer = &apiservertesting.FakeAuthorizer{Tag: tag} 40 var err error 41 s.api, err = backupsAPI.NewAPI(&stateShim{s.State}, s.resources, s.authorizer) 42 c.Assert(err, jc.ErrorIsNil) 43 s.meta = backupstesting.NewMetadataStarted() 44 } 45 46 func (s *backupsSuite) setBackups(c *gc.C, meta *backups.Metadata, err string) *backupstesting.FakeBackups { 47 fake := backupstesting.FakeBackups{ 48 Meta: meta, 49 } 50 if meta != nil { 51 fake.MetaList = append(fake.MetaList, meta) 52 } 53 if err != "" { 54 fake.Error = errors.Errorf(err) 55 } 56 s.PatchValue(backupsAPI.NewBackups, 57 func(backupsAPI.Backend) (backups.Backups, io.Closer) { 58 return &fake, ioutil.NopCloser(nil) 59 }, 60 ) 61 return &fake 62 } 63 64 func (s *backupsSuite) TestRegistered(c *gc.C) { 65 _, err := common.Facades.GetType("Backups", 1) 66 c.Check(err, jc.ErrorIsNil) 67 } 68 69 func (s *backupsSuite) TestNewAPIOkay(c *gc.C) { 70 _, err := backupsAPI.NewAPI(&stateShim{s.State}, s.resources, s.authorizer) 71 c.Check(err, jc.ErrorIsNil) 72 } 73 74 func (s *backupsSuite) TestNewAPINotAuthorized(c *gc.C) { 75 s.authorizer.Tag = names.NewApplicationTag("eggs") 76 _, err := backupsAPI.NewAPI(&stateShim{s.State}, s.resources, s.authorizer) 77 78 c.Check(errors.Cause(err), gc.Equals, common.ErrPerm) 79 } 80 81 func (s *backupsSuite) TestNewAPIHostedEnvironmentFails(c *gc.C) { 82 otherState := factory.NewFactory(s.State).MakeModel(c, nil) 83 defer otherState.Close() 84 _, err := backupsAPI.NewAPI(&stateShim{otherState}, s.resources, s.authorizer) 85 c.Check(err, gc.ErrorMatches, "backups are not supported for hosted models") 86 }