~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/api/modelmanager/modelinfo_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

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 modelmanager_test
 
5
 
 
6
import (
 
7
        jc "github.com/juju/testing/checkers"
 
8
        gc "gopkg.in/check.v1"
 
9
        "gopkg.in/juju/names.v2"
 
10
 
 
11
        basetesting "github.com/juju/juju/api/base/testing"
 
12
        "github.com/juju/juju/api/modelmanager"
 
13
        "github.com/juju/juju/apiserver/params"
 
14
        "github.com/juju/juju/testing"
 
15
)
 
16
 
 
17
type modelInfoSuite struct {
 
18
        testing.BaseSuite
 
19
}
 
20
 
 
21
var _ = gc.Suite(&modelInfoSuite{})
 
22
 
 
23
func (s *modelInfoSuite) checkCall(c *gc.C, objType string, id, request string) {
 
24
        c.Check(objType, gc.Equals, "ModelManager")
 
25
        c.Check(id, gc.Equals, "")
 
26
        c.Check(request, gc.Equals, "ModelInfo")
 
27
}
 
28
 
 
29
func (s *modelInfoSuite) assertResponse(c *gc.C, result interface{}) *params.ModelInfoResults {
 
30
        c.Assert(result, gc.FitsTypeOf, &params.ModelInfoResults{})
 
31
        return result.(*params.ModelInfoResults)
 
32
}
 
33
 
 
34
func (s *modelInfoSuite) TestModelInfo(c *gc.C) {
 
35
        results := params.ModelInfoResults{
 
36
                Results: []params.ModelInfoResult{{
 
37
                        Result: &params.ModelInfo{Name: "name", UUID: "etc."},
 
38
                }, {
 
39
                        Error: &params.Error{Message: "woop"},
 
40
                }},
 
41
        }
 
42
        apiCaller := basetesting.APICallerFunc(
 
43
                func(objType string, version int, id, request string, a, result interface{}) error {
 
44
                        s.checkCall(c, objType, id, request)
 
45
                        resp := s.assertResponse(c, result)
 
46
                        *resp = results
 
47
                        return nil
 
48
                })
 
49
        client := modelmanager.NewClient(apiCaller)
 
50
        info, err := client.ModelInfo([]names.ModelTag{testing.ModelTag, testing.ModelTag})
 
51
        c.Assert(err, jc.ErrorIsNil)
 
52
        c.Assert(info, jc.DeepEquals, results.Results)
 
53
}
 
54
 
 
55
func (s *modelInfoSuite) TestInvalidResultCount(c *gc.C) {
 
56
        apiCaller := basetesting.APICallerFunc(
 
57
                func(objType string, version int, id, request string, a, result interface{}) error {
 
58
                        s.checkCall(c, objType, id, request)
 
59
                        c.Assert(a, jc.DeepEquals, params.Entities{
 
60
                                Entities: []params.Entity{{testing.ModelTag.String()}, {testing.ModelTag.String()}},
 
61
                        })
 
62
                        resp := s.assertResponse(c, result)
 
63
                        *resp = params.ModelInfoResults{Results: []params.ModelInfoResult{{}}}
 
64
                        return nil
 
65
                },
 
66
        )
 
67
        client := modelmanager.NewClient(apiCaller)
 
68
        _, err := client.ModelInfo([]names.ModelTag{testing.ModelTag, testing.ModelTag})
 
69
        c.Assert(err, gc.ErrorMatches, "expected 2 result\\(s\\), got 1")
 
70
}