github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/service/common/conf_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package common_test
     5  
     6  import (
     7  	"github.com/juju/testing"
     8  	jc "github.com/juju/testing/checkers"
     9  	"github.com/juju/utils/shell"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	"github.com/juju/juju/service/common"
    13  )
    14  
    15  var renderer = &shell.BashRenderer{}
    16  
    17  type confSuite struct {
    18  	testing.IsolationSuite
    19  }
    20  
    21  var _ = gc.Suite(&confSuite{})
    22  
    23  func (*confSuite) TestIsZeroTrue(c *gc.C) {
    24  	var conf common.Conf
    25  	isZero := conf.IsZero()
    26  
    27  	c.Check(isZero, jc.IsTrue)
    28  }
    29  
    30  func (*confSuite) TestIsZero(c *gc.C) {
    31  	conf := common.Conf{
    32  		Desc:      "some service",
    33  		ExecStart: "/path/to/some-command a b c",
    34  	}
    35  	isZero := conf.IsZero()
    36  
    37  	c.Check(isZero, jc.IsFalse)
    38  }
    39  
    40  func (*confSuite) TestValidateOkay(c *gc.C) {
    41  	conf := common.Conf{
    42  		Desc:      "some service",
    43  		ExecStart: "/path/to/some-command a b c",
    44  	}
    45  	err := conf.Validate(renderer)
    46  
    47  	c.Check(err, jc.ErrorIsNil)
    48  }
    49  
    50  func (*confSuite) TestValidateSingleQuotedExecutable(c *gc.C) {
    51  	conf := common.Conf{
    52  		Desc:      "some service",
    53  		ExecStart: "'/path/to/some-command' a b c",
    54  	}
    55  	err := conf.Validate(renderer)
    56  
    57  	c.Check(err, jc.ErrorIsNil)
    58  }
    59  
    60  func (*confSuite) TestValidateDoubleQuotedExecutable(c *gc.C) {
    61  	conf := common.Conf{
    62  		Desc:      "some service",
    63  		ExecStart: `"/path/to/some-command" a b c`,
    64  	}
    65  	err := conf.Validate(renderer)
    66  
    67  	c.Check(err, jc.ErrorIsNil)
    68  }
    69  
    70  func (*confSuite) TestValidatePartiallyQuotedExecutable(c *gc.C) {
    71  	conf := common.Conf{
    72  		Desc:      "some service",
    73  		ExecStart: "'/path/to/some-command a b c'",
    74  	}
    75  	err := conf.Validate(renderer)
    76  
    77  	c.Check(err, gc.ErrorMatches, `.*relative path in ExecStart \(.*`)
    78  }
    79  
    80  func (*confSuite) TestValidateMissingDesc(c *gc.C) {
    81  	conf := common.Conf{
    82  		ExecStart: "/path/to/some-command a b c",
    83  	}
    84  	err := conf.Validate(renderer)
    85  
    86  	c.Check(err, gc.ErrorMatches, ".*missing Desc.*")
    87  }
    88  
    89  func (*confSuite) TestValidateMissingExecStart(c *gc.C) {
    90  	conf := common.Conf{
    91  		Desc: "some service",
    92  	}
    93  	err := conf.Validate(renderer)
    94  
    95  	c.Check(err, gc.ErrorMatches, ".*missing ExecStart.*")
    96  }
    97  
    98  func (*confSuite) TestValidateRelativeExecStart(c *gc.C) {
    99  	conf := common.Conf{
   100  		Desc:      "some service",
   101  		ExecStart: "some-command a b c",
   102  	}
   103  	err := conf.Validate(renderer)
   104  
   105  	c.Check(err, gc.ErrorMatches, `.*relative path in ExecStart \(.*`)
   106  }
   107  
   108  func (*confSuite) TestValidateRelativeExecStopPost(c *gc.C) {
   109  	conf := common.Conf{
   110  		Desc:         "some service",
   111  		ExecStart:    "/path/to/some-command a b c",
   112  		ExecStopPost: "some-other-command a b c",
   113  	}
   114  	err := conf.Validate(renderer)
   115  
   116  	c.Check(err, gc.ErrorMatches, `.*relative path in ExecStopPost \(.*`)
   117  }