github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/cmd/juju/commands/machine_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package commands
     5  
     6  import (
     7  	"github.com/juju/cmd"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	jujutesting "github.com/juju/juju/juju/testing"
    12  	"github.com/juju/juju/state"
    13  	"github.com/juju/juju/testing"
    14  )
    15  
    16  // MachineSuite tests the connectivity of all the machine subcommands. These
    17  // tests go from the command line, api client, api server, db. The db changes
    18  // are then checked.  Only one test for each command is done here to check
    19  // connectivity.  Exhaustive unit tests are at each layer.
    20  type MachineSuite struct {
    21  	jujutesting.JujuConnSuite
    22  }
    23  
    24  var _ = gc.Suite(&MachineSuite{})
    25  
    26  func (s *MachineSuite) RunCommand(c *gc.C, args ...string) (*cmd.Context, error) {
    27  	context := testing.Context(c)
    28  	juju := NewJujuCommand(context)
    29  	if err := testing.InitCommand(juju, args); err != nil {
    30  		return context, err
    31  	}
    32  	return context, juju.Run(context)
    33  }
    34  
    35  func (s *MachineSuite) TestMachineAdd(c *gc.C) {
    36  	machines, err := s.State.AllMachines()
    37  	c.Assert(err, jc.ErrorIsNil)
    38  	count := len(machines)
    39  
    40  	ctx, err := s.RunCommand(c, "add-machine")
    41  	c.Assert(testing.Stderr(ctx), jc.Contains, `created machine`)
    42  
    43  	machines, err = s.State.AllMachines()
    44  	c.Assert(err, jc.ErrorIsNil)
    45  	c.Assert(machines, gc.HasLen, count+1)
    46  }
    47  
    48  func (s *MachineSuite) TestMachineRemove(c *gc.C) {
    49  	machine := s.Factory.MakeMachine(c, nil)
    50  
    51  	ctx, err := s.RunCommand(c, "remove-machine", machine.Id())
    52  	c.Assert(testing.Stdout(ctx), gc.Equals, "")
    53  
    54  	err = machine.Refresh()
    55  	c.Assert(err, jc.ErrorIsNil)
    56  
    57  	c.Assert(machine.Life(), gc.Equals, state.Dying)
    58  }