github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/worker/machineactions/handleactions_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Copyright 2016 Cloudbase Solutions SRL
     3  // Licensed under the AGPLv3, see LICENCE file for details.
     4  
     5  package machineactions_test
     6  
     7  import (
     8  	"strings"
     9  
    10  	"github.com/juju/errors"
    11  	"github.com/juju/juju/core/actions"
    12  	"github.com/juju/juju/worker/machineactions"
    13  	"github.com/juju/testing"
    14  	jc "github.com/juju/testing/checkers"
    15  	"github.com/juju/utils/exec"
    16  	gc "gopkg.in/check.v1"
    17  )
    18  
    19  type HandleSuite struct {
    20  	testing.IsolationSuite
    21  }
    22  
    23  var _ = gc.Suite(&HandleSuite{})
    24  
    25  func (s *HandleSuite) TestInvalidAction(c *gc.C) {
    26  	results, err := machineactions.HandleAction("invalid", nil)
    27  	c.Assert(err, gc.ErrorMatches, "unexpected action invalid")
    28  	c.Assert(results, gc.IsNil)
    29  }
    30  
    31  func (s *HandleSuite) TestValidActionInvalidParams(c *gc.C) {
    32  	results, err := machineactions.HandleAction(actions.JujuRunActionName, nil)
    33  	c.Assert(err, gc.ErrorMatches, "invalid action parameters")
    34  	c.Assert(results, gc.IsNil)
    35  }
    36  
    37  func (s *HandleSuite) TestTimeoutRun(c *gc.C) {
    38  	params := map[string]interface{}{
    39  		"command": "sleep 100",
    40  		"timeout": float64(1),
    41  	}
    42  
    43  	results, err := machineactions.HandleAction(actions.JujuRunActionName, params)
    44  	c.Assert(errors.Cause(err), gc.Equals, exec.ErrCancelled)
    45  	c.Assert(results, gc.IsNil)
    46  }
    47  
    48  func (s *HandleSuite) TestSuccessfulRun(c *gc.C) {
    49  	params := map[string]interface{}{
    50  		"command": "echo 1",
    51  		"timeout": float64(0),
    52  	}
    53  
    54  	results, err := machineactions.HandleAction(actions.JujuRunActionName, params)
    55  	c.Assert(err, jc.ErrorIsNil)
    56  	c.Assert(results["Code"], gc.Equals, "0")
    57  	c.Assert(strings.TrimRight(results["Stdout"].(string), "\r\n"), gc.Equals, "1")
    58  	c.Assert(results["Stderr"], gc.Equals, "")
    59  }
    60  
    61  func (s *HandleSuite) TestErrorRun(c *gc.C) {
    62  	params := map[string]interface{}{
    63  		"command": "exit 42",
    64  		"timeout": float64(0),
    65  	}
    66  
    67  	results, err := machineactions.HandleAction(actions.JujuRunActionName, params)
    68  	c.Assert(err, jc.ErrorIsNil)
    69  	c.Assert(results["Code"], gc.Equals, "42")
    70  	c.Assert(results["Stdout"], gc.Equals, "")
    71  	c.Assert(results["Stderr"], gc.Equals, "")
    72  }