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  }