github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/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 "strings" 8 9 "github.com/juju/cmd" 10 "github.com/juju/juju/cmd/envcmd" 11 jujutesting "github.com/juju/juju/juju/testing" 12 jc "github.com/juju/testing/checkers" 13 gc "gopkg.in/check.v1" 14 15 "github.com/juju/juju/state" 16 "github.com/juju/juju/testcharms" 17 "github.com/juju/juju/testing" 18 ) 19 20 type RemoveServiceSuite struct { 21 jujutesting.RepoSuite 22 } 23 24 var _ = gc.Suite(&RemoveServiceSuite{}) 25 26 func runRemoveService(c *gc.C, args ...string) error { 27 _, err := testing.RunCommand(c, envcmd.Wrap(&RemoveServiceCommand{}), args...) 28 return err 29 } 30 31 func (s *RemoveServiceSuite) setupTestService(c *gc.C) { 32 // Destroy a service that exists. 33 testcharms.Repo.CharmArchivePath(s.SeriesPath, "riak") 34 err := runDeploy(c, "local:riak", "riak") 35 c.Assert(err, jc.ErrorIsNil) 36 } 37 38 func (s *RemoveServiceSuite) TestSuccess(c *gc.C) { 39 s.setupTestService(c) 40 err := runRemoveService(c, "riak") 41 c.Assert(err, jc.ErrorIsNil) 42 riak, err := s.State.Service("riak") 43 c.Assert(err, jc.ErrorIsNil) 44 c.Assert(riak.Life(), gc.Equals, state.Dying) 45 } 46 47 func (s *RemoveServiceSuite) TestBlockRemoveService(c *gc.C) { 48 s.setupTestService(c) 49 50 // block operation 51 s.AssertConfigParameterUpdated(c, "block-remove-object", true) 52 err := runRemoveService(c, "riak") 53 c.Assert(err, gc.ErrorMatches, cmd.ErrSilent.Error()) 54 riak, err := s.State.Service("riak") 55 c.Assert(err, jc.ErrorIsNil) 56 c.Assert(riak.Life(), gc.Equals, state.Alive) 57 58 // msg is logged 59 stripped := strings.Replace(c.GetTestLog(), "\n", "", -1) 60 c.Check(stripped, gc.Matches, ".*To unblock removal.*") 61 } 62 63 func (s *RemoveServiceSuite) TestFailure(c *gc.C) { 64 // Destroy a service that does not exist. 65 err := runRemoveService(c, "gargleblaster") 66 c.Assert(err, gc.ErrorMatches, `service "gargleblaster" not found`) 67 } 68 69 func (s *RemoveServiceSuite) TestInvalidArgs(c *gc.C) { 70 err := runRemoveService(c) 71 c.Assert(err, gc.ErrorMatches, `no service specified`) 72 err = runRemoveService(c, "ping", "pong") 73 c.Assert(err, gc.ErrorMatches, `unrecognized args: \["pong"\]`) 74 err = runRemoveService(c, "invalid:name") 75 c.Assert(err, gc.ErrorMatches, `invalid service name "invalid:name"`) 76 }