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 }