github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/client/credentialmanager/client_test.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package credentialmanager_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/names.v2" 12 13 "github.com/juju/juju/apiserver/common" 14 "github.com/juju/juju/apiserver/facades/client/credentialmanager" 15 "github.com/juju/juju/apiserver/params" 16 apiservertesting "github.com/juju/juju/apiserver/testing" 17 coretesting "github.com/juju/juju/testing" 18 ) 19 20 type CredentialManagerSuite struct { 21 coretesting.BaseSuite 22 23 resources *common.Resources 24 authorizer apiservertesting.FakeAuthorizer 25 backend *testBackend 26 27 api *credentialmanager.CredentialManagerAPI 28 } 29 30 var _ = gc.Suite(&CredentialManagerSuite{}) 31 32 func (s *CredentialManagerSuite) SetUpTest(c *gc.C) { 33 s.BaseSuite.SetUpTest(c) 34 s.backend = newMockBackend() 35 36 s.resources = common.NewResources() 37 s.authorizer = apiservertesting.FakeAuthorizer{ 38 Tag: names.NewUserTag("read"), 39 AdminTag: names.NewUserTag("admin"), 40 } 41 s.AddCleanup(func(_ *gc.C) { s.resources.StopAll() }) 42 43 api, err := credentialmanager.NewCredentialManagerAPIForTest(s.backend, s.resources, s.authorizer) 44 c.Assert(err, jc.ErrorIsNil) 45 s.api = api 46 } 47 48 func (s *CredentialManagerSuite) TestInvalidateModelCredentialUnauthorized(c *gc.C) { 49 s.authorizer = apiservertesting.FakeAuthorizer{ 50 Tag: names.NewMachineTag("0"), 51 } 52 _, err := credentialmanager.NewCredentialManagerAPIForTest(s.backend, s.resources, s.authorizer) 53 c.Assert(err, gc.ErrorMatches, "permission denied") 54 } 55 56 func (s *CredentialManagerSuite) TestInvalidateModelCredential(c *gc.C) { 57 result, err := s.api.InvalidateModelCredential(params.InvalidateCredentialArg{"not again"}) 58 c.Assert(err, jc.ErrorIsNil) 59 c.Assert(result, gc.DeepEquals, params.ErrorResult{}) 60 s.backend.CheckCalls(c, []testing.StubCall{ 61 {"InvalidateModelCredential", []interface{}{"not again"}}, 62 }) 63 } 64 65 func (s *CredentialManagerSuite) TestInvalidateModelCredentialError(c *gc.C) { 66 expected := errors.New("boom") 67 s.backend.SetErrors(expected) 68 result, err := s.api.InvalidateModelCredential(params.InvalidateCredentialArg{"not again"}) 69 c.Assert(err, jc.ErrorIsNil) 70 c.Assert(result, gc.DeepEquals, params.ErrorResult{Error: common.ServerError(expected)}) 71 s.backend.CheckCalls(c, []testing.StubCall{ 72 {"InvalidateModelCredential", []interface{}{"not again"}}, 73 }) 74 } 75 76 func newMockBackend() *testBackend { 77 return &testBackend{ 78 Stub: &testing.Stub{}, 79 } 80 } 81 82 type testBackend struct { 83 *testing.Stub 84 } 85 86 func (b *testBackend) InvalidateModelCredential(reason string) error { 87 b.AddCall("InvalidateModelCredential", reason) 88 return b.NextErr() 89 }