1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
4
package imagemetadata_test
9
jc "github.com/juju/testing/checkers"
10
"github.com/juju/utils/series"
11
gc "gopkg.in/check.v1"
13
"github.com/juju/juju/apiserver/imagemetadata"
14
"github.com/juju/juju/apiserver/params"
15
"github.com/juju/juju/environs/config"
16
"github.com/juju/juju/state/cloudimagemetadata"
17
"github.com/juju/juju/testing"
20
type funcSuite struct {
21
baseImageMetadataSuite
24
expected cloudimagemetadata.Metadata
27
var _ = gc.Suite(&funcSuite{})
29
func (s *funcSuite) SetUpTest(c *gc.C) {
30
s.baseImageMetadataSuite.SetUpTest(c)
32
cfg, err := config.New(config.NoDefaults, mockConfig())
33
c.Assert(err, jc.ErrorIsNil)
35
s.state = s.constructState(s.cfg, nil)
37
s.expected = cloudimagemetadata.Metadata{
38
cloudimagemetadata.MetadataAttributes{
41
Series: series.LatestLts(),
43
Region: "dummy_region",
50
func (s *funcSuite) TestParseMetadataNoSource(c *gc.C) {
51
m, err := imagemetadata.ParseMetadataFromParams(s.api, params.CloudImageMetadata{}, s.cfg, "dummy_region")
52
c.Assert(err, jc.ErrorIsNil)
53
c.Assert(m, gc.DeepEquals, s.expected)
56
func (s *funcSuite) TestParseMetadataAnySource(c *gc.C) {
57
s.expected.Source = "any"
58
m, err := imagemetadata.ParseMetadataFromParams(s.api, params.CloudImageMetadata{Source: "any"}, s.cfg, "dummy_region")
59
c.Assert(err, jc.ErrorIsNil)
60
c.Assert(m, gc.DeepEquals, s.expected)
63
func (s *funcSuite) TestParseMetadataAnyStream(c *gc.C) {
64
stream := "happy stream"
65
s.expected.Stream = stream
67
m, err := imagemetadata.ParseMetadataFromParams(s.api, params.CloudImageMetadata{Stream: stream}, s.cfg, "dummy_region")
68
c.Assert(err, jc.ErrorIsNil)
69
c.Assert(m, gc.DeepEquals, s.expected)
72
func (s *funcSuite) TestParseMetadataDefaultStream(c *gc.C) {
73
m, err := imagemetadata.ParseMetadataFromParams(s.api, params.CloudImageMetadata{}, s.cfg, "dummy_region")
74
c.Assert(err, jc.ErrorIsNil)
75
c.Assert(m, gc.DeepEquals, s.expected)
78
func (s *funcSuite) TestParseMetadataAnyRegion(c *gc.C) {
80
s.expected.Region = region
82
m, err := imagemetadata.ParseMetadataFromParams(s.api, params.CloudImageMetadata{Region: region}, s.cfg, "dummy_region")
83
c.Assert(err, jc.ErrorIsNil)
84
c.Assert(m, gc.DeepEquals, s.expected)
87
type funcMetadataSuite struct {
91
var _ = gc.Suite(&funcMetadataSuite{})
93
func (s *funcMetadataSuite) TestProcessErrorsNil(c *gc.C) {
94
s.assertProcessErrorsNone(c, nil)
97
func (s *funcMetadataSuite) TestProcessErrorsEmpty(c *gc.C) {
98
s.assertProcessErrorsNone(c, []params.ErrorResult{})
101
func (s *funcMetadataSuite) TestProcessErrorsNilError(c *gc.C) {
102
s.assertProcessErrorsNone(c, []params.ErrorResult{{Error: nil}})
105
func (s *funcMetadataSuite) TestProcessErrorsEmptyMessageError(c *gc.C) {
106
s.assertProcessErrorsNone(c, []params.ErrorResult{{Error: ¶ms.Error{Message: ""}}})
109
func (s *funcMetadataSuite) TestProcessErrorsFullError(c *gc.C) {
112
errs := []params.ErrorResult{{Error: ¶ms.Error{Message: msg}}}
114
expected := fmt.Sprintf(`
115
saving some image metadata:
118
s.assertProcessErrors(c, errs, expected)
121
func (s *funcMetadataSuite) TestProcessErrorsMany(c *gc.C) {
125
errs := []params.ErrorResult{
126
{Error: ¶ms.Error{Message: msg1}},
127
{Error: ¶ms.Error{Message: ""}},
129
{Error: ¶ms.Error{Message: msg2}},
132
expected := fmt.Sprintf(`
133
saving some image metadata:
137
s.assertProcessErrors(c, errs, expected)
140
var process = imagemetadata.ProcessErrors
142
func (s *funcMetadataSuite) assertProcessErrorsNone(c *gc.C, errs []params.ErrorResult) {
143
c.Assert(process(errs), jc.ErrorIsNil)
146
func (s *funcMetadataSuite) assertProcessErrors(c *gc.C, errs []params.ErrorResult, expected string) {
147
c.Assert(process(errs), gc.ErrorMatches, expected)