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 }