Files
gocryptotrader/exchanges/okx/ratelimiter_test.go
Samuael A. 5c892307c7 exchanges: Okx Update (#1420)
* update acccount ratelimits and added missing endpoints

* completed mapping missing trade accoung REST endpoints and Rate Limit

* added orderbook trading missing REST endpoints

* Added few missing endpoints and unit tests

* Completed grid trading and signal bot trading with unit tests

* Added Recurring Buy endpoints and corresponding unit tests

* Added copy trading endpoints and unit tests

* added newly added block trading and spread endpoints

* completed mapping spread endpoints

* Added new endpoints and unit tests

* Added round 1: Okx types and converts update.

* Update endpoints handling and types update

* Removed constants, updated unit tests, and updated endpoint methods

* Slight endpoint and unit test update

* Added spread and other websocket endpoints and update

* completed Spread WS Orderbook handler

* Added missing spread channels and handlers

* Adding Bussinss websocket and missing subscriptions, update unit tests, and endpoints

* Added spread endpoints to wrapper and unit tests update

* Added missing websocket subscriptions and copy trading endpoints

* Added missing endpoints and re-organize business websocket handlers

* Docs update

* Endpoints code updates

* types, unit test and endpoints update

* Minor unit tests update

* spelling fix

* fix unit test issues

* Updating unit tests error handling

* Updating unit tests error handling

* Unit tests assertion handling update

* Unit tests update

* Resolve linter issues

* linter issues fix

* Orderbook unit test error fix

* Minor fixes

* Change on test handling and types

* Updating unit tests and cleanups

* Fix unit test issues

* Add ratelimit test and update unit tests and methods

* Update method parameters and error declarations

* Added lending endpoints, unit tests, and update endpoint methods and error declarations

* Update ratelimiters, add missing lending and trading endpoints and unit tests

* Update websocket authentication and subscription handling

* Minor update to unit test and types

* Types, error handling, and other minor updates

* Update unit tests and endpoint functions

* error declarations update and unit tests

* Overall update on unit endpoint, unit tests, and types

* Adding review fixes

* Update on endpoints, order types, and unit tests

* Update unit tests and endpoint functions

* Update on endpoint and update missing parameters

* Implemented and tested newly added trading endpoints

* endpoints update and unit tests

* Update missing endpoints and update overall code

* added and testing funding and fiat related endpoints

* Update on convert and fiat related endpoints

* linter fix, types, endpoints, and unit tests update

* linter issues fix

* revert changes on tempos

* Fix Panic and update websocket auth calls handling

* config linter issue fix

* Fix panic issues and update unit tests

* Fix race condition, TestAllExchangeWrappers unit test issues

* Fix withdrawal manager test issue

* Rename ClosePositionForContractrID --> ClosePositionForContractID

* Rename ClosePositionForContractrID --> ClosePositionForContractID

* Fix error

* endpoints update and fix unit test issues

* added unit tests, updated comments, and code sections

* revert change in defaultSubscriptions

* few types comments update

* Minor changes

* remove lending endpoints

* rm mistakenly added code

* fix unit test

* minor unit test fix

* Adding offline error tests, update endpoints function, config update

* Update unit test coverage for offline error handliing

* Updating wrapper algo order coverage, endpoint calls, and unit tests

* Updating wrapper trade functions to accomodate algo orders

* update wrapper unit tests

* Fix wrapper order functions offline errors handling

* Tested and updated wrapper order functions

* Address review comments

* update order unit tests, and okx endpoint functions

* finalize affected order, endpoint, and margin endpoints

* Slight change on margin unit test

* fix margin unit test issues

* Minor change on unit test

* updates on contract settlement and future contract wrapper function

* add test coverage for contract functions and minor fix on wrapper

* Overall update and unit testing

* codespell, unit tests, type declaration and naming, and code-structure updates

* margin types value and validation function fix

* Update tests and helper funcs

* Improve test coverage

* helper functions and unit tests update

* Fix margin unit test

* Minor review updates

* minor fix on if statement

* Update helper functions

* error handling and functions naming update

* update comment

* minor error return fixes

* minor unit test fix

* Minor fix on spread websocket orders handling

* codespell fix

* skip orderbook depth with incomplete price

* skip orderbook depth with incomplete price
2025-02-10 10:44:48 +11:00

284 lines
20 KiB
Go

package okx
import (
"context"
"net/http"
"testing"
"github.com/stretchr/testify/require"
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
)
func TestRateLimit_LimitStatic(t *testing.T) {
t.Parallel()
testTable := map[string]request.EndpointLimit{
"placeOrder": placeOrderEPL,
"placeMultipleOrders": placeMultipleOrdersEPL,
"cancelOrder": cancelOrderEPL,
"cancelMultipleOrders": cancelMultipleOrdersEPL,
"amendOrder": amendOrderEPL,
"amendMultipleOrders": amendMultipleOrdersEPL,
"closePosition": closePositionEPL,
"getOrderDet": getOrderDetEPL,
"getOrderList": getOrderListEPL,
"getOrderHistory7Days": getOrderHistory7DaysEPL,
"getOrderHistory3Months": getOrderHistory3MonthsEPL,
"getTransactionDetail3Days": getTransactionDetail3DaysEPL,
"getTransactionDetail3Months": getTransactionDetail3MonthsEPL,
"setTransactionDetail2YearInterval": setTransactionDetail2YearIntervalEPL,
"getTransactionDetailLast2Years": getTransactionDetailLast2YearsEPL,
"cancelAllAfterCountdown": cancelAllAfterCountdownEPL,
"placeAlgoOrder": placeAlgoOrderEPL,
"cancelAlgoOrder": cancelAlgoOrderEPL,
"amendAlgoOrder": amendAlgoOrderEPL,
"cancelAdvanceAlgoOrder": cancelAdvanceAlgoOrderEPL,
"getAlgoOrderDetail": getAlgoOrderDetailEPL,
"getAlgoOrderList": getAlgoOrderListEPL,
"getAlgoOrderHistory": getAlgoOrderHistoryEPL,
"getEasyConvertCurrencyList": getEasyConvertCurrencyListEPL,
"placeEasyConvert": placeEasyConvertEPL,
"getEasyConvertHistory": getEasyConvertHistoryEPL,
"getOneClickRepayHistory": getOneClickRepayHistoryEPL,
"oneClickRepayCurrencyList": oneClickRepayCurrencyListEPL,
"tradeOneClickRepay": tradeOneClickRepayEPL,
"massCancemMMPOrder": massCancemMMPOrderEPL,
"getCounterparties": getCounterpartiesEPL,
"createRFQ": createRFQEPL,
"cancelRFQ": cancelRFQEPL,
"cancelMultipleRFQ": cancelMultipleRFQEPL,
"cancelAllRFQs": cancelAllRFQsEPL,
"executeQuote": executeQuoteEPL,
"getQuoteProducts": getQuoteProductsEPL,
"setQuoteProducts": setQuoteProductsEPL,
"resetRFQMMP": resetRFQMMPEPL,
"setMMP": setMMPEPL,
"getMMPConfig": getMMPConfigEPL,
"createQuote": createQuoteEPL,
"cancelQuote": cancelQuoteEPL,
"cancelMultipleQuotes": cancelMultipleQuotesEPL,
"cancelAllQuotes": cancelAllQuotesEPL,
"getRFQs": getRFQsEPL,
"getQuotes": getQuotesEPL,
"getTrades": getTradesEPL,
"getTradesHistory": getTradesHistoryEPL,
"optionInstrumentTradeFamily": optionInstrumentTradeFamilyEPL,
"optionTrades": optionTradesEPL,
"getPublicTrades": getPublicTradesEPL,
"getCurrencies": getCurrenciesEPL,
"getBalance": getBalanceEPL,
"getNonTradableAssets": getNonTradableAssetsEPL,
"getAccountAssetValuation": getAccountAssetValuationEPL,
"fundsTransfer": fundsTransferEPL,
"getFundsTransferState": getFundsTransferStateEPL,
"assetBillsDetails": assetBillsDetailsEPL,
"lightningDeposits": lightningDepositsEPL,
"getDepositAddress": getDepositAddressEPL,
"getDepositHistory": getDepositHistoryEPL,
"withdrawal": withdrawalEPL,
"lightningWithdrawals": lightningWithdrawalsEPL,
"cancelWithdrawal": cancelWithdrawalEPL,
"getWithdrawalHistory": getWithdrawalHistoryEPL,
"getDepositWithdrawalStatus": getDepositWithdrawalStatusEPL,
"smallAssetsConvert": smallAssetsConvertEPL,
"getPublicExchangeList": getPublicExchangeListEPL,
"getSavingBalance": getSavingBalanceEPL,
"savingsPurchaseRedemption": savingsPurchaseRedemptionEPL,
"setLendingRate": setLendingRateEPL,
"getLendingHistory": getLendingHistoryEPL,
"getPublicBorrowInfo": getPublicBorrowInfoEPL,
"getPublicBorrowHistory": getPublicBorrowHistoryEPL,
"getConvertCurrencies": getConvertCurrenciesEPL,
"getConvertCurrencyPair": getConvertCurrencyPairEPL,
"estimateQuote": estimateQuoteEPL,
"convertTrade": convertTradeEPL,
"getConvertHistory": getConvertHistoryEPL,
"getAccountBalance": getAccountBalanceEPL,
"getPositions": getPositionsEPL,
"getPositionsHistory": getPositionsHistoryEPL,
"getAccountAndPositionRisk": getAccountAndPositionRiskEPL,
"getBillsDetails": getBillsDetailsEPL,
"getBillsDetailArchive": getBillsDetailArchiveEPL,
"getAccountConfiguration": getAccountConfigurationEPL,
"setPositionMode": setPositionModeEPL,
"setLeverage": setLeverageEPL,
"getMaximumBuyOrSellAmount": getMaximumBuyOrSellAmountEPL,
"getMaximumAvailableTradableAmount": getMaximumAvailableTradableAmountEPL,
"increaseOrDecreaseMargin": increaseOrDecreaseMarginEPL,
"getLeverage": getLeverageEPL,
"getLeverateEstimatedInfo": getLeverateEstimatedInfoEPL,
"getTheMaximumLoanOfInstrument": getTheMaximumLoanOfInstrumentEPL,
"getFeeRates": getFeeRatesEPL,
"getInterestAccruedData": getInterestAccruedDataEPL,
"getInterestRate": getInterestRateEPL,
"setGreeks": setGreeksEPL,
"isolatedMarginTradingSettings": isolatedMarginTradingSettingsEPL,
"getMaximumWithdrawals": getMaximumWithdrawalsEPL,
"getAccountRiskState": getAccountRiskStateEPL,
"manualBorrowAndRepay": manualBorrowAndRepayEPL,
"getBorrowAndRepayHistory": getBorrowAndRepayHistoryEPL,
"vipLoansBorrowAnsRepay": vipLoansBorrowAnsRepayEPL,
"getBorrowAnsRepayHistoryHistory": getBorrowAnsRepayHistoryHistoryEPL,
"getVIPInterestAccruedData": getVIPInterestAccruedDataEPL,
"getVIPInterestDeductedData": getVIPInterestDeductedDataEPL,
"getVIPLoanOrderList": getVIPLoanOrderListEPL,
"getVIPLoanOrderDetail": getVIPLoanOrderDetailEPL,
"getBorrowInterestAndLimit": getBorrowInterestAndLimitEPL,
"positionBuilder": positionBuilderEPL,
"getGreeks": getGreeksEPL,
"getPMLimitation": getPMLimitationEPL,
"setRiskOffsetLimiter": setRiskOffsetLimiterEPL,
"activateOption": activateOptionEPL,
"setAutoLoan": setAutoLoanEPL,
"setAccountLevel": setAccountLevelEPL,
"resetMMPStatus": resetMMPStatusEPL,
"viewSubaccountList": viewSubaccountListEPL,
"resetSubAccountAPIKey": resetSubAccountAPIKeyEPL,
"getSubaccountTradingBalance": getSubaccountTradingBalanceEPL,
"getSubaccountFundingBalance": getSubaccountFundingBalanceEPL,
"getSubAccountMaxWithdrawal": getSubAccountMaxWithdrawalEPL,
"historyOfSubaccountTransfer": historyOfSubaccountTransferEPL,
"managedSubAccountTransfer": managedSubAccountTransferEPL,
"masterAccountsManageTransfersBetweenSubaccount": masterAccountsManageTransfersBetweenSubaccountEPL,
"setPermissionOfTransferOut": setPermissionOfTransferOutEPL,
"getCustodyTradingSubaccountList": getCustodyTradingSubaccountListEPL,
"setSubAccountVIPLoanAllocation": setSubAccountVIPLoanAllocationEPL,
"getSubAccountBorrowInterestAndLimit": getSubAccountBorrowInterestAndLimitEPL,
"gridTrading": gridTradingEPL,
"amendGridAlgoOrder": amendGridAlgoOrderEPL,
"stopGridAlgoOrder": stopGridAlgoOrderEPL,
"closePositionForForContractGrid": closePositionForForContractGridEPL,
"cancelClosePositionOrderForContractGrid": cancelClosePositionOrderForContractGridEPL,
"instantTriggerGridAlgoOrder": instantTriggerGridAlgoOrderEPL,
"getGridAlgoOrderList": getGridAlgoOrderListEPL,
"getGridAlgoOrderHistory": getGridAlgoOrderHistoryEPL,
"getGridAlgoOrderDetails": getGridAlgoOrderDetailsEPL,
"getGridAlgoSubOrders": getGridAlgoSubOrdersEPL,
"getGridAlgoOrderPositions": getGridAlgoOrderPositionsEPL,
"spotGridWithdrawIncome": spotGridWithdrawIncomeEPL,
"computeMarginBalance": computeMarginBalanceEPL,
"adjustMarginBalance": adjustMarginBalanceEPL,
"getGridAIParameter": getGridAIParameterEPL,
"computeMinInvestment": computeMinInvestmentEPL,
"rsiBackTesting": rsiBackTestingEPL,
"signalBotOrderDetails": signalBotOrderDetailsEPL,
"signalBotOrderPositions": signalBotOrderPositionsEPL,
"signalBotSubOrders": signalBotSubOrdersEPL,
"signalBotEventHistory": signalBotEventHistoryEPL,
"placeRecurringBuyOrder": placeRecurringBuyOrderEPL,
"amendRecurringBuyOrder": amendRecurringBuyOrderEPL,
"stopRecurringBuyOrder": stopRecurringBuyOrderEPL,
"getRecurringBuyOrderList": getRecurringBuyOrderListEPL,
"getRecurringBuyOrderHistory": getRecurringBuyOrderHistoryEPL,
"getRecurringBuyOrderDetail": getRecurringBuyOrderDetailEPL,
"getRecurringBuySubOrders": getRecurringBuySubOrdersEPL,
"getExistingLeadingPositions": getExistingLeadingPositionsEPL,
"getLeadingPositionHistory": getLeadingPositionHistoryEPL,
"placeLeadingStopOrder": placeLeadingStopOrderEPL,
"closeLeadingPosition": closeLeadingPositionEPL,
"getLeadingInstruments": getLeadingInstrumentsEPL,
"getProfitSharingLimit": getProfitSharingLimitEPL,
"getTotalProfitSharing": getTotalProfitSharingEPL,
"setFirstCopySettings": setFirstCopySettingsEPL,
"amendFirstCopySettings": amendFirstCopySettingsEPL,
"stopCopying": stopCopyingEPL,
"getCopySettings": getCopySettingsEPL,
"getMultipleLeverages": getMultipleLeveragesEPL,
"setBatchLeverage": setBatchLeverageEPL,
"getMyLeadTraders": getMyLeadTradersEPL,
"getLeadTraderRanks": getLeadTraderRanksEPL,
"getLeadTraderWeeklyPNL": getLeadTraderWeeklyPNLEPL,
"getLeadTraderDailyPNL": getLeadTraderDailyPNLEPL,
"getLeadTraderStats": getLeadTraderStatsEPL,
"getLeadTraderCurrencyPreferences": getLeadTraderCurrencyPreferencesEPL,
"getTraderCurrentLeadPositions": getTraderCurrentLeadPositionsEPL,
"getLeadTraderLeadPositionHistory": getLeadTraderLeadPositionHistoryEPL,
"getOffer": getOfferEPL,
"purchase": purchaseEPL,
"redeem": redeemEPL,
"cancelPurchaseOrRedemption": cancelPurchaseOrRedemptionEPL,
"getEarnActiveOrders": getEarnActiveOrdersEPL,
"getFundingOrderHistory": getFundingOrderHistoryEPL,
"purchaseETHStaking": purchaseETHStakingEPL,
"redeemETHStaking": redeemETHStakingEPL,
"getBETHBalance": getBETHBalanceEPL,
"getPurchaseRedeemHistory": getPurchaseRedeemHistoryEPL,
"getAPYHistory": getAPYHistoryEPL,
"getTickers": getTickersEPL,
"getTicker": getTickerEPL,
"getIndexTickers": getIndexTickersEPL,
"getOrderBook": getOrderBookEPL,
"getOrderBookLite": getOrderBookLiteEPL,
"getCandlesticks": getCandlesticksEPL,
"getTradesRequest": getTradesRequestEPL,
"get24HTotalVolume": get24HTotalVolumeEPL,
"getOracle": getOracleEPL,
"getExchangeRateRequest": getExchangeRateRequestEPL,
"getIndexComponents": getIndexComponentsEPL,
"getBlockTickers": getBlockTickersEPL,
"getBlockTrades": getBlockTradesEPL,
"placeSpreadOrder": placeSpreadOrderEPL,
"cancelSpreadOrder": cancelSpreadOrderEPL,
"cancelAllSpreadOrder": cancelAllSpreadOrderEPL,
"amendSpreadOrder": amendSpreadOrderEPL,
"getSpreadOrderDetails": getSpreadOrderDetailsEPL,
"getSpreadOrderTrades": getSpreadOrderTradesEPL,
"getSpreads": getSpreadsEPL,
"getSpreadOrderbook": getSpreadOrderbookEPL,
"getSpreadTicker": getSpreadTickerEPL,
"getSpreadPublicTrades": getSpreadPublicTradesEPL,
"getActiveSpreadOrders": getActiveSpreadOrdersEPL,
"getSpreadOrders7Days": getSpreadOrders7DaysEPL,
"getInstruments": getInstrumentsEPL,
"getDeliveryExerciseHistory": getDeliveryExerciseHistoryEPL,
"getOpenInterest": getOpenInterestEPL,
"getFunding": getFundingEPL,
"getFundingRateHistory": getFundingRateHistoryEPL,
"getLimitPrice": getLimitPriceEPL,
"getOptionMarketDate": getOptionMarketDateEPL,
"getEstimatedDeliveryExercisePrice": getEstimatedDeliveryExercisePriceEPL,
"getDiscountRateAndInterestFreeQuota": getDiscountRateAndInterestFreeQuotaEPL,
"getSystemTime": getSystemTimeEPL,
"getLiquidationOrders": getLiquidationOrdersEPL,
"getMarkPrice": getMarkPriceEPL,
"getPositionTiers": getPositionTiersEPL,
"getInterestRateAndLoanQuota": getInterestRateAndLoanQuotaEPL,
"getInterestRateAndLoanQuoteForVIPLoans": getInterestRateAndLoanQuoteForVIPLoansEPL,
"getUnderlying": getUnderlyingEPL,
"getInsuranceFund": getInsuranceFundEPL,
"unitConvert": unitConvertEPL,
"optionTickBands": optionTickBandsEPL,
"getIndexTicker": getIndexTickerEPL,
"getSupportCoin": getSupportCoinEPL,
"getTakerVolume": getTakerVolumeEPL,
"getMarginLendingRatio": getMarginLendingRatioEPL,
"getLongShortRatio": getLongShortRatioEPL,
"getContractsOpenInterestAndVolume": getContractsOpenInterestAndVolumeEPL,
"getOptionsOpenInterestAndVolume": getOptionsOpenInterestAndVolumeEPL,
"getPutCallRatio": getPutCallRatioEPL,
"getOpenInterestAndVolume": getOpenInterestAndVolumeEPL,
"getTakerFlow": getTakerFlowEPL,
"getEventStatus": getEventStatusEPL,
"getCandlestickHistory": getCandlestickHistoryEPL,
"getIndexCandlesticks": getIndexCandlesticksEPL,
"getIndexCandlesticksHistory": getIndexCandlesticksHistoryEPL,
"getMarkPriceCandlesticksHistory": getMarkPriceCandlesticksHistoryEPL,
"getEconomicCalendar": getEconomicCalendarEPL,
"getEstimatedDeliveryPrice": getEstimatedDeliveryPriceEPL,
"getAffilateInviteesDetail": getAffilateInviteesDetailEPL,
"getUserAffilateRebateInformation": getUserAffiliateRebateInformationEPL,
}
rl, err := request.New("RateLimit_Static", http.DefaultClient, request.WithLimiter(GetRateLimit()))
require.NoError(t, err)
for name, tt := range testTable {
t.Run(name, func(t *testing.T) {
t.Parallel()
if err := rl.InitiateRateLimit(context.Background(), tt); err != nil {
t.Fatalf("error applying rate limit: %v", err)
}
})
}
}