github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/cmd/juju/commands/removeservice_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package commands
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/cmd/envcmd"
    11  	jujutesting "github.com/juju/juju/juju/testing"
    12  	"github.com/juju/juju/state"
    13  	"github.com/juju/juju/testcharms"
    14  	"github.com/juju/juju/testing"
    15  )
    16  
    17  type RemoveServiceSuite struct {
    18  	jujutesting.RepoSuite
    19  	CmdBlockHelper
    20  }
    21  
    22  var _ = gc.Suite(&RemoveServiceSuite{})
    23  
    24  func (s *RemoveServiceSuite) SetUpTest(c *gc.C) {
    25  	s.RepoSuite.SetUpTest(c)
    26  	s.CmdBlockHelper = NewCmdBlockHelper(s.APIState)
    27  	c.Assert(s.CmdBlockHelper, gc.NotNil)
    28  	s.AddCleanup(func(*gc.C) { s.CmdBlockHelper.Close() })
    29  }
    30  
    31  func runRemoveService(c *gc.C, args ...string) error {
    32  	_, err := testing.RunCommand(c, envcmd.Wrap(&RemoveServiceCommand{}), args...)
    33  	return err
    34  }
    35  
    36  func (s *RemoveServiceSuite) setupTestService(c *gc.C) {
    37  	// Destroy a service that exists.
    38  	testcharms.Repo.CharmArchivePath(s.SeriesPath, "riak")
    39  	err := runDeploy(c, "local:riak", "riak")
    40  	c.Assert(err, jc.ErrorIsNil)
    41  }
    42  
    43  func (s *RemoveServiceSuite) TestSuccess(c *gc.C) {
    44  	s.setupTestService(c)
    45  	err := runRemoveService(c, "riak")
    46  	c.Assert(err, jc.ErrorIsNil)
    47  	riak, err := s.State.Service("riak")
    48  	c.Assert(err, jc.ErrorIsNil)
    49  	c.Assert(riak.Life(), gc.Equals, state.Dying)
    50  }
    51  
    52  func (s *RemoveServiceSuite) TestBlockRemoveService(c *gc.C) {
    53  	s.setupTestService(c)
    54  
    55  	// block operation
    56  	s.BlockRemoveObject(c, "TestBlockRemoveService")
    57  	err := runRemoveService(c, "riak")
    58  	s.AssertBlocked(c, err, ".*TestBlockRemoveService.*")
    59  	riak, err := s.State.Service("riak")
    60  	c.Assert(err, jc.ErrorIsNil)
    61  	c.Assert(riak.Life(), gc.Equals, state.Alive)
    62  }
    63  
    64  func (s *RemoveServiceSuite) TestFailure(c *gc.C) {
    65  	// Destroy a service that does not exist.
    66  	err := runRemoveService(c, "gargleblaster")
    67  	c.Assert(err, gc.ErrorMatches, `service "gargleblaster" not found`)
    68  }
    69  
    70  func (s *RemoveServiceSuite) TestInvalidArgs(c *gc.C) {
    71  	err := runRemoveService(c)
    72  	c.Assert(err, gc.ErrorMatches, `no service specified`)
    73  	err = runRemoveService(c, "ping", "pong")
    74  	c.Assert(err, gc.ErrorMatches, `unrecognized args: \["pong"\]`)
    75  	err = runRemoveService(c, "invalid:name")
    76  	c.Assert(err, gc.ErrorMatches, `invalid service name "invalid:name"`)
    77  }