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  }