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  }