github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/api/client/block/client_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package block_test
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	"go.uber.org/mock/gomock"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	basemocks "github.com/juju/juju/api/base/mocks"
    12  	"github.com/juju/juju/api/client/block"
    13  	apiservererrors "github.com/juju/juju/apiserver/errors"
    14  	"github.com/juju/juju/rpc/params"
    15  	"github.com/juju/juju/state"
    16  )
    17  
    18  type blockMockSuite struct{}
    19  
    20  var _ = gc.Suite(&blockMockSuite{})
    21  
    22  func (s *blockMockSuite) TestSwitchBlockOn(c *gc.C) {
    23  	ctrl := gomock.NewController(c)
    24  	defer ctrl.Finish()
    25  
    26  	blockType := state.DestroyBlock.String()
    27  	msg := "for test switch block on"
    28  
    29  	args := params.BlockSwitchParams{
    30  		Type:    blockType,
    31  		Message: msg,
    32  	}
    33  	result := new(params.ErrorResult)
    34  	results := params.ErrorResult{Error: nil}
    35  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
    36  	mockFacadeCaller.EXPECT().FacadeCall("SwitchBlockOn", args, result).SetArg(2, results).Return(nil)
    37  
    38  	blockClient := block.NewClientFromCaller(mockFacadeCaller)
    39  	err := blockClient.SwitchBlockOn(blockType, msg)
    40  	c.Assert(err, gc.IsNil)
    41  }
    42  
    43  func (s *blockMockSuite) TestSwitchBlockOnError(c *gc.C) {
    44  	ctrl := gomock.NewController(c)
    45  	defer ctrl.Finish()
    46  
    47  	errmsg := "test error"
    48  
    49  	args := params.BlockSwitchParams{
    50  		Type:    "",
    51  		Message: "",
    52  	}
    53  	result := new(params.ErrorResult)
    54  	results := params.ErrorResult{
    55  		Error: apiservererrors.ServerError(errors.New(errmsg)),
    56  	}
    57  
    58  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
    59  	mockFacadeCaller.EXPECT().FacadeCall("SwitchBlockOn", args, result).SetArg(2, results).Return(nil)
    60  
    61  	blockClient := block.NewClientFromCaller(mockFacadeCaller)
    62  	err := blockClient.SwitchBlockOn("", "")
    63  	c.Assert(errors.Cause(err), gc.ErrorMatches, errmsg)
    64  }
    65  
    66  func (s *blockMockSuite) TestSwitchBlockOff(c *gc.C) {
    67  	ctrl := gomock.NewController(c)
    68  	defer ctrl.Finish()
    69  
    70  	blockType := state.DestroyBlock.String()
    71  
    72  	args := params.BlockSwitchParams{
    73  		Type:    blockType,
    74  		Message: "",
    75  	}
    76  	result := new(params.ErrorResult)
    77  	results := params.ErrorResult{Error: nil}
    78  
    79  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
    80  	mockFacadeCaller.EXPECT().FacadeCall("SwitchBlockOff", args, result).SetArg(2, results).Return(nil)
    81  
    82  	blockClient := block.NewClientFromCaller(mockFacadeCaller)
    83  	err := blockClient.SwitchBlockOff(blockType)
    84  	c.Assert(err, gc.IsNil)
    85  }
    86  
    87  func (s *blockMockSuite) TestSwitchBlockOffError(c *gc.C) {
    88  	ctrl := gomock.NewController(c)
    89  	defer ctrl.Finish()
    90  
    91  	errmsg := "test error"
    92  
    93  	args := params.BlockSwitchParams{
    94  		Type: "",
    95  	}
    96  	result := new(params.ErrorResult)
    97  	results := params.ErrorResult{
    98  		Error: apiservererrors.ServerError(errors.New(errmsg)),
    99  	}
   100  
   101  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
   102  	mockFacadeCaller.EXPECT().FacadeCall("SwitchBlockOff", args, result).SetArg(2, results).Return(nil)
   103  
   104  	blockClient := block.NewClientFromCaller(mockFacadeCaller)
   105  	err := blockClient.SwitchBlockOff("")
   106  	c.Assert(errors.Cause(err), gc.ErrorMatches, errmsg)
   107  }
   108  
   109  func (s *blockMockSuite) TestList(c *gc.C) {
   110  	ctrl := gomock.NewController(c)
   111  	defer ctrl.Finish()
   112  
   113  	one := params.BlockResult{
   114  		Result: params.Block{
   115  			Id:      "-42",
   116  			Type:    state.DestroyBlock.String(),
   117  			Message: "for test switch on",
   118  			Tag:     "some valid tag, right?",
   119  		},
   120  	}
   121  	errmsg := "another test error"
   122  	two := params.BlockResult{
   123  		Error: apiservererrors.ServerError(errors.New(errmsg)),
   124  	}
   125  
   126  	result := new(params.BlockResults)
   127  	results := params.BlockResults{
   128  		Results: []params.BlockResult{one, two},
   129  	}
   130  	mockFacadeCaller := basemocks.NewMockFacadeCaller(ctrl)
   131  	mockFacadeCaller.EXPECT().FacadeCall("List", nil, result).SetArg(2, results).Return(nil)
   132  	blockClient := block.NewClientFromCaller(mockFacadeCaller)
   133  	found, err := blockClient.List()
   134  	c.Assert(errors.Cause(err), gc.ErrorMatches, errmsg)
   135  	c.Assert(found, gc.HasLen, 1)
   136  }