~juju-qa/ubuntu/xenial/juju/2.0-rc2

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/core/description/cloudimagemetadata_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-09-30 14:39:30 UTC
  • mfrom: (1.8.1)
  • Revision ID: nicholas.skaggs@canonical.com-20160930143930-vwwhrefh6ftckccy
import upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2016 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package description
 
5
 
 
6
import (
 
7
        jc "github.com/juju/testing/checkers"
 
8
        gc "gopkg.in/check.v1"
 
9
        "gopkg.in/yaml.v2"
 
10
)
 
11
 
 
12
type CloudImageMetadataSerializationSuite struct {
 
13
        SliceSerializationSuite
 
14
}
 
15
 
 
16
var _ = gc.Suite(&CloudImageMetadataSerializationSuite{})
 
17
 
 
18
func (s *CloudImageMetadataSerializationSuite) SetUpTest(c *gc.C) {
 
19
        s.SliceSerializationSuite.SetUpTest(c)
 
20
        s.importName = "cloudimagemetadata"
 
21
        s.sliceName = "cloudimagemetadata"
 
22
        s.importFunc = func(m map[string]interface{}) (interface{}, error) {
 
23
                return importCloudImageMetadata(m)
 
24
        }
 
25
        s.testFields = func(m map[string]interface{}) {
 
26
                m["cloudimagemetadata"] = []interface{}{}
 
27
        }
 
28
}
 
29
 
 
30
func (s *CloudImageMetadataSerializationSuite) TestNewCloudImageMetadata(c *gc.C) {
 
31
        storageSize := uint64(3)
 
32
        args := CloudImageMetadataArgs{
 
33
                Stream:          "stream",
 
34
                Region:          "region-test",
 
35
                Version:         "14.04",
 
36
                Series:          "trusty",
 
37
                Arch:            "arch",
 
38
                VirtType:        "virtType-test",
 
39
                RootStorageType: "rootStorageType-test",
 
40
                RootStorageSize: &storageSize,
 
41
                Source:          "test",
 
42
                Priority:        0,
 
43
                ImageId:         "foo",
 
44
                DateCreated:     0,
 
45
        }
 
46
        metadata := newCloudImageMetadata(args)
 
47
        c.Check(metadata.Stream(), gc.Equals, args.Stream)
 
48
        c.Check(metadata.Region(), gc.Equals, args.Region)
 
49
        c.Check(metadata.Version(), gc.Equals, args.Version)
 
50
        c.Check(metadata.Series(), gc.Equals, args.Series)
 
51
        c.Check(metadata.Arch(), gc.Equals, args.Arch)
 
52
        c.Check(metadata.VirtType(), gc.Equals, args.VirtType)
 
53
        c.Check(metadata.RootStorageType(), gc.Equals, args.RootStorageType)
 
54
        value, ok := metadata.RootStorageSize()
 
55
        c.Check(ok, jc.IsTrue)
 
56
        c.Check(value, gc.Equals, *args.RootStorageSize)
 
57
        c.Check(metadata.Source(), gc.Equals, args.Source)
 
58
        c.Check(metadata.Priority(), gc.Equals, args.Priority)
 
59
        c.Check(metadata.ImageId(), gc.Equals, args.ImageId)
 
60
        c.Check(metadata.DateCreated(), gc.Equals, args.DateCreated)
 
61
}
 
62
 
 
63
func (s *CloudImageMetadataSerializationSuite) TestParsingSerializedData(c *gc.C) {
 
64
        storageSize := uint64(3)
 
65
        initial := cloudimagemetadataset{
 
66
                Version: 1,
 
67
                CloudImageMetadata_: []*cloudimagemetadata{
 
68
                        newCloudImageMetadata(CloudImageMetadataArgs{
 
69
                                Stream:          "stream",
 
70
                                Region:          "region-test",
 
71
                                Version:         "14.04",
 
72
                                Series:          "trusty",
 
73
                                Arch:            "arch",
 
74
                                VirtType:        "virtType-test",
 
75
                                RootStorageType: "rootStorageType-test",
 
76
                                RootStorageSize: &storageSize,
 
77
                                Source:          "test",
 
78
                                Priority:        0,
 
79
                                ImageId:         "foo",
 
80
                                DateCreated:     0,
 
81
                        }),
 
82
                        newCloudImageMetadata(CloudImageMetadataArgs{
 
83
                                Stream:  "stream",
 
84
                                Region:  "region-test",
 
85
                                Version: "14.04",
 
86
                        }),
 
87
                },
 
88
        }
 
89
 
 
90
        bytes, err := yaml.Marshal(initial)
 
91
        c.Assert(err, jc.ErrorIsNil)
 
92
 
 
93
        var source map[string]interface{}
 
94
        err = yaml.Unmarshal(bytes, &source)
 
95
        c.Assert(err, jc.ErrorIsNil)
 
96
 
 
97
        metadata, err := importCloudImageMetadata(source)
 
98
        c.Assert(err, jc.ErrorIsNil)
 
99
 
 
100
        c.Assert(metadata, jc.DeepEquals, initial.CloudImageMetadata_)
 
101
}