github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/apiserver/resumer/resumer_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package resumer_test 5 6 import ( 7 "errors" 8 9 "github.com/juju/testing" 10 jc "github.com/juju/testing/checkers" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/apiserver/resumer" 14 apiservertesting "github.com/juju/juju/apiserver/testing" 15 coretesting "github.com/juju/juju/testing" 16 ) 17 18 type ResumerSuite struct { 19 coretesting.BaseSuite 20 21 st *mockState 22 api *resumer.ResumerAPI 23 authoriser apiservertesting.FakeAuthorizer 24 } 25 26 var _ = gc.Suite(&ResumerSuite{}) 27 28 func (s *ResumerSuite) SetUpTest(c *gc.C) { 29 s.BaseSuite.SetUpTest(c) 30 31 s.authoriser = apiservertesting.FakeAuthorizer{ 32 EnvironManager: true, 33 } 34 s.st = &mockState{&testing.Stub{}} 35 resumer.PatchState(s, s.st) 36 var err error 37 s.api, err = resumer.NewResumerAPI(nil, nil, s.authoriser) 38 c.Assert(err, jc.ErrorIsNil) 39 } 40 41 func (s *ResumerSuite) TestNewResumerAPIRequiresEnvironManager(c *gc.C) { 42 anAuthoriser := s.authoriser 43 anAuthoriser.EnvironManager = false 44 api, err := resumer.NewResumerAPI(nil, nil, anAuthoriser) 45 c.Assert(api, gc.IsNil) 46 c.Assert(err, gc.ErrorMatches, "permission denied") 47 } 48 49 func (s *ResumerSuite) TestResumeTransactionsFailure(c *gc.C) { 50 s.st.SetErrors(errors.New("boom!")) 51 52 err := s.api.ResumeTransactions() 53 c.Assert(err, gc.ErrorMatches, "boom!") 54 s.st.CheckCalls(c, []testing.StubCall{{ 55 FuncName: "ResumeTransactions", 56 Args: nil, 57 }}) 58 } 59 60 func (s *ResumerSuite) TestResumeTransactionsSuccess(c *gc.C) { 61 err := s.api.ResumeTransactions() 62 c.Assert(err, jc.ErrorIsNil) 63 s.st.CheckCalls(c, []testing.StubCall{{ 64 FuncName: "ResumeTransactions", 65 Args: nil, 66 }}) 67 } 68 69 type mockState struct { 70 *testing.Stub 71 } 72 73 func (st *mockState) ResumeTransactions() error { 74 st.MethodCall(st, "ResumeTransactions") 75 return st.NextErr() 76 }