github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/cmd/juju/destroyservice_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  	jujutesting "launchpad.net/juju-core/juju/testing"
    10  	"launchpad.net/juju-core/state"
    11  	"launchpad.net/juju-core/testing"
    12  )
    13  
    14  type DestroyServiceSuite struct {
    15  	jujutesting.RepoSuite
    16  }
    17  
    18  var _ = gc.Suite(&DestroyServiceSuite{})
    19  
    20  func runDestroyService(c *gc.C, args ...string) error {
    21  	_, err := testing.RunCommand(c, &DestroyServiceCommand{}, args)
    22  	return err
    23  }
    24  
    25  func (s *DestroyServiceSuite) TestSuccess(c *gc.C) {
    26  	// Destroy a service that exists.
    27  	testing.Charms.BundlePath(s.SeriesPath, "riak")
    28  	err := runDeploy(c, "local:riak", "riak")
    29  	c.Assert(err, gc.IsNil)
    30  	err = runDestroyService(c, "riak")
    31  	c.Assert(err, gc.IsNil)
    32  	riak, err := s.State.Service("riak")
    33  	c.Assert(err, gc.IsNil)
    34  	c.Assert(riak.Life(), gc.Equals, state.Dying)
    35  }
    36  
    37  func (s *DestroyServiceSuite) TestFailure(c *gc.C) {
    38  	// Destroy a service that does not exist.
    39  	err := runDestroyService(c, "gargleblaster")
    40  	c.Assert(err, gc.ErrorMatches, `service "gargleblaster" not found`)
    41  }
    42  
    43  func (s *DestroyServiceSuite) TestInvalidArgs(c *gc.C) {
    44  	err := runDestroyService(c)
    45  	c.Assert(err, gc.ErrorMatches, `no service specified`)
    46  	err = runDestroyService(c, "ping", "pong")
    47  	c.Assert(err, gc.ErrorMatches, `unrecognized args: \["pong"\]`)
    48  	err = runDestroyService(c, "invalid:name")
    49  	c.Assert(err, gc.ErrorMatches, `invalid service name "invalid:name"`)
    50  }