github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/cmd/juju/block/unblock_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package block_test 5 6 import ( 7 "strings" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/cmd/envcmd" 13 "github.com/juju/juju/cmd/juju/block" 14 "github.com/juju/juju/testing" 15 ) 16 17 type UnblockCommandSuite struct { 18 ProtectionCommandSuite 19 mockClient *block.MockBlockClient 20 } 21 22 func (s *UnblockCommandSuite) SetUpTest(c *gc.C) { 23 s.FakeJujuHomeSuite.SetUpTest(c) 24 s.mockClient = &block.MockBlockClient{} 25 s.PatchValue(block.UnblockClient, func(p *block.UnblockCommand) (block.UnblockClientAPI, error) { 26 return s.mockClient, nil 27 }) 28 } 29 30 var _ = gc.Suite(&UnblockCommandSuite{}) 31 32 func runUnblockCommand(c *gc.C, args ...string) error { 33 _, err := testing.RunCommand(c, envcmd.Wrap(&block.UnblockCommand{}), args...) 34 return err 35 } 36 37 func (s *UnblockCommandSuite) assertRunUnblock(c *gc.C, operation string) { 38 err := runUnblockCommand(c, operation) 39 c.Assert(err, jc.ErrorIsNil) 40 41 expectedOp := block.TypeFromOperation(strings.ToLower(operation)) 42 c.Assert(s.mockClient.BlockType, gc.DeepEquals, expectedOp) 43 } 44 45 func (s *UnblockCommandSuite) TestUnblockCmdNoOperation(c *gc.C) { 46 s.assertErrorMatches(c, runUnblockCommand(c), `.*must specify one of.*`) 47 } 48 49 func (s *UnblockCommandSuite) TestUnblockCmdMoreThanOneOperation(c *gc.C) { 50 s.assertErrorMatches(c, runUnblockCommand(c, "destroy-environment", "change"), `.*can only specify block type.*`) 51 } 52 53 func (s *UnblockCommandSuite) TestUnblockCmdOperationWithSeparator(c *gc.C) { 54 s.assertErrorMatches(c, runUnblockCommand(c, "destroy-environment|"), `.*valid argument.*`) 55 } 56 57 func (s *UnblockCommandSuite) TestUnblockCmdUnknownJujuOperation(c *gc.C) { 58 s.assertErrorMatches(c, runUnblockCommand(c, "add-machine"), `.*valid argument.*`) 59 } 60 61 func (s *UnblockCommandSuite) TestUnblockCmdUnknownOperation(c *gc.C) { 62 s.assertErrorMatches(c, runUnblockCommand(c, "blah"), `.*valid argument.*`) 63 } 64 65 func (s *UnblockCommandSuite) TestUnblockCmdValidDestroyEnvOperationUpperCase(c *gc.C) { 66 s.assertRunUnblock(c, "DESTROY-ENVIRONMENT") 67 } 68 69 func (s *UnblockCommandSuite) TestUnblockCmdValidDestroyEnvOperation(c *gc.C) { 70 s.assertRunUnblock(c, "destroy-environment") 71 }