github.com/juju/charm/v11@v11.2.0/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 "github.com/juju/charm/v11" 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 }