github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/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  	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/juju/controller"
    13  	"github.com/juju/juju/jujuclient"
    14  	"github.com/juju/juju/jujuclient/jujuclienttesting"
    15  	"github.com/juju/juju/testing"
    16  )
    17  
    18  type enableDestroyControllerSuite struct {
    19  	baseControllerSuite
    20  	api   *fakeRemoveBlocksAPI
    21  	store *jujuclienttesting.MemStore
    22  }
    23  
    24  var _ = gc.Suite(&enableDestroyControllerSuite{})
    25  
    26  func (s *enableDestroyControllerSuite) SetUpTest(c *gc.C) {
    27  	s.baseControllerSuite.SetUpTest(c)
    28  
    29  	s.api = &fakeRemoveBlocksAPI{}
    30  	s.store = jujuclienttesting.NewMemStore()
    31  	s.store.CurrentControllerName = "fake"
    32  	s.store.Controllers["fake"] = jujuclient.ControllerDetails{}
    33  }
    34  
    35  func (s *enableDestroyControllerSuite) newCommand() cmd.Command {
    36  	return controller.NewEnableDestroyControllerCommandForTest(s.api, s.store)
    37  }
    38  
    39  func (s *enableDestroyControllerSuite) TestRemove(c *gc.C) {
    40  	_, err := testing.RunCommand(c, s.newCommand())
    41  	c.Assert(err, jc.ErrorIsNil)
    42  	c.Assert(s.api.called, jc.IsTrue)
    43  }
    44  
    45  func (s *enableDestroyControllerSuite) TestUnrecognizedArg(c *gc.C) {
    46  	_, err := testing.RunCommand(c, s.newCommand(), "whoops")
    47  	c.Assert(err, gc.ErrorMatches, `unrecognized args: \["whoops"\]`)
    48  	c.Assert(s.api.called, jc.IsFalse)
    49  }
    50  
    51  func (s *enableDestroyControllerSuite) TestEnvironmentsError(c *gc.C) {
    52  	s.api.err = common.ErrPerm
    53  	_, err := testing.RunCommand(c, s.newCommand())
    54  	c.Assert(err, gc.ErrorMatches, "permission denied")
    55  }
    56  
    57  type fakeRemoveBlocksAPI struct {
    58  	err    error
    59  	called bool
    60  }
    61  
    62  func (f *fakeRemoveBlocksAPI) Close() error {
    63  	return nil
    64  }
    65  
    66  func (f *fakeRemoveBlocksAPI) RemoveBlocks() error {
    67  	f.called = true
    68  	return f.err
    69  }