github.com/juju/charm/v11@v11.2.0/resource/type_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 "github.com/juju/charm/v11/resource" 12 ) 13 14 var _ = gc.Suite(&TypeSuite{}) 15 16 type TypeSuite struct{} 17 18 func (s *TypeSuite) TestParseTypeOkay(c *gc.C) { 19 for resourceType, expected := range map[string]resource.Type{ 20 "file": resource.TypeFile, 21 "oci-image": resource.TypeContainerImage, 22 } { 23 rt, err := resource.ParseType(resourceType) 24 c.Assert(err, jc.ErrorIsNil) 25 26 c.Check(rt, gc.Equals, expected) 27 } 28 } 29 30 func (s *TypeSuite) TestParseTypeEmpty(c *gc.C) { 31 rt, err := resource.ParseType("") 32 33 c.Check(err, gc.ErrorMatches, `unsupported resource type ""`) 34 var unknown resource.Type 35 c.Check(rt, gc.Equals, unknown) 36 } 37 38 func (s *TypeSuite) TestParseTypeUnsupported(c *gc.C) { 39 rt, err := resource.ParseType("spam") 40 41 c.Check(err, gc.ErrorMatches, `unsupported resource type "spam"`) 42 var unknown resource.Type 43 c.Check(rt, gc.Equals, unknown) 44 } 45 46 func (s *TypeSuite) TestTypeStringSupported(c *gc.C) { 47 supported := map[resource.Type]string{ 48 resource.TypeFile: "file", 49 resource.TypeContainerImage: "oci-image", 50 } 51 for rt, expected := range supported { 52 str := rt.String() 53 54 c.Check(str, gc.Equals, expected) 55 } 56 } 57 58 func (s *TypeSuite) TestTypeStringUnknown(c *gc.C) { 59 var unknown resource.Type 60 str := unknown.String() 61 62 c.Check(str, gc.Equals, "") 63 } 64 65 func (s *TypeSuite) TestTypeValidateSupported(c *gc.C) { 66 supported := []resource.Type{ 67 resource.TypeFile, 68 resource.TypeContainerImage, 69 } 70 for _, rt := range supported { 71 err := rt.Validate() 72 73 c.Check(err, jc.ErrorIsNil) 74 } 75 } 76 77 func (s *TypeSuite) TestTypeValidateUnknown(c *gc.C) { 78 var unknown resource.Type 79 err := unknown.Validate() 80 81 c.Check(err, jc.Satisfies, errors.IsNotValid) 82 c.Check(err, gc.ErrorMatches, `unknown resource type`) 83 }