github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/core/payloads/payload_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package payloads_test 5 6 import ( 7 "github.com/juju/charm/v12" 8 "github.com/juju/testing" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/core/payloads" 13 ) 14 15 var _ = gc.Suite(&payloadSuite{}) 16 17 type payloadSuite struct { 18 testing.IsolationSuite 19 } 20 21 func (s *payloadSuite) newPayload(name, pType string) payloads.Payload { 22 return payloads.Payload{ 23 PayloadClass: charm.PayloadClass{ 24 Name: name, 25 Type: pType, 26 }, 27 ID: "id" + name, 28 Status: payloads.StateRunning, 29 Labels: []string{"a-tag"}, 30 Unit: "a-application/0", 31 } 32 } 33 34 func (s *payloadSuite) TestFullID(c *gc.C) { 35 payload := s.newPayload("spam", "docker") 36 id := payload.FullID() 37 38 c.Check(id, gc.Equals, "spam/idspam") 39 } 40 41 func (s *payloadSuite) TestFullIDMissingID(c *gc.C) { 42 payload := s.newPayload("spam", "docker") 43 payload.ID = "" 44 id := payload.FullID() 45 46 c.Check(id, gc.Equals, "spam") 47 } 48 49 func (s *payloadSuite) TestValidateOkay(c *gc.C) { 50 payload := s.newPayload("spam", "docker") 51 err := payload.Validate() 52 53 c.Check(err, jc.ErrorIsNil) 54 } 55 56 func (s *payloadSuite) TestValidateMissingName(c *gc.C) { 57 payload := s.newPayload("spam", "docker") 58 payload.Name = "" 59 err := payload.Validate() 60 61 c.Check(err, gc.ErrorMatches, `payload class missing name`) 62 } 63 64 func (s *payloadSuite) TestValidateMissingType(c *gc.C) { 65 payload := s.newPayload("spam", "docker") 66 payload.Type = "" 67 err := payload.Validate() 68 69 c.Check(err, gc.ErrorMatches, `payload class missing type`) 70 } 71 72 func (s *payloadSuite) TestValidateMissingID(c *gc.C) { 73 payload := s.newPayload("spam", "docker") 74 payload.ID = "" 75 err := payload.Validate() 76 77 c.Check(err, gc.ErrorMatches, `missing ID .*`) 78 } 79 80 func (s *payloadSuite) TestValidateMissingStatus(c *gc.C) { 81 payload := s.newPayload("spam", "docker") 82 payload.Status = "" 83 err := payload.Validate() 84 85 c.Check(err, gc.ErrorMatches, `status .* not supported; expected one of .*`) 86 } 87 88 func (s *payloadSuite) TestValidateUnknownStatus(c *gc.C) { 89 payload := s.newPayload("spam", "docker") 90 payload.Status = "some-unknown-value" 91 err := payload.Validate() 92 93 c.Check(err, gc.ErrorMatches, `status .* not supported; expected one of .*`) 94 } 95 96 func (s *payloadSuite) TestValidateMissingUnit(c *gc.C) { 97 payload := s.newPayload("spam", "docker") 98 payload.Unit = "" 99 err := payload.Validate() 100 101 c.Check(err, gc.ErrorMatches, `missing Unit .*`) 102 }