github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/api/service/client_test.go (about)

     1  // Copyright 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package service_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/api/service"
    11  	"github.com/juju/juju/apiserver/common"
    12  	"github.com/juju/juju/apiserver/params"
    13  	jujutesting "github.com/juju/juju/juju/testing"
    14  )
    15  
    16  type serviceSuite struct {
    17  	jujutesting.JujuConnSuite
    18  
    19  	client *service.Client
    20  }
    21  
    22  var _ = gc.Suite(&serviceSuite{})
    23  
    24  func (s *serviceSuite) SetUpTest(c *gc.C) {
    25  	s.JujuConnSuite.SetUpTest(c)
    26  	s.client = service.NewClient(s.APIState)
    27  	c.Assert(s.client, gc.NotNil)
    28  }
    29  
    30  func (s *serviceSuite) TestSetServiceMetricCredentials(c *gc.C) {
    31  	var called bool
    32  	service.PatchFacadeCall(s, s.client, func(request string, a, response interface{}) error {
    33  		called = true
    34  		c.Assert(request, gc.Equals, "SetMetricCredentials")
    35  		args, ok := a.(params.ServiceMetricCredentials)
    36  		c.Assert(ok, jc.IsTrue)
    37  		c.Assert(args.Creds, gc.HasLen, 1)
    38  		c.Assert(args.Creds[0].ServiceName, gc.Equals, "serviceA")
    39  		c.Assert(args.Creds[0].MetricCredentials, gc.DeepEquals, []byte("creds 1"))
    40  
    41  		result := response.(*params.ErrorResults)
    42  		result.Results = make([]params.ErrorResult, 1)
    43  		return nil
    44  	})
    45  	err := s.client.SetMetricCredentials("serviceA", []byte("creds 1"))
    46  	c.Assert(err, jc.ErrorIsNil)
    47  	c.Assert(called, jc.IsTrue)
    48  }
    49  
    50  func (s *serviceSuite) TestSetServiceMetricCredentialsFails(c *gc.C) {
    51  	var called bool
    52  	service.PatchFacadeCall(s, s.client, func(request string, args, response interface{}) error {
    53  		called = true
    54  		c.Assert(request, gc.Equals, "SetMetricCredentials")
    55  		result := response.(*params.ErrorResults)
    56  		result.Results = make([]params.ErrorResult, 1)
    57  		result.Results[0].Error = common.ServerError(common.ErrPerm)
    58  		return result.OneError()
    59  	})
    60  	err := s.client.SetMetricCredentials("service", []byte("creds"))
    61  	c.Assert(err, gc.ErrorMatches, "permission denied")
    62  	c.Assert(called, jc.IsTrue)
    63  }
    64  
    65  func (s *serviceSuite) TestSetServiceMetricCredentialsNoMocks(c *gc.C) {
    66  	service := s.Factory.MakeService(c, nil)
    67  	err := s.client.SetMetricCredentials(service.Name(), []byte("creds"))
    68  	c.Assert(err, jc.ErrorIsNil)
    69  	err = service.Refresh()
    70  	c.Assert(err, jc.ErrorIsNil)
    71  	c.Assert(service.MetricCredentials(), gc.DeepEquals, []byte("creds"))
    72  }