github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/controller/enabledestroy_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package controller_test 5 6 import ( 7 "github.com/juju/cmd" 8 "github.com/juju/cmd/cmdtesting" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/apiserver/common" 13 "github.com/juju/juju/cmd/juju/controller" 14 "github.com/juju/juju/jujuclient" 15 ) 16 17 type enableDestroyControllerSuite struct { 18 baseControllerSuite 19 api *fakeRemoveBlocksAPI 20 store *jujuclient.MemStore 21 } 22 23 var _ = gc.Suite(&enableDestroyControllerSuite{}) 24 25 func (s *enableDestroyControllerSuite) SetUpTest(c *gc.C) { 26 s.baseControllerSuite.SetUpTest(c) 27 28 s.api = &fakeRemoveBlocksAPI{} 29 s.store = jujuclient.NewMemStore() 30 s.store.CurrentControllerName = "fake" 31 s.store.Controllers["fake"] = jujuclient.ControllerDetails{} 32 } 33 34 func (s *enableDestroyControllerSuite) newCommand() cmd.Command { 35 return controller.NewEnableDestroyControllerCommandForTest(s.api, s.store) 36 } 37 38 func (s *enableDestroyControllerSuite) TestRemove(c *gc.C) { 39 _, err := cmdtesting.RunCommand(c, s.newCommand()) 40 c.Assert(err, jc.ErrorIsNil) 41 c.Assert(s.api.called, jc.IsTrue) 42 } 43 44 func (s *enableDestroyControllerSuite) TestUnrecognizedArg(c *gc.C) { 45 _, err := cmdtesting.RunCommand(c, s.newCommand(), "whoops") 46 c.Assert(err, gc.ErrorMatches, `unrecognized args: \["whoops"\]`) 47 c.Assert(s.api.called, jc.IsFalse) 48 } 49 50 func (s *enableDestroyControllerSuite) TestEnvironmentsError(c *gc.C) { 51 s.api.err = common.ErrPerm 52 _, err := cmdtesting.RunCommand(c, s.newCommand()) 53 c.Assert(err, gc.ErrorMatches, "permission denied") 54 } 55 56 type fakeRemoveBlocksAPI struct { 57 err error 58 called bool 59 } 60 61 func (f *fakeRemoveBlocksAPI) Close() error { 62 return nil 63 } 64 65 func (f *fakeRemoveBlocksAPI) RemoveBlocks() error { 66 f.called = true 67 return f.err 68 }