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  }