github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/apiserver/imagemetadata/functions_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package imagemetadata_test 5 6 import ( 7 "fmt" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/apiserver/imagemetadata" 13 "github.com/juju/juju/apiserver/params" 14 "github.com/juju/juju/state/cloudimagemetadata" 15 "github.com/juju/juju/testing" 16 ) 17 18 type funcSuite struct { 19 testing.BaseSuite 20 21 expected cloudimagemetadata.Metadata 22 } 23 24 func (s *funcSuite) SetUpTest(c *gc.C) { 25 s.BaseSuite.SetUpTest(c) 26 27 s.expected = cloudimagemetadata.Metadata{ 28 cloudimagemetadata.MetadataAttributes{ 29 Stream: "released", 30 Source: cloudimagemetadata.Custom, 31 }, 32 "", 33 } 34 } 35 36 var _ = gc.Suite(&funcSuite{}) 37 38 func (s *funcSuite) TestParseMetadataSourcePanic(c *gc.C) { 39 m := func() { imagemetadata.ParseMetadataFromParams(params.CloudImageMetadata{}) } 40 c.Assert(m, gc.PanicMatches, `unknown cloud image metadata source ""`) 41 } 42 43 func (s *funcSuite) TestParseMetadataCustom(c *gc.C) { 44 m := imagemetadata.ParseMetadataFromParams(params.CloudImageMetadata{Source: "custom"}) 45 c.Assert(m, gc.DeepEquals, s.expected) 46 47 m = imagemetadata.ParseMetadataFromParams(params.CloudImageMetadata{Source: "CusTOM"}) 48 c.Assert(m, gc.DeepEquals, s.expected) 49 } 50 51 func (s *funcSuite) TestParseMetadataPublic(c *gc.C) { 52 s.expected.Source = cloudimagemetadata.Public 53 54 m := imagemetadata.ParseMetadataFromParams(params.CloudImageMetadata{Source: "public"}) 55 c.Assert(m, gc.DeepEquals, s.expected) 56 57 m = imagemetadata.ParseMetadataFromParams(params.CloudImageMetadata{Source: "PubLic"}) 58 c.Assert(m, gc.DeepEquals, s.expected) 59 } 60 61 func (s *funcSuite) TestParseMetadataAnyStream(c *gc.C) { 62 stream := "happy stream" 63 s.expected.Stream = stream 64 65 m := imagemetadata.ParseMetadataFromParams(params.CloudImageMetadata{ 66 Source: "custom", 67 Stream: stream, 68 }) 69 c.Assert(m, gc.DeepEquals, s.expected) 70 } 71 72 func (s *funcSuite) TestParseMetadataDefaultStream(c *gc.C) { 73 m := imagemetadata.ParseMetadataFromParams(params.CloudImageMetadata{ 74 Source: "custom", 75 }) 76 c.Assert(m, gc.DeepEquals, s.expected) 77 } 78 79 type funcMetadataSuite struct { 80 testing.BaseSuite 81 } 82 83 var _ = gc.Suite(&funcMetadataSuite{}) 84 85 func (s *funcMetadataSuite) TestProcessErrorsNil(c *gc.C) { 86 s.assertProcessErrorsNone(c, nil) 87 } 88 89 func (s *funcMetadataSuite) TestProcessErrorsEmpty(c *gc.C) { 90 s.assertProcessErrorsNone(c, []params.ErrorResult{}) 91 } 92 93 func (s *funcMetadataSuite) TestProcessErrorsNilError(c *gc.C) { 94 s.assertProcessErrorsNone(c, []params.ErrorResult{{Error: nil}}) 95 } 96 97 func (s *funcMetadataSuite) TestProcessErrorsEmptyMessageError(c *gc.C) { 98 s.assertProcessErrorsNone(c, []params.ErrorResult{{Error: ¶ms.Error{Message: ""}}}) 99 } 100 101 func (s *funcMetadataSuite) TestProcessErrorsFullError(c *gc.C) { 102 msg := "my bad" 103 104 errs := []params.ErrorResult{{Error: ¶ms.Error{Message: msg}}} 105 106 expected := fmt.Sprintf(` 107 saving some image metadata: 108 %v`[1:], msg) 109 110 s.assertProcessErrors(c, errs, expected) 111 } 112 113 func (s *funcMetadataSuite) TestProcessErrorsMany(c *gc.C) { 114 msg1 := "my bad" 115 msg2 := "my good" 116 117 errs := []params.ErrorResult{ 118 {Error: ¶ms.Error{Message: msg1}}, 119 {Error: ¶ms.Error{Message: ""}}, 120 {Error: nil}, 121 {Error: ¶ms.Error{Message: msg2}}, 122 } 123 124 expected := fmt.Sprintf(` 125 saving some image metadata: 126 %v 127 %v`[1:], msg1, msg2) 128 129 s.assertProcessErrors(c, errs, expected) 130 } 131 132 var process = imagemetadata.ProcessErrors 133 134 func (s *funcMetadataSuite) assertProcessErrorsNone(c *gc.C, errs []params.ErrorResult) { 135 c.Assert(process(errs), jc.ErrorIsNil) 136 } 137 138 func (s *funcMetadataSuite) assertProcessErrors(c *gc.C, errs []params.ErrorResult, expected string) { 139 c.Assert(process(errs), gc.ErrorMatches, expected) 140 }