github.com/Finschia/finschia-sdk@v0.49.1/x/fswap/client/testutil/grpc.go (about) 1 package testutil 2 3 import ( 4 "fmt" 5 6 "github.com/gogo/protobuf/proto" 7 8 "github.com/Finschia/finschia-sdk/testutil" 9 "github.com/Finschia/finschia-sdk/testutil/rest" 10 sdk "github.com/Finschia/finschia-sdk/types" 11 grpctypes "github.com/Finschia/finschia-sdk/types/grpc" 12 "github.com/Finschia/finschia-sdk/types/query" 13 fswaptypes "github.com/Finschia/finschia-sdk/x/fswap/types" 14 ) 15 16 func (s *IntegrationTestSuite) TestGRPCQuerySwap() { 17 val := s.network.Validators[0] 18 baseURL := val.APIAddress 19 20 testCases := []struct { 21 name string 22 url string 23 expectedErr bool 24 expected proto.Message 25 }{ 26 { 27 "test query swap with valid query string", 28 fmt.Sprintf("%s/lbm/fswap/v1/swap?from_denom=stake&to_denom=dummy", baseURL), 29 false, 30 &fswaptypes.QuerySwapResponse{ 31 Swap: s.dummySwap, 32 }, 33 }, 34 { 35 "test query swap with not existed swap pairs", 36 fmt.Sprintf("%s/lbm/fswap/v1/swap?from_denom=fake&to_denom=dummy", baseURL), 37 true, 38 &fswaptypes.QuerySwapResponse{}, 39 }, 40 { 41 "test query swap with nil to_denom", 42 fmt.Sprintf("%s/lbm/fswap/v1/swap?from_denom=stake", baseURL), 43 true, 44 &fswaptypes.QuerySwapResponse{}, 45 }, 46 { 47 "test query swap with nil from_denom", 48 fmt.Sprintf("%s/lbm/fswap/v1/swap?to_denom=dummy", baseURL), 49 true, 50 &fswaptypes.QuerySwapResponse{}, 51 }, 52 } 53 54 for _, tc := range testCases { 55 s.Run(tc.name, func() { 56 resp, err := rest.GetRequest(tc.url) 57 s.Require().NoError(err) 58 var valRes fswaptypes.QuerySwapResponse 59 err = val.ClientCtx.Codec.UnmarshalJSON(resp, &valRes) 60 61 if tc.expectedErr { 62 s.Require().Error(err) 63 } else { 64 s.Require().NoError(err) 65 s.Require().Equal(tc.expected.String(), valRes.String()) 66 } 67 }) 68 } 69 } 70 71 func (s *IntegrationTestSuite) TestGRPCQuerySwaps() { 72 val := s.network.Validators[0] 73 baseURL := val.APIAddress 74 75 testCases := []struct { 76 name string 77 url string 78 expectedErr bool 79 expected proto.Message 80 }{ 81 { 82 "test query swaps", 83 fmt.Sprintf("%s/lbm/fswap/v1/swaps", baseURL), 84 false, 85 &fswaptypes.QuerySwapsResponse{ 86 Swaps: []fswaptypes.Swap{s.dummySwap}, 87 Pagination: &query.PageResponse{Total: 1}, 88 }, 89 }, 90 } 91 92 for _, tc := range testCases { 93 s.Run(tc.name, func() { 94 resp, err := rest.GetRequest(tc.url) 95 s.Require().NoError(err) 96 var valRes fswaptypes.QuerySwapsResponse 97 err = val.ClientCtx.Codec.UnmarshalJSON(resp, &valRes) 98 99 if tc.expectedErr { 100 s.Require().Error(err) 101 } else { 102 s.Require().NoError(err) 103 s.Require().Equal(tc.expected.String(), valRes.String()) 104 } 105 }) 106 } 107 } 108 109 func (s *IntegrationTestSuite) TestGRPCQuerySwapped() { 110 val := s.network.Validators[0] 111 baseURL := val.APIAddress 112 113 testCases := []struct { 114 name string 115 url string 116 expectedErr bool 117 expected proto.Message 118 }{ 119 { 120 "test query swapped with valid query string", 121 fmt.Sprintf("%s/lbm/fswap/v1/swapped?from_denom=stake&to_denom=dummy", baseURL), 122 false, 123 &fswaptypes.QuerySwappedResponse{ 124 FromCoinAmount: sdk.NewCoin("stake", sdk.ZeroInt()), 125 ToCoinAmount: sdk.NewCoin("dummy", sdk.ZeroInt()), 126 }, 127 }, 128 { 129 "test query swapped with not existed swap pairs", 130 fmt.Sprintf("%s/lbm/fswap/v1/swapped?from_denom=fake&to_denom=dummy", baseURL), 131 true, 132 &fswaptypes.QuerySwappedResponse{}, 133 }, 134 { 135 "test query swapped with nil to_denom", 136 fmt.Sprintf("%s/lbm/fswap/v1/swapped?from_denom=stake", baseURL), 137 true, 138 &fswaptypes.QuerySwappedResponse{}, 139 }, 140 { 141 "test query swapped with nil from_denom", 142 fmt.Sprintf("%s/lbm/fswap/v1/swapped?to_denom=dummy", baseURL), 143 true, 144 &fswaptypes.QuerySwappedResponse{}, 145 }, 146 } 147 148 for _, tc := range testCases { 149 s.Run(tc.name, func() { 150 resp, err := testutil.GetRequestWithHeaders(tc.url, map[string]string{ 151 grpctypes.GRPCBlockHeightHeader: "1", 152 }) 153 s.Require().NoError(err) 154 var valRes fswaptypes.QuerySwappedResponse 155 err = val.ClientCtx.Codec.UnmarshalJSON(resp, &valRes) 156 157 if tc.expectedErr { 158 s.Require().Error(err) 159 } else { 160 s.Require().NoError(err) 161 s.Require().Equal(tc.expected.String(), valRes.String()) 162 } 163 }) 164 } 165 } 166 167 func (s *IntegrationTestSuite) TestGRPCQueryTotalSwappableAmount() { 168 val := s.network.Validators[0] 169 baseURL := val.APIAddress 170 171 testCases := []struct { 172 name string 173 url string 174 expectedErr bool 175 expected proto.Message 176 }{ 177 { 178 "test query total_swappable_to_coin_amount with valid query string", 179 fmt.Sprintf("%s/lbm/fswap/v1/total_swappable_to_coin_amount?from_denom=stake&to_denom=dummy", baseURL), 180 false, 181 &fswaptypes.QueryTotalSwappableToCoinAmountResponse{ 182 SwappableAmount: sdk.NewCoin("dummy", s.dummySwap.AmountCapForToDenom), 183 }, 184 }, 185 { 186 "test query total_swappable_to_coin_amount with not existed swap pairs", 187 fmt.Sprintf("%s/lbm/fswap/v1/total_swappable_to_coin_amount?from_denom=fake&to_denom=dummy", baseURL), 188 true, 189 &fswaptypes.QueryTotalSwappableToCoinAmountResponse{}, 190 }, 191 { 192 "test query total_swappable_to_coin_amount with nil to_denom", 193 fmt.Sprintf("%s/lbm/fswap/v1/total_swappable_to_coin_amount?from_denom=stake", baseURL), 194 true, 195 &fswaptypes.QueryTotalSwappableToCoinAmountResponse{}, 196 }, 197 { 198 "test query total_swappable_to_coin_amount with nil from_denom", 199 fmt.Sprintf("%s/lbm/fswap/v1/total_swappable_to_coin_amount?to_denom=dummy", baseURL), 200 true, 201 &fswaptypes.QueryTotalSwappableToCoinAmountResponse{}, 202 }, 203 } 204 205 for _, tc := range testCases { 206 s.Run(tc.name, func() { 207 resp, err := testutil.GetRequestWithHeaders(tc.url, map[string]string{ 208 grpctypes.GRPCBlockHeightHeader: "1", 209 }) 210 s.Require().NoError(err) 211 var valRes fswaptypes.QueryTotalSwappableToCoinAmountResponse 212 err = val.ClientCtx.Codec.UnmarshalJSON(resp, &valRes) 213 214 if tc.expectedErr { 215 s.Require().Error(err) 216 } else { 217 s.Require().NoError(err) 218 s.Require().Equal(tc.expected.String(), valRes.String()) 219 } 220 }) 221 } 222 }