github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/common/credentialcommon/cloudcredential_test.go (about)

     1  // Copyright 2018 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package credentialcommon_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  
    12  	"github.com/juju/juju/apiserver/common"
    13  	"github.com/juju/juju/apiserver/common/credentialcommon"
    14  	"github.com/juju/juju/apiserver/params"
    15  )
    16  
    17  type CredentialSuite struct {
    18  	testing.IsolationSuite
    19  
    20  	backend *testBackend
    21  	api     *credentialcommon.CredentialManagerAPI
    22  }
    23  
    24  var _ = gc.Suite(&CredentialSuite{})
    25  
    26  func (s *CredentialSuite) SetUpTest(c *gc.C) {
    27  	s.IsolationSuite.SetUpTest(c)
    28  
    29  	s.backend = newMockBackend()
    30  	s.api = credentialcommon.NewCredentialManagerAPI(s.backend)
    31  }
    32  
    33  func (s *CredentialSuite) TestInvalidateModelCredential(c *gc.C) {
    34  	result, err := s.api.InvalidateModelCredential(params.InvalidateCredentialArg{"not again"})
    35  	c.Assert(err, jc.ErrorIsNil)
    36  	c.Assert(result, gc.DeepEquals, params.ErrorResult{})
    37  	s.backend.CheckCalls(c, []testing.StubCall{
    38  		{"InvalidateModelCredential", []interface{}{"not again"}},
    39  	})
    40  }
    41  
    42  func (s *CredentialSuite) TestInvalidateModelCredentialError(c *gc.C) {
    43  	expected := errors.New("boom")
    44  	s.backend.SetErrors(expected)
    45  	result, err := s.api.InvalidateModelCredential(params.InvalidateCredentialArg{"not again"})
    46  	c.Assert(err, jc.ErrorIsNil)
    47  	c.Assert(result, gc.DeepEquals, params.ErrorResult{Error: common.ServerError(expected)})
    48  	s.backend.CheckCalls(c, []testing.StubCall{
    49  		{"InvalidateModelCredential", []interface{}{"not again"}},
    50  	})
    51  }
    52  
    53  func newMockBackend() *testBackend {
    54  	return &testBackend{Stub: &testing.Stub{}}
    55  }
    56  
    57  type testBackend struct {
    58  	*testing.Stub
    59  }
    60  
    61  func (b *testBackend) InvalidateModelCredential(reason string) error {
    62  	b.AddCall("InvalidateModelCredential", reason)
    63  	return b.NextErr()
    64  }