github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/cmd/juju/environment/unset_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package environment_test
     5  
     6  import (
     7  	"github.com/juju/cmd"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	"github.com/juju/juju/apiserver/common"
    12  	"github.com/juju/juju/cmd/envcmd"
    13  	"github.com/juju/juju/cmd/juju/environment"
    14  	"github.com/juju/juju/testing"
    15  )
    16  
    17  type UnsetSuite struct {
    18  	fakeEnvSuite
    19  }
    20  
    21  var _ = gc.Suite(&UnsetSuite{})
    22  
    23  func (s *UnsetSuite) run(c *gc.C, args ...string) (*cmd.Context, error) {
    24  	command := environment.NewUnsetCommand(s.fake)
    25  	return testing.RunCommand(c, envcmd.Wrap(command), args...)
    26  }
    27  
    28  func (s *UnsetSuite) TestInit(c *gc.C) {
    29  	unsetCmd := &environment.UnsetCommand{}
    30  	// Only empty is a problem.
    31  	err := testing.InitCommand(unsetCmd, []string{})
    32  	c.Assert(err, gc.ErrorMatches, "no keys specified")
    33  	// Everything else is fine.
    34  	err = testing.InitCommand(unsetCmd, []string{"something", "weird"})
    35  	c.Assert(err, jc.ErrorIsNil)
    36  }
    37  
    38  func (s *UnsetSuite) TestPassesValues(c *gc.C) {
    39  	_, err := s.run(c, "special", "running")
    40  	c.Assert(err, jc.ErrorIsNil)
    41  	c.Assert(s.fake.keys, jc.DeepEquals, []string{"special", "running"})
    42  }
    43  
    44  func (s *UnsetSuite) TestUnsettingKnownValue(c *gc.C) {
    45  	_, err := s.run(c, "unknown")
    46  	c.Assert(err, jc.ErrorIsNil)
    47  	c.Assert(s.fake.keys, jc.DeepEquals, []string{"unknown"})
    48  	// Command succeeds, but warning logged.
    49  	expected := `key "unknown" is not defined in the current environment configuration: possible misspelling`
    50  	c.Check(c.GetTestLog(), jc.Contains, expected)
    51  }
    52  
    53  func (s *UnsetSuite) TestBlockedError(c *gc.C) {
    54  	s.fake.err = common.ErrOperationBlocked("TestBlockedError")
    55  	_, err := s.run(c, "special")
    56  	c.Assert(err, gc.Equals, cmd.ErrSilent)
    57  	// msg is logged
    58  	c.Check(c.GetTestLog(), jc.Contains, "TestBlockedError")
    59  }