gopkg.in/juju/charm.v6-unstable@v6.0.0-20171026192109-50d0c219b496/resources_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  	"gopkg.in/juju/charm.v6-unstable"
    11  )
    12  
    13  var _ = gc.Suite(&resourceSuite{})
    14  
    15  type resourceSuite struct{}
    16  
    17  func (s *resourceSuite) TestSchemaOkay(c *gc.C) {
    18  	raw := map[interface{}]interface{}{
    19  		"type":        "file",
    20  		"filename":    "filename.tgz",
    21  		"description": "One line that is useful when operators need to push it.",
    22  	}
    23  	v, err := charm.ResourceSchema.Coerce(raw, nil)
    24  	c.Assert(err, jc.ErrorIsNil)
    25  
    26  	c.Check(v, jc.DeepEquals, map[string]interface{}{
    27  		"type":        "file",
    28  		"filename":    "filename.tgz",
    29  		"description": "One line that is useful when operators need to push it.",
    30  	})
    31  }
    32  
    33  func (s *resourceSuite) TestSchemaMissingType(c *gc.C) {
    34  	raw := map[interface{}]interface{}{
    35  		"filename":    "filename.tgz",
    36  		"description": "One line that is useful when operators need to push it.",
    37  	}
    38  	v, err := charm.ResourceSchema.Coerce(raw, nil)
    39  	c.Assert(err, jc.ErrorIsNil)
    40  
    41  	c.Check(v, jc.DeepEquals, map[string]interface{}{
    42  		"type":        "file",
    43  		"filename":    "filename.tgz",
    44  		"description": "One line that is useful when operators need to push it.",
    45  	})
    46  }
    47  
    48  func (s *resourceSuite) TestSchemaUnknownType(c *gc.C) {
    49  	raw := map[interface{}]interface{}{
    50  		"type":        "repo",
    51  		"filename":    "juju",
    52  		"description": "One line that is useful when operators need to push it.",
    53  	}
    54  	v, err := charm.ResourceSchema.Coerce(raw, nil)
    55  	c.Assert(err, jc.ErrorIsNil)
    56  
    57  	c.Check(v, jc.DeepEquals, map[string]interface{}{
    58  		"type":        "repo",
    59  		"filename":    "juju",
    60  		"description": "One line that is useful when operators need to push it.",
    61  	})
    62  }
    63  
    64  func (s *resourceSuite) TestSchemaMissingPath(c *gc.C) {
    65  	raw := map[interface{}]interface{}{
    66  		"type":        "file",
    67  		"description": "One line that is useful when operators need to push it.",
    68  	}
    69  	_, err := charm.ResourceSchema.Coerce(raw, nil)
    70  
    71  	c.Check(err, gc.NotNil)
    72  }
    73  
    74  func (s *resourceSuite) TestSchemaMissingComment(c *gc.C) {
    75  	raw := map[interface{}]interface{}{
    76  		"type":     "file",
    77  		"filename": "filename.tgz",
    78  	}
    79  	v, err := charm.ResourceSchema.Coerce(raw, nil)
    80  	c.Assert(err, jc.ErrorIsNil)
    81  
    82  	c.Check(v, jc.DeepEquals, map[string]interface{}{
    83  		"type":        "file",
    84  		"filename":    "filename.tgz",
    85  		"description": "",
    86  	})
    87  }