1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/errors"
8
jc "github.com/juju/testing/checkers"
10
"gopkg.in/juju/names.v2"
12
basetesting "github.com/juju/juju/api/base/testing"
13
"github.com/juju/juju/api/uniter"
14
"github.com/juju/juju/apiserver/params"
15
coretesting "github.com/juju/juju/testing"
18
type unitStorageSuite struct {
22
var _ = gc.Suite(&unitStorageSuite{})
24
func (s *unitStorageSuite) createTestUnit(c *gc.C, t string, apiCaller basetesting.APICallerFunc) *uniter.Unit {
25
tag := names.NewUnitTag(t)
26
st := uniter.NewState(apiCaller, tag)
27
return uniter.CreateUnit(st, tag)
30
func (s *unitStorageSuite) TestAddUnitStorage(c *gc.C) {
32
args := map[string][]params.StorageConstraints{
33
"data": []params.StorageConstraints{
34
params.StorageConstraints{Count: &count}},
37
expected := params.StoragesAddParams{
38
Storages: []params.StorageAddParams{
39
{"unit-mysql-0", "data", params.StorageConstraints{Count: &count}},
43
apiCaller := basetesting.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
44
c.Assert(objType, gc.Equals, "Uniter")
45
c.Assert(version, gc.Equals, 4)
46
c.Assert(id, gc.Equals, "")
47
c.Assert(request, gc.Equals, "AddUnitStorage")
48
c.Assert(arg, gc.DeepEquals, expected)
49
c.Assert(result, gc.FitsTypeOf, ¶ms.ErrorResults{})
50
*(result.(*params.ErrorResults)) = params.ErrorResults{
51
Results: []params.ErrorResult{{
52
Error: ¶ms.Error{Message: "yoink"},
57
u := s.createTestUnit(c, "mysql/0", apiCaller)
58
err := u.AddStorage(args)
59
c.Assert(err, gc.ErrorMatches, "yoink")
62
func (s *unitStorageSuite) TestAddUnitStorageError(c *gc.C) {
64
args := map[string][]params.StorageConstraints{
65
"data": []params.StorageConstraints{params.StorageConstraints{Count: &count}},
68
expected := params.StoragesAddParams{
69
Storages: []params.StorageAddParams{
70
{"unit-mysql-0", "data", params.StorageConstraints{Count: &count}},
76
apiCaller := basetesting.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
77
c.Assert(objType, gc.Equals, "Uniter")
78
c.Assert(version, gc.Equals, 4)
79
c.Assert(id, gc.Equals, "")
80
c.Assert(request, gc.Equals, "AddUnitStorage")
81
c.Assert(arg, gc.DeepEquals, expected)
84
c.Assert(result, gc.FitsTypeOf, ¶ms.ErrorResults{})
85
return errors.New(msg)
88
u := s.createTestUnit(c, "mysql/0", apiCaller)
89
err := u.AddStorage(args)
90
c.Assert(err, gc.ErrorMatches, msg)
91
c.Assert(called, jc.IsTrue)