github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/cmd/juju/system/removeblocks_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package system_test 5 6 import ( 7 "github.com/juju/cmd" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/apiserver/common" 12 "github.com/juju/juju/cmd/envcmd" 13 "github.com/juju/juju/cmd/juju/system" 14 "github.com/juju/juju/testing" 15 ) 16 17 type removeBlocksSuite struct { 18 testing.FakeJujuHomeSuite 19 api *fakeRemoveBlocksAPI 20 } 21 22 var _ = gc.Suite(&removeBlocksSuite{}) 23 24 func (s *removeBlocksSuite) SetUpTest(c *gc.C) { 25 s.FakeJujuHomeSuite.SetUpTest(c) 26 27 err := envcmd.WriteCurrentSystem("fake") 28 c.Assert(err, jc.ErrorIsNil) 29 30 s.api = &fakeRemoveBlocksAPI{} 31 } 32 33 func (s *removeBlocksSuite) newCommand() cmd.Command { 34 command := system.NewRemoveBlocksCommand(s.api) 35 return envcmd.WrapSystem(command) 36 } 37 38 func (s *removeBlocksSuite) TestRemove(c *gc.C) { 39 _, err := testing.RunCommand(c, s.newCommand()) 40 c.Assert(err, jc.ErrorIsNil) 41 c.Assert(s.api.called, jc.IsTrue) 42 } 43 44 func (s *removeBlocksSuite) TestUnrecognizedArg(c *gc.C) { 45 _, err := testing.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 *removeBlocksSuite) TestEnvironmentsError(c *gc.C) { 51 s.api.err = common.ErrPerm 52 _, err := testing.RunCommand(c, s.newCommand()) 53 c.Assert(err, gc.ErrorMatches, "cannot remove blocks: 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 }