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 }