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 }