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  }