github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/apiserver/service/service_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/apiserver/params" 11 "github.com/juju/juju/apiserver/service" 12 apiservertesting "github.com/juju/juju/apiserver/testing" 13 jujutesting "github.com/juju/juju/juju/testing" 14 "github.com/juju/juju/state" 15 "github.com/juju/juju/testing/factory" 16 ) 17 18 type serviceSuite struct { 19 jujutesting.JujuConnSuite 20 21 serviceApi *service.API 22 service *state.Service 23 authorizer apiservertesting.FakeAuthorizer 24 } 25 26 var _ = gc.Suite(&serviceSuite{}) 27 28 var _ service.Service = (*service.API)(nil) 29 30 func (s *serviceSuite) SetUpTest(c *gc.C) { 31 s.JujuConnSuite.SetUpTest(c) 32 s.service = s.Factory.MakeService(c, nil) 33 34 s.authorizer = apiservertesting.FakeAuthorizer{ 35 Tag: s.AdminUserTag(c), 36 } 37 var err error 38 s.serviceApi, err = service.NewAPI(s.State, nil, s.authorizer) 39 c.Assert(err, jc.ErrorIsNil) 40 } 41 42 func (s *serviceSuite) TestSetMetricCredentials(c *gc.C) { 43 charm := s.Factory.MakeCharm(c, &factory.CharmParams{Name: "wordpress"}) 44 wordpress := s.Factory.MakeService(c, &factory.ServiceParams{ 45 Charm: charm, 46 }) 47 tests := []struct { 48 about string 49 args params.ServiceMetricCredentials 50 results params.ErrorResults 51 }{ 52 { 53 "test one argument and it passes", 54 params.ServiceMetricCredentials{[]params.ServiceMetricCredential{{ 55 s.service.Name(), 56 []byte("creds 1234"), 57 }}}, 58 params.ErrorResults{[]params.ErrorResult{{Error: nil}}}, 59 }, 60 { 61 "test two arguments and both pass", 62 params.ServiceMetricCredentials{[]params.ServiceMetricCredential{ 63 { 64 s.service.Name(), 65 []byte("creds 1234"), 66 }, 67 { 68 wordpress.Name(), 69 []byte("creds 4567"), 70 }, 71 }}, 72 params.ErrorResults{[]params.ErrorResult{ 73 {Error: nil}, 74 {Error: nil}, 75 }}, 76 }, 77 { 78 "test two arguments and second one fails", 79 params.ServiceMetricCredentials{[]params.ServiceMetricCredential{ 80 { 81 s.service.Name(), 82 []byte("creds 1234"), 83 }, 84 { 85 "not-a-service", 86 []byte("creds 4567"), 87 }, 88 }}, 89 params.ErrorResults{[]params.ErrorResult{ 90 {Error: nil}, 91 {Error: ¶ms.Error{`service "not-a-service" not found`, "not found"}}, 92 }}, 93 }, 94 } 95 for i, t := range tests { 96 c.Logf("Running test %d %v", i, t.about) 97 results, err := s.serviceApi.SetMetricCredentials(t.args) 98 c.Assert(err, jc.ErrorIsNil) 99 c.Assert(results.Results, gc.HasLen, len(t.results.Results)) 100 c.Assert(results, gc.DeepEquals, t.results) 101 102 for i, a := range t.args.Creds { 103 if t.results.Results[i].Error == nil { 104 svc, err := s.State.Service(a.ServiceName) 105 c.Assert(err, jc.ErrorIsNil) 106 creds := svc.MetricCredentials() 107 c.Assert(creds, gc.DeepEquals, a.MetricCredentials) 108 } 109 } 110 } 111 }