github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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/testing"
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  	"gopkg.in/juju/charm.v6"
    12  	"gopkg.in/juju/names.v2"
    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/private"
    18  )
    19  
    20  type internalHelpersSuite struct {
    21  	testing.IsolationSuite
    22  }
    23  
    24  var _ = gc.Suite(&internalHelpersSuite{})
    25  
    26  func (internalHelpersSuite) TestAPI2ResultOkay(c *gc.C) {
    27  	id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
    28  	result, err := private.API2Result(params.PayloadResult{
    29  		Entity: params.Entity{
    30  			Tag: names.NewPayloadTag(id).String(),
    31  		},
    32  		Payload:  nil,
    33  		NotFound: false,
    34  		Error:    nil,
    35  	})
    36  	c.Assert(err, jc.ErrorIsNil)
    37  
    38  	c.Check(result, jc.DeepEquals, payload.Result{
    39  		ID:       id,
    40  		Payload:  nil,
    41  		NotFound: false,
    42  		Error:    nil,
    43  	})
    44  }
    45  
    46  func (internalHelpersSuite) TestAPI2ResultInfo(c *gc.C) {
    47  	id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
    48  	result, err := private.API2Result(params.PayloadResult{
    49  		Entity: params.Entity{
    50  			Tag: names.NewPayloadTag(id).String(),
    51  		},
    52  		NotFound: false,
    53  		Error:    nil,
    54  		Payload: &params.Payload{
    55  			Class:   "foobar",
    56  			Type:    "type",
    57  			ID:      "idfoo",
    58  			Status:  payload.StateRunning,
    59  			Unit:    "unit-a-application-0",
    60  			Machine: "machine-1",
    61  		},
    62  	})
    63  	c.Assert(err, jc.ErrorIsNil)
    64  
    65  	c.Check(result, jc.DeepEquals, payload.Result{
    66  		ID:       id,
    67  		NotFound: false,
    68  		Error:    nil,
    69  		Payload: &payload.FullPayloadInfo{
    70  			Payload: payload.Payload{
    71  				PayloadClass: charm.PayloadClass{
    72  					Name: "foobar",
    73  					Type: "type",
    74  				},
    75  				ID:     "idfoo",
    76  				Status: payload.StateRunning,
    77  				Unit:   "a-application/0",
    78  			},
    79  			Machine: "1",
    80  		},
    81  	})
    82  }
    83  
    84  func (internalHelpersSuite) TestAPI2ResultError(c *gc.C) {
    85  	id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
    86  	failure := errors.New("<failure>")
    87  	result, err := private.API2Result(params.PayloadResult{
    88  		Entity: params.Entity{
    89  			Tag: names.NewPayloadTag(id).String(),
    90  		},
    91  		Payload:  nil,
    92  		NotFound: false,
    93  		Error:    common.ServerError(failure),
    94  	})
    95  	c.Assert(err, jc.ErrorIsNil)
    96  
    97  	c.Check(result.Error.Error(), gc.Equals, failure.Error())
    98  	c.Check(result, jc.DeepEquals, payload.Result{
    99  		ID:       id,
   100  		Payload:  nil,
   101  		NotFound: false,
   102  		Error:    result.Error, // The actual error is checked above.
   103  	})
   104  }
   105  
   106  func (internalHelpersSuite) TestAPI2ResultNotFound(c *gc.C) {
   107  	id := "ce5bc2a7-65d8-4800-8199-a7c3356ab309"
   108  	notFound := errors.NotFoundf("payload %q", id)
   109  	result, err := private.API2Result(params.PayloadResult{
   110  		Entity: params.Entity{
   111  			Tag: names.NewPayloadTag(id).String(),
   112  		},
   113  		Payload:  nil,
   114  		NotFound: false,
   115  		Error:    common.ServerError(notFound),
   116  	})
   117  	c.Assert(err, jc.ErrorIsNil)
   118  
   119  	c.Check(result.Error.Error(), gc.Equals, notFound.Error())
   120  	c.Check(result.Error, jc.Satisfies, errors.IsNotFound)
   121  	c.Check(result, jc.DeepEquals, payload.Result{
   122  		ID:       id,
   123  		Payload:  nil,
   124  		NotFound: false,
   125  		Error:    result.Error, // The actual error is checked above.
   126  	})
   127  }