gopkg.in/juju/charm.v6-unstable@v6.0.0-20171026192109-50d0c219b496/payloads_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the LGPLv3, see LICENCE file for details.
     3  
     4  package charm_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"gopkg.in/juju/charm.v6-unstable"
    11  )
    12  
    13  var _ = gc.Suite(&payloadClassSuite{})
    14  
    15  type payloadClassSuite struct{}
    16  
    17  func (s *payloadClassSuite) TestParsePayloadClassOkay(c *gc.C) {
    18  	name := "my-payload"
    19  	data := map[string]interface{}{
    20  		"type": "docker",
    21  	}
    22  	payloadClass := charm.ParsePayloadClass(name, data)
    23  
    24  	c.Check(payloadClass, jc.DeepEquals, charm.PayloadClass{
    25  		Name: "my-payload",
    26  		Type: "docker",
    27  	})
    28  }
    29  
    30  func (s *payloadClassSuite) TestParsePayloadClassMissingName(c *gc.C) {
    31  	name := ""
    32  	data := map[string]interface{}{
    33  		"type": "docker",
    34  	}
    35  	payloadClass := charm.ParsePayloadClass(name, data)
    36  
    37  	c.Check(payloadClass, jc.DeepEquals, charm.PayloadClass{
    38  		Name: "",
    39  		Type: "docker",
    40  	})
    41  }
    42  
    43  func (s *payloadClassSuite) TestParsePayloadClassEmpty(c *gc.C) {
    44  	name := "my-payload"
    45  	var data map[string]interface{}
    46  	payloadClass := charm.ParsePayloadClass(name, data)
    47  
    48  	c.Check(payloadClass, jc.DeepEquals, charm.PayloadClass{
    49  		Name: "my-payload",
    50  	})
    51  }
    52  
    53  func (s *payloadClassSuite) TestValidateFull(c *gc.C) {
    54  	payloadClass := charm.PayloadClass{
    55  		Name: "my-payload",
    56  		Type: "docker",
    57  	}
    58  	err := payloadClass.Validate()
    59  
    60  	c.Check(err, jc.ErrorIsNil)
    61  }
    62  
    63  func (s *payloadClassSuite) TestValidateZeroValue(c *gc.C) {
    64  	var payloadClass charm.PayloadClass
    65  	err := payloadClass.Validate()
    66  
    67  	c.Check(err, gc.NotNil)
    68  }
    69  
    70  func (s *payloadClassSuite) TestValidateMissingName(c *gc.C) {
    71  	payloadClass := charm.PayloadClass{
    72  		Type: "docker",
    73  	}
    74  	err := payloadClass.Validate()
    75  
    76  	c.Check(err, gc.ErrorMatches, `payload class missing name`)
    77  }
    78  
    79  func (s *payloadClassSuite) TestValidateBadName(c *gc.C) {
    80  	payloadClass := charm.PayloadClass{
    81  		Name: "my-###-payload",
    82  		Type: "docker",
    83  	}
    84  	err := payloadClass.Validate()
    85  
    86  	c.Check(err, gc.ErrorMatches, `invalid payload class "my-###-payload"`)
    87  }
    88  
    89  func (s *payloadClassSuite) TestValidateMissingType(c *gc.C) {
    90  	payloadClass := charm.PayloadClass{
    91  		Name: "my-payload",
    92  	}
    93  	err := payloadClass.Validate()
    94  
    95  	c.Check(err, gc.ErrorMatches, `payload class missing type`)
    96  }