github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/cmd/juju/removeservice_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package main
     5  
     6  import (
     7  	gc "launchpad.net/gocheck"
     8  
     9  	charmtesting "github.com/juju/juju/charm/testing"
    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/testing"
    14  )
    15  
    16  type RemoveServiceSuite struct {
    17  	jujutesting.RepoSuite
    18  }
    19  
    20  var _ = gc.Suite(&RemoveServiceSuite{})
    21  
    22  func runRemoveService(c *gc.C, args ...string) error {
    23  	_, err := testing.RunCommand(c, envcmd.Wrap(&RemoveServiceCommand{}), args...)
    24  	return err
    25  }
    26  
    27  func (s *RemoveServiceSuite) TestSuccess(c *gc.C) {
    28  	// Destroy a service that exists.
    29  	charmtesting.Charms.BundlePath(s.SeriesPath, "riak")
    30  	err := runDeploy(c, "local:riak", "riak")
    31  	c.Assert(err, gc.IsNil)
    32  	err = runRemoveService(c, "riak")
    33  	c.Assert(err, gc.IsNil)
    34  	riak, err := s.State.Service("riak")
    35  	c.Assert(err, gc.IsNil)
    36  	c.Assert(riak.Life(), gc.Equals, state.Dying)
    37  }
    38  
    39  func (s *RemoveServiceSuite) TestFailure(c *gc.C) {
    40  	// Destroy a service that does not exist.
    41  	err := runRemoveService(c, "gargleblaster")
    42  	c.Assert(err, gc.ErrorMatches, `service "gargleblaster" not found`)
    43  }
    44  
    45  func (s *RemoveServiceSuite) TestInvalidArgs(c *gc.C) {
    46  	err := runRemoveService(c)
    47  	c.Assert(err, gc.ErrorMatches, `no service specified`)
    48  	err = runRemoveService(c, "ping", "pong")
    49  	c.Assert(err, gc.ErrorMatches, `unrecognized args: \["pong"\]`)
    50  	err = runRemoveService(c, "invalid:name")
    51  	c.Assert(err, gc.ErrorMatches, `invalid service name "invalid:name"`)
    52  }