github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/cmd/juju/commands/removerelation_test.go (about)

     1  // Copyright 2012, 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/testcharms"
    13  	"github.com/juju/juju/testing"
    14  )
    15  
    16  type RemoveRelationSuite struct {
    17  	jujutesting.RepoSuite
    18  	CmdBlockHelper
    19  }
    20  
    21  func (s *RemoveRelationSuite) SetUpTest(c *gc.C) {
    22  	s.RepoSuite.SetUpTest(c)
    23  	s.CmdBlockHelper = NewCmdBlockHelper(s.APIState)
    24  	c.Assert(s.CmdBlockHelper, gc.NotNil)
    25  	s.AddCleanup(func(*gc.C) { s.CmdBlockHelper.Close() })
    26  }
    27  
    28  var _ = gc.Suite(&RemoveRelationSuite{})
    29  
    30  func runRemoveRelation(c *gc.C, args ...string) error {
    31  	_, err := testing.RunCommand(c, envcmd.Wrap(&RemoveRelationCommand{}), args...)
    32  	return err
    33  }
    34  
    35  func (s *RemoveRelationSuite) setupRelationForRemove(c *gc.C) {
    36  	testcharms.Repo.CharmArchivePath(s.SeriesPath, "riak")
    37  	err := runDeploy(c, "local:riak", "riak")
    38  	c.Assert(err, jc.ErrorIsNil)
    39  	testcharms.Repo.CharmArchivePath(s.SeriesPath, "logging")
    40  	err = runDeploy(c, "local:logging", "logging")
    41  	c.Assert(err, jc.ErrorIsNil)
    42  	runAddRelation(c, "riak", "logging")
    43  }
    44  
    45  func (s *RemoveRelationSuite) TestRemoveRelation(c *gc.C) {
    46  	s.setupRelationForRemove(c)
    47  
    48  	// Destroy a relation that exists.
    49  	err := runRemoveRelation(c, "logging", "riak")
    50  	c.Assert(err, jc.ErrorIsNil)
    51  
    52  	// Destroy a relation that used to exist.
    53  	err = runRemoveRelation(c, "riak", "logging")
    54  	c.Assert(err, gc.ErrorMatches, `relation "logging:info riak:juju-info" not found`)
    55  
    56  	// Invalid removes.
    57  	err = runRemoveRelation(c, "ping", "pong")
    58  	c.Assert(err, gc.ErrorMatches, `service "ping" not found`)
    59  	err = runRemoveRelation(c, "riak")
    60  	c.Assert(err, gc.ErrorMatches, `a relation must involve two services`)
    61  }
    62  
    63  func (s *RemoveRelationSuite) TestBlockRemoveRelation(c *gc.C) {
    64  	s.setupRelationForRemove(c)
    65  
    66  	// block operation
    67  	s.BlockRemoveObject(c, "TestBlockRemoveRelation")
    68  	// Destroy a relation that exists.
    69  	err := runRemoveRelation(c, "logging", "riak")
    70  	s.AssertBlocked(c, err, ".*TestBlockRemoveRelation.*")
    71  }