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 }