1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/errors"
8
"github.com/juju/testing"
9
jc "github.com/juju/testing/checkers"
10
gc "gopkg.in/check.v1"
11
"gopkg.in/juju/charm.v6-unstable"
12
"gopkg.in/juju/names.v2"
14
"github.com/juju/juju/apiserver/common"
15
"github.com/juju/juju/apiserver/params"
16
"github.com/juju/juju/payload"
17
"github.com/juju/juju/payload/api"
18
"github.com/juju/juju/payload/api/private"
21
type internalHelpersSuite struct {
22
testing.IsolationSuite
25
var _ = gc.Suite(&internalHelpersSuite{})
27
func (internalHelpersSuite) TestNewPayloadResultOkay(c *gc.C) {
28
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
29
result := private.NewPayloadResult(id, nil)
31
c.Check(result, jc.DeepEquals, private.PayloadResult{
32
Entity: params.Entity{
33
Tag: names.NewPayloadTag(id).String(),
41
func (internalHelpersSuite) TestNewPayloadResultError(c *gc.C) {
42
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
43
err := errors.New("<failure>")
44
result := private.NewPayloadResult(id, err)
46
c.Check(result, jc.DeepEquals, private.PayloadResult{
47
Entity: params.Entity{
48
Tag: names.NewPayloadTag(id).String(),
52
Error: common.ServerError(err),
56
func (internalHelpersSuite) TestNewPayloadResultNotFound(c *gc.C) {
57
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
58
err := errors.NotFoundf("payload %q", id)
59
result := private.NewPayloadResult(id, err)
61
c.Check(result, jc.DeepEquals, private.PayloadResult{
62
Entity: params.Entity{
63
Tag: names.NewPayloadTag(id).String(),
67
Error: common.ServerError(err),
71
func (internalHelpersSuite) TestAPI2ResultOkay(c *gc.C) {
72
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
73
result, err := private.API2Result(private.PayloadResult{
74
Entity: params.Entity{
75
Tag: names.NewPayloadTag(id).String(),
81
c.Assert(err, jc.ErrorIsNil)
83
c.Check(result, jc.DeepEquals, payload.Result{
91
func (internalHelpersSuite) TestAPI2ResultInfo(c *gc.C) {
92
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
93
result, err := private.API2Result(private.PayloadResult{
94
Entity: params.Entity{
95
Tag: names.NewPayloadTag(id).String(),
99
Payload: &api.Payload{
103
Status: payload.StateRunning,
104
Unit: "unit-a-application-0",
105
Machine: "machine-1",
108
c.Assert(err, jc.ErrorIsNil)
110
c.Check(result, jc.DeepEquals, payload.Result{
114
Payload: &payload.FullPayloadInfo{
115
Payload: payload.Payload{
116
PayloadClass: charm.PayloadClass{
121
Status: payload.StateRunning,
122
Unit: "a-application/0",
129
func (internalHelpersSuite) TestAPI2ResultError(c *gc.C) {
130
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
131
failure := errors.New("<failure>")
132
result, err := private.API2Result(private.PayloadResult{
133
Entity: params.Entity{
134
Tag: names.NewPayloadTag(id).String(),
138
Error: common.ServerError(failure),
140
c.Assert(err, jc.ErrorIsNil)
142
c.Check(result.Error.Error(), gc.Equals, failure.Error())
143
c.Check(result, jc.DeepEquals, payload.Result{
147
Error: result.Error, // The actual error is checked above.
151
func (internalHelpersSuite) TestAPI2ResultNotFound(c *gc.C) {
152
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
153
notFound := errors.NotFoundf("payload %q", id)
154
result, err := private.API2Result(private.PayloadResult{
155
Entity: params.Entity{
156
Tag: names.NewPayloadTag(id).String(),
160
Error: common.ServerError(notFound),
162
c.Assert(err, jc.ErrorIsNil)
164
c.Check(result.Error.Error(), gc.Equals, notFound.Error())
165
c.Check(result.Error, jc.Satisfies, errors.IsNotFound)
166
c.Check(result, jc.DeepEquals, payload.Result{
170
Error: result.Error, // The actual error is checked above.
174
func (internalHelpersSuite) TestResult2apiOkay(c *gc.C) {
175
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
176
result := private.Result2api(payload.Result{
183
c.Check(result, jc.DeepEquals, private.PayloadResult{
184
Entity: params.Entity{
185
Tag: names.NewPayloadTag(id).String(),
193
func (internalHelpersSuite) TestResult2apiInfo(c *gc.C) {
194
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
195
result := private.Result2api(payload.Result{
199
Payload: &payload.FullPayloadInfo{
200
Payload: payload.Payload{
201
PayloadClass: charm.PayloadClass{
206
Status: payload.StateRunning,
207
Unit: "a-application/0",
213
c.Check(result, jc.DeepEquals, private.PayloadResult{
214
Entity: params.Entity{
215
Tag: names.NewPayloadTag(id).String(),
219
Payload: &api.Payload{
223
Status: payload.StateRunning,
224
Unit: "unit-a-application-0",
225
Machine: "machine-1",
230
func (internalHelpersSuite) TestResult2apiError(c *gc.C) {
231
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
232
err := errors.New("<failure>")
233
result := private.Result2api(payload.Result{
240
c.Check(result, jc.DeepEquals, private.PayloadResult{
241
Entity: params.Entity{
242
Tag: names.NewPayloadTag(id).String(),
246
Error: common.ServerError(err),
250
func (internalHelpersSuite) TestResult2apiNotFound(c *gc.C) {
251
id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
252
err := errors.NotFoundf("payload %q", id)
253
result := private.Result2api(payload.Result{
260
c.Check(result, jc.DeepEquals, private.PayloadResult{
261
Entity: params.Entity{
262
Tag: names.NewPayloadTag(id).String(),
266
Error: common.ServerError(err),