github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/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 "github.com/juju/juju/constraints" 14 jujutesting "github.com/juju/juju/juju/testing" 15 "github.com/juju/juju/storage" 16 ) 17 18 type serviceSuite struct { 19 jujutesting.JujuConnSuite 20 21 client *service.Client 22 } 23 24 var _ = gc.Suite(&serviceSuite{}) 25 26 func (s *serviceSuite) SetUpTest(c *gc.C) { 27 s.JujuConnSuite.SetUpTest(c) 28 s.client = service.NewClient(s.APIState) 29 c.Assert(s.client, gc.NotNil) 30 } 31 32 func (s *serviceSuite) TestSetServiceMetricCredentials(c *gc.C) { 33 var called bool 34 service.PatchFacadeCall(s, s.client, func(request string, a, response interface{}) error { 35 called = true 36 c.Assert(request, gc.Equals, "SetMetricCredentials") 37 args, ok := a.(params.ServiceMetricCredentials) 38 c.Assert(ok, jc.IsTrue) 39 c.Assert(args.Creds, gc.HasLen, 1) 40 c.Assert(args.Creds[0].ServiceName, gc.Equals, "serviceA") 41 c.Assert(args.Creds[0].MetricCredentials, gc.DeepEquals, []byte("creds 1")) 42 43 result := response.(*params.ErrorResults) 44 result.Results = make([]params.ErrorResult, 1) 45 return nil 46 }) 47 err := s.client.SetMetricCredentials("serviceA", []byte("creds 1")) 48 c.Assert(err, jc.ErrorIsNil) 49 c.Assert(called, jc.IsTrue) 50 } 51 52 func (s *serviceSuite) TestSetServiceMetricCredentialsFails(c *gc.C) { 53 var called bool 54 service.PatchFacadeCall(s, s.client, func(request string, args, response interface{}) error { 55 called = true 56 c.Assert(request, gc.Equals, "SetMetricCredentials") 57 result := response.(*params.ErrorResults) 58 result.Results = make([]params.ErrorResult, 1) 59 result.Results[0].Error = common.ServerError(common.ErrPerm) 60 return result.OneError() 61 }) 62 err := s.client.SetMetricCredentials("service", []byte("creds")) 63 c.Assert(err, gc.ErrorMatches, "permission denied") 64 c.Assert(called, jc.IsTrue) 65 } 66 67 func (s *serviceSuite) TestSetServiceMetricCredentialsNoMocks(c *gc.C) { 68 service := s.Factory.MakeService(c, nil) 69 err := s.client.SetMetricCredentials(service.Name(), []byte("creds")) 70 c.Assert(err, jc.ErrorIsNil) 71 err = service.Refresh() 72 c.Assert(err, jc.ErrorIsNil) 73 c.Assert(service.MetricCredentials(), gc.DeepEquals, []byte("creds")) 74 } 75 76 func (s *serviceSuite) TestSetServiceDeploy(c *gc.C) { 77 var called bool 78 service.PatchFacadeCall(s, s.client, func(request string, a, response interface{}) error { 79 called = true 80 c.Assert(request, gc.Equals, "ServicesDeploy") 81 args, ok := a.(params.ServicesDeploy) 82 c.Assert(ok, jc.IsTrue) 83 c.Assert(args.Services, gc.HasLen, 1) 84 c.Assert(args.Services[0].CharmUrl, gc.Equals, "charmURL") 85 c.Assert(args.Services[0].ServiceName, gc.Equals, "serviceA") 86 c.Assert(args.Services[0].NumUnits, gc.Equals, 2) 87 c.Assert(args.Services[0].ConfigYAML, gc.Equals, "configYAML") 88 c.Assert(args.Services[0].Constraints, gc.DeepEquals, constraints.MustParse("mem=4G")) 89 c.Assert(args.Services[0].ToMachineSpec, gc.Equals, "machineSpec") 90 c.Assert(args.Services[0].Networks, gc.DeepEquals, []string{"neta"}) 91 c.Assert(args.Services[0].Storage, gc.DeepEquals, map[string]storage.Constraints{"data": storage.Constraints{Pool: "pool"}}) 92 93 result := response.(*params.ErrorResults) 94 result.Results = make([]params.ErrorResult, 1) 95 return nil 96 }) 97 err := s.client.ServiceDeploy("charmURL", "serviceA", 2, "configYAML", constraints.MustParse("mem=4G"), 98 "machineSpec", nil, []string{"neta"}, map[string]storage.Constraints{"data": storage.Constraints{Pool: "pool"}}) 99 c.Assert(err, jc.ErrorIsNil) 100 c.Assert(called, jc.IsTrue) 101 }