gopkg.in/juju/charm.v6-unstable@v6.0.0-20171026192109-50d0c219b496/resource/meta_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the LGPLv3, see LICENCE file for details. 3 4 package resource_test 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "gopkg.in/juju/charm.v6-unstable/resource" 12 ) 13 14 var _ = gc.Suite(&MetaSuite{}) 15 16 type MetaSuite struct{} 17 18 func (s *MetaSuite) TestValidateFull(c *gc.C) { 19 res := resource.Meta{ 20 Name: "my-resource", 21 Type: resource.TypeFile, 22 Path: "filename.tgz", 23 Description: "One line that is useful when operators need to push it.", 24 } 25 err := res.Validate() 26 27 c.Check(err, jc.ErrorIsNil) 28 } 29 30 func (s *MetaSuite) TestValidateZeroValue(c *gc.C) { 31 var res resource.Meta 32 err := res.Validate() 33 34 c.Check(err, jc.Satisfies, errors.IsNotValid) 35 } 36 37 func (s *MetaSuite) TestValidateMissingName(c *gc.C) { 38 res := resource.Meta{ 39 Type: resource.TypeFile, 40 Path: "filename.tgz", 41 Description: "One line that is useful when operators need to push it.", 42 } 43 err := res.Validate() 44 45 c.Check(err, jc.Satisfies, errors.IsNotValid) 46 c.Check(err, gc.ErrorMatches, `resource missing name`) 47 } 48 49 func (s *MetaSuite) TestValidateMissingType(c *gc.C) { 50 res := resource.Meta{ 51 Name: "my-resource", 52 Path: "filename.tgz", 53 Description: "One line that is useful when operators need to push it.", 54 } 55 err := res.Validate() 56 57 c.Check(err, jc.Satisfies, errors.IsNotValid) 58 c.Check(err, gc.ErrorMatches, `resource missing type`) 59 } 60 61 func (s *MetaSuite) TestValidateMissingPath(c *gc.C) { 62 res := resource.Meta{ 63 Name: "my-resource", 64 Type: resource.TypeFile, 65 Description: "One line that is useful when operators need to push it.", 66 } 67 err := res.Validate() 68 69 c.Check(err, jc.Satisfies, errors.IsNotValid) 70 c.Check(err, gc.ErrorMatches, `resource missing filename`) 71 } 72 73 func (s *MetaSuite) TestValidateNestedPath(c *gc.C) { 74 res := resource.Meta{ 75 Name: "my-resource", 76 Type: resource.TypeFile, 77 Path: "spam/eggs", 78 } 79 err := res.Validate() 80 81 c.Check(err, jc.Satisfies, errors.IsNotValid) 82 c.Check(err, gc.ErrorMatches, `.*filename cannot contain "/" .*`) 83 } 84 85 func (s *MetaSuite) TestValidateAbsolutePath(c *gc.C) { 86 res := resource.Meta{ 87 Name: "my-resource", 88 Type: resource.TypeFile, 89 Path: "/spam/eggs", 90 } 91 err := res.Validate() 92 93 c.Check(err, jc.Satisfies, errors.IsNotValid) 94 c.Check(err, gc.ErrorMatches, `.*filename cannot contain "/" .*`) 95 } 96 97 func (s *MetaSuite) TestValidateSuspectPath(c *gc.C) { 98 res := resource.Meta{ 99 Name: "my-resource", 100 Type: resource.TypeFile, 101 Path: "git@github.com:juju/juju.git", 102 } 103 err := res.Validate() 104 105 c.Check(err, jc.Satisfies, errors.IsNotValid) 106 c.Check(err, gc.ErrorMatches, `.*filename cannot contain "/" .*`) 107 } 108 109 func (s *MetaSuite) TestValidateMissingComment(c *gc.C) { 110 res := resource.Meta{ 111 Name: "my-resource", 112 Type: resource.TypeFile, 113 Path: "filename.tgz", 114 } 115 err := res.Validate() 116 117 c.Check(err, jc.ErrorIsNil) 118 }