github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/payload/api/private/helpers_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package private_test
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	"github.com/juju/names"
     9  	"github.com/juju/testing"
    10  	jc "github.com/juju/testing/checkers"
    11  	gc "gopkg.in/check.v1"
    12  	"gopkg.in/juju/charm.v6-unstable"
    13  
    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"
    19  )
    20  
    21  type internalHelpersSuite struct {
    22  	testing.IsolationSuite
    23  }
    24  
    25  var _ = gc.Suite(&internalHelpersSuite{})
    26  
    27  func (internalHelpersSuite) TestNewPayloadResultOkay(c *gc.C) {
    28  	id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
    29  	result := private.NewPayloadResult(id, nil)
    30  
    31  	c.Check(result, jc.DeepEquals, private.PayloadResult{
    32  		Entity: params.Entity{
    33  			Tag: names.NewPayloadTag(id).String(),
    34  		},
    35  		Payload:  nil,
    36  		NotFound: false,
    37  		Error:    nil,
    38  	})
    39  }
    40  
    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)
    45  
    46  	c.Check(result, jc.DeepEquals, private.PayloadResult{
    47  		Entity: params.Entity{
    48  			Tag: names.NewPayloadTag(id).String(),
    49  		},
    50  		Payload:  nil,
    51  		NotFound: false,
    52  		Error:    common.ServerError(err),
    53  	})
    54  }
    55  
    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)
    60  
    61  	c.Check(result, jc.DeepEquals, private.PayloadResult{
    62  		Entity: params.Entity{
    63  			Tag: names.NewPayloadTag(id).String(),
    64  		},
    65  		Payload:  nil,
    66  		NotFound: true,
    67  		Error:    common.ServerError(err),
    68  	})
    69  }
    70  
    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(),
    76  		},
    77  		Payload:  nil,
    78  		NotFound: false,
    79  		Error:    nil,
    80  	})
    81  	c.Assert(err, jc.ErrorIsNil)
    82  
    83  	c.Check(result, jc.DeepEquals, payload.Result{
    84  		ID:       id,
    85  		Payload:  nil,
    86  		NotFound: false,
    87  		Error:    nil,
    88  	})
    89  }
    90  
    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(),
    96  		},
    97  		NotFound: false,
    98  		Error:    nil,
    99  		Payload: &api.Payload{
   100  			Class:   "foobar",
   101  			Type:    "type",
   102  			ID:      "idfoo",
   103  			Status:  payload.StateRunning,
   104  			Unit:    "unit-a-service-0",
   105  			Machine: "machine-1",
   106  		},
   107  	})
   108  	c.Assert(err, jc.ErrorIsNil)
   109  
   110  	c.Check(result, jc.DeepEquals, payload.Result{
   111  		ID:       id,
   112  		NotFound: false,
   113  		Error:    nil,
   114  		Payload: &payload.FullPayloadInfo{
   115  			Payload: payload.Payload{
   116  				PayloadClass: charm.PayloadClass{
   117  					Name: "foobar",
   118  					Type: "type",
   119  				},
   120  				ID:     "idfoo",
   121  				Status: payload.StateRunning,
   122  				Unit:   "a-service/0",
   123  			},
   124  			Machine: "1",
   125  		},
   126  	})
   127  }
   128  
   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(),
   135  		},
   136  		Payload:  nil,
   137  		NotFound: false,
   138  		Error:    common.ServerError(failure),
   139  	})
   140  	c.Assert(err, jc.ErrorIsNil)
   141  
   142  	c.Check(result.Error.Error(), gc.Equals, failure.Error())
   143  	c.Check(result, jc.DeepEquals, payload.Result{
   144  		ID:       id,
   145  		Payload:  nil,
   146  		NotFound: false,
   147  		Error:    result.Error, // The actual error is checked above.
   148  	})
   149  }
   150  
   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(),
   157  		},
   158  		Payload:  nil,
   159  		NotFound: false,
   160  		Error:    common.ServerError(notFound),
   161  	})
   162  	c.Assert(err, jc.ErrorIsNil)
   163  
   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{
   167  		ID:       id,
   168  		Payload:  nil,
   169  		NotFound: false,
   170  		Error:    result.Error, // The actual error is checked above.
   171  	})
   172  }
   173  
   174  func (internalHelpersSuite) TestResult2apiOkay(c *gc.C) {
   175  	id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
   176  	result := private.Result2api(payload.Result{
   177  		ID:       id,
   178  		Payload:  nil,
   179  		NotFound: false,
   180  		Error:    nil,
   181  	})
   182  
   183  	c.Check(result, jc.DeepEquals, private.PayloadResult{
   184  		Entity: params.Entity{
   185  			Tag: names.NewPayloadTag(id).String(),
   186  		},
   187  		Payload:  nil,
   188  		NotFound: false,
   189  		Error:    nil,
   190  	})
   191  }
   192  
   193  func (internalHelpersSuite) TestResult2apiInfo(c *gc.C) {
   194  	id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
   195  	result := private.Result2api(payload.Result{
   196  		ID:       id,
   197  		NotFound: false,
   198  		Error:    nil,
   199  		Payload: &payload.FullPayloadInfo{
   200  			Payload: payload.Payload{
   201  				PayloadClass: charm.PayloadClass{
   202  					Name: "foobar",
   203  					Type: "type",
   204  				},
   205  				ID:     "idfoo",
   206  				Status: payload.StateRunning,
   207  				Unit:   "a-service/0",
   208  			},
   209  			Machine: "1",
   210  		},
   211  	})
   212  
   213  	c.Check(result, jc.DeepEquals, private.PayloadResult{
   214  		Entity: params.Entity{
   215  			Tag: names.NewPayloadTag(id).String(),
   216  		},
   217  		NotFound: false,
   218  		Error:    nil,
   219  		Payload: &api.Payload{
   220  			Class:   "foobar",
   221  			Type:    "type",
   222  			ID:      "idfoo",
   223  			Status:  payload.StateRunning,
   224  			Unit:    "unit-a-service-0",
   225  			Machine: "machine-1",
   226  		},
   227  	})
   228  }
   229  
   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{
   234  		ID:       id,
   235  		Payload:  nil,
   236  		NotFound: false,
   237  		Error:    err,
   238  	})
   239  
   240  	c.Check(result, jc.DeepEquals, private.PayloadResult{
   241  		Entity: params.Entity{
   242  			Tag: names.NewPayloadTag(id).String(),
   243  		},
   244  		Payload:  nil,
   245  		NotFound: false,
   246  		Error:    common.ServerError(err),
   247  	})
   248  }
   249  
   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{
   254  		ID:       id,
   255  		Payload:  nil,
   256  		NotFound: false,
   257  		Error:    err,
   258  	})
   259  
   260  	c.Check(result, jc.DeepEquals, private.PayloadResult{
   261  		Entity: params.Entity{
   262  			Tag: names.NewPayloadTag(id).String(),
   263  		},
   264  		Payload:  nil,
   265  		NotFound: false,
   266  		Error:    common.ServerError(err),
   267  	})
   268  }