snaptrade 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +84 -0
- data/README.md +254 -0
- data/Rakefile +10 -0
- data/docs/APIStatusApi.md +57 -0
- data/docs/Account.md +36 -0
- data/docs/AccountHoldings.md +24 -0
- data/docs/AccountHoldingsAccount.md +26 -0
- data/docs/AccountInformationApi.md +535 -0
- data/docs/AccountOrderRecord.md +52 -0
- data/docs/AccountOrderRecordStatus.md +15 -0
- data/docs/AccountSimple.md +24 -0
- data/docs/AccountSyncStatus.md +18 -0
- data/docs/Action.md +15 -0
- data/docs/AuthType.md +15 -0
- data/docs/AuthenticationApi.md +314 -0
- data/docs/AuthenticationLoginSnapTradeUser200Response.md +49 -0
- data/docs/Balance.md +20 -0
- data/docs/Brokerage.md +52 -0
- data/docs/BrokerageAuthorization.md +34 -0
- data/docs/BrokerageAuthorizationType.md +18 -0
- data/docs/BrokerageAuthorizationTypeReadOnly.md +24 -0
- data/docs/BrokerageAuthorizationTypeReadOnlyBrokerage.md +22 -0
- data/docs/BrokerageAuthorizationTypeReadOnlyType.md +15 -0
- data/docs/BrokerageAuthorizationTypeType.md +15 -0
- data/docs/BrokerageSymbol.md +26 -0
- data/docs/BrokerageType.md +20 -0
- data/docs/CalculatedTrade.md +20 -0
- data/docs/CashRestriction.md +26 -0
- data/docs/ConnectionType.md +15 -0
- data/docs/ConnectionsApi.md +265 -0
- data/docs/ConnectionsSessionEvents200ResponseInner.md +30 -0
- data/docs/Currency.md +22 -0
- data/docs/DeleteUserResponse.md +20 -0
- data/docs/DividendAtDate.md +22 -0
- data/docs/EncryptedResponse.md +20 -0
- data/docs/EncryptedResponseEncryptedMessageData.md +22 -0
- data/docs/ErrorLogsApi.md +68 -0
- data/docs/Exchange.md +32 -0
- data/docs/ExchangeRatePairs.md +22 -0
- data/docs/ExcludedAsset.md +18 -0
- data/docs/JWT.md +18 -0
- data/docs/LoginRedirectURI.md +20 -0
- data/docs/ManualTrade.md +32 -0
- data/docs/ManualTradeAndImpact.md +22 -0
- data/docs/ManualTradeBalance.md +22 -0
- data/docs/ManualTradeForm.md +32 -0
- data/docs/ManualTradeSymbol.md +28 -0
- data/docs/Model400FailedRequestResponse.md +20 -0
- data/docs/Model401FailedRequestResponse.md +20 -0
- data/docs/Model403FailedRequestResponse.md +20 -0
- data/docs/Model404FailedRequestResponse.md +20 -0
- data/docs/ModelAssetClass.md +20 -0
- data/docs/ModelAssetClassDetails.md +20 -0
- data/docs/ModelAssetClassTarget.md +18 -0
- data/docs/ModelPortfolio.md +22 -0
- data/docs/ModelPortfolioAssetClass.md +20 -0
- data/docs/ModelPortfolioDetails.md +22 -0
- data/docs/ModelPortfolioSecurity.md +20 -0
- data/docs/ModelType.md +15 -0
- data/docs/MonthlyDividends.md +20 -0
- data/docs/NetContributions.md +22 -0
- data/docs/NetDividend.md +22 -0
- data/docs/OptionChainInner.md +26 -0
- data/docs/OptionChainInnerChainPerRootInner.md +22 -0
- data/docs/OptionChainInnerChainPerRootInnerChainPerStrikePriceInner.md +22 -0
- data/docs/OptionLeg.md +22 -0
- data/docs/OptionLegAction.md +15 -0
- data/docs/OptionStrategy.md +26 -0
- data/docs/OptionStrategyLegsInner.md +24 -0
- data/docs/OptionsApi.md +390 -0
- data/docs/OptionsGetOptionStrategyRequest.md +22 -0
- data/docs/OptionsHoldings.md +28 -0
- data/docs/OptionsPlaceOptionStrategyRequest.md +22 -0
- data/docs/OptionsPosition.md +30 -0
- data/docs/OptionsSymbol.md +38 -0
- data/docs/OrderStrategyExecuteBodyOrderType.md +15 -0
- data/docs/OrderStrategyExecuteBodyTimeInForce.md +15 -0
- data/docs/OrderType.md +15 -0
- data/docs/PartnerData.md +40 -0
- data/docs/PastValue.md +22 -0
- data/docs/PerformanceCustom.md +54 -0
- data/docs/PortfolioGroup.md +20 -0
- data/docs/PortfolioGroupInfo.md +38 -0
- data/docs/PortfolioGroupPosition.md +22 -0
- data/docs/PortfolioGroupSettings.md +26 -0
- data/docs/PortfolioManagementApi.md +2014 -0
- data/docs/Position.md +28 -0
- data/docs/PositionSymbol.md +28 -0
- data/docs/RedirectTokenandPin.md +20 -0
- data/docs/ReferenceDataApi.md +595 -0
- data/docs/SecurityType.md +24 -0
- data/docs/SessionEvent.md +30 -0
- data/docs/SessionEventType.md +15 -0
- data/docs/SnapTradeAPIDisclaimerAcceptStatus.md +20 -0
- data/docs/SnapTradeHoldingsAccount.md +32 -0
- data/docs/SnapTradeHoldingsAccountAccountId.md +34 -0
- data/docs/SnapTradeHoldingsTotalValue.md +20 -0
- data/docs/SnapTradeLoginUserRequestBody.md +26 -0
- data/docs/SnapTradeRegisterUserRequestBody.md +20 -0
- data/docs/State.md +15 -0
- data/docs/Status.md +22 -0
- data/docs/StrategyImpact.md +38 -0
- data/docs/StrategyImpactLegsInner.md +30 -0
- data/docs/StrategyOrderPlace.md +20 -0
- data/docs/StrategyOrderPlaceOrdersInner.md +102 -0
- data/docs/StrategyOrderPlaceOrdersInnerLegsInner.md +30 -0
- data/docs/StrategyOrderRecord.md +38 -0
- data/docs/StrategyOrderRecordOrderType.md +15 -0
- data/docs/StrategyOrderRecordStatus.md +15 -0
- data/docs/StrategyOrderRecordTimeInForce.md +15 -0
- data/docs/StrategyQuotes.md +28 -0
- data/docs/StrategyQuotesGreek.md +26 -0
- data/docs/StrategyType.md +15 -0
- data/docs/SubPeriodReturnRate.md +22 -0
- data/docs/Symbol.md +30 -0
- data/docs/SymbolQuery.md +18 -0
- data/docs/SymbolsQuotes.md +28 -0
- data/docs/TargetAsset.md +28 -0
- data/docs/TimeInForce.md +15 -0
- data/docs/Trade.md +32 -0
- data/docs/TradeAction.md +15 -0
- data/docs/TradeExecutionStatus.md +34 -0
- data/docs/TradeExecutionStatusAction.md +15 -0
- data/docs/TradeImpact.md +26 -0
- data/docs/TradingApi.md +799 -0
- data/docs/TradingCancelUserAccountOrderRequest.md +18 -0
- data/docs/TradingPlaceOCOOrderRequest.md +20 -0
- data/docs/TransactionsAndReportingApi.md +183 -0
- data/docs/TransactionsStatus.md +20 -0
- data/docs/Type.md +15 -0
- data/docs/USExchange.md +34 -0
- data/docs/UnderlyingSymbol.md +30 -0
- data/docs/UniversalActivity.md +46 -0
- data/docs/UniversalSymbol.md +32 -0
- data/docs/UniversalSymbolTicker.md +32 -0
- data/docs/UserErrorLog.md +28 -0
- data/docs/UserIDandSecret.md +20 -0
- data/docs/UserSettings.md +36 -0
- data/lib/snaptrade/api/account_information_api.rb +801 -0
- data/lib/snaptrade/api/api_status_api.rb +98 -0
- data/lib/snaptrade/api/authentication_api.rb +481 -0
- data/lib/snaptrade/api/connections_api.rb +398 -0
- data/lib/snaptrade/api/error_logs_api.rb +112 -0
- data/lib/snaptrade/api/options_api.rb +591 -0
- data/lib/snaptrade/api/portfolio_management_api.rb +2791 -0
- data/lib/snaptrade/api/reference_data_api.rb +894 -0
- data/lib/snaptrade/api/trading_api.rb +1150 -0
- data/lib/snaptrade/api/transactions_and_reporting_api.rb +283 -0
- data/lib/snaptrade/api_client.rb +427 -0
- data/lib/snaptrade/api_client_custom.rb +32 -0
- data/lib/snaptrade/api_error.rb +55 -0
- data/lib/snaptrade/configuration.rb +374 -0
- data/lib/snaptrade/models/account.rb +303 -0
- data/lib/snaptrade/models/account_holdings.rb +249 -0
- data/lib/snaptrade/models/account_holdings_account.rb +260 -0
- data/lib/snaptrade/models/account_order_record.rb +382 -0
- data/lib/snaptrade/models/account_order_record_status.rb +56 -0
- data/lib/snaptrade/models/account_simple.rb +245 -0
- data/lib/snaptrade/models/account_sync_status.rb +218 -0
- data/lib/snaptrade/models/action.rb +38 -0
- data/lib/snaptrade/models/auth_type.rb +40 -0
- data/lib/snaptrade/models/authentication_login_snap_trade_user200_response.rb +103 -0
- data/lib/snaptrade/models/balance.rb +228 -0
- data/lib/snaptrade/models/brokerage.rb +377 -0
- data/lib/snaptrade/models/brokerage_authorization.rb +297 -0
- data/lib/snaptrade/models/brokerage_authorization_type.rb +217 -0
- data/lib/snaptrade/models/brokerage_authorization_type_read_only.rb +244 -0
- data/lib/snaptrade/models/brokerage_authorization_type_read_only_brokerage.rb +237 -0
- data/lib/snaptrade/models/brokerage_authorization_type_read_only_type.rb +38 -0
- data/lib/snaptrade/models/brokerage_authorization_type_type.rb +38 -0
- data/lib/snaptrade/models/brokerage_symbol.rb +255 -0
- data/lib/snaptrade/models/brokerage_type.rb +227 -0
- data/lib/snaptrade/models/calculated_trade.rb +229 -0
- data/lib/snaptrade/models/cash_restriction.rb +254 -0
- data/lib/snaptrade/models/connection_type.rb +38 -0
- data/lib/snaptrade/models/connections_session_events200_response_inner.rb +293 -0
- data/lib/snaptrade/models/currency.rb +236 -0
- data/lib/snaptrade/models/delete_user_response.rb +229 -0
- data/lib/snaptrade/models/dividend_at_date.rb +240 -0
- data/lib/snaptrade/models/encrypted_response.rb +227 -0
- data/lib/snaptrade/models/encrypted_response_encrypted_message_data.rb +235 -0
- data/lib/snaptrade/models/exchange.rb +282 -0
- data/lib/snaptrade/models/exchange_rate_pairs.rb +236 -0
- data/lib/snaptrade/models/excluded_asset.rb +218 -0
- data/lib/snaptrade/models/jwt.rb +218 -0
- data/lib/snaptrade/models/login_redirect_uri.rb +228 -0
- data/lib/snaptrade/models/manual_trade.rb +283 -0
- data/lib/snaptrade/models/manual_trade_and_impact.rb +238 -0
- data/lib/snaptrade/models/manual_trade_balance.rb +238 -0
- data/lib/snaptrade/models/manual_trade_form.rb +285 -0
- data/lib/snaptrade/models/manual_trade_symbol.rb +264 -0
- data/lib/snaptrade/models/model400_failed_request_response.rb +229 -0
- data/lib/snaptrade/models/model401_failed_request_response.rb +229 -0
- data/lib/snaptrade/models/model403_failed_request_response.rb +229 -0
- data/lib/snaptrade/models/model404_failed_request_response.rb +229 -0
- data/lib/snaptrade/models/model_asset_class.rb +226 -0
- data/lib/snaptrade/models/model_asset_class_details.rb +228 -0
- data/lib/snaptrade/models/model_asset_class_target.rb +217 -0
- data/lib/snaptrade/models/model_portfolio.rb +237 -0
- data/lib/snaptrade/models/model_portfolio_asset_class.rb +250 -0
- data/lib/snaptrade/models/model_portfolio_details.rb +239 -0
- data/lib/snaptrade/models/model_portfolio_security.rb +250 -0
- data/lib/snaptrade/models/model_type.rb +39 -0
- data/lib/snaptrade/models/monthly_dividends.rb +229 -0
- data/lib/snaptrade/models/net_contributions.rb +237 -0
- data/lib/snaptrade/models/net_dividend.rb +237 -0
- data/lib/snaptrade/models/option_chain_inner.rb +255 -0
- data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner.rb +237 -0
- data/lib/snaptrade/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner.rb +238 -0
- data/lib/snaptrade/models/option_leg.rb +237 -0
- data/lib/snaptrade/models/option_leg_action.rb +40 -0
- data/lib/snaptrade/models/option_strategy.rb +255 -0
- data/lib/snaptrade/models/option_strategy_legs_inner.rb +244 -0
- data/lib/snaptrade/models/options_get_option_strategy_request.rb +252 -0
- data/lib/snaptrade/models/options_holdings.rb +267 -0
- data/lib/snaptrade/models/options_place_option_strategy_request.rb +251 -0
- data/lib/snaptrade/models/options_position.rb +275 -0
- data/lib/snaptrade/models/options_symbol.rb +310 -0
- data/lib/snaptrade/models/order_strategy_execute_body_order_type.rb +40 -0
- data/lib/snaptrade/models/order_strategy_execute_body_time_in_force.rb +38 -0
- data/lib/snaptrade/models/order_type.rb +40 -0
- data/lib/snaptrade/models/partner_data.rb +331 -0
- data/lib/snaptrade/models/past_value.rb +236 -0
- data/lib/snaptrade/models/performance_custom.rb +416 -0
- data/lib/snaptrade/models/portfolio_group.rb +226 -0
- data/lib/snaptrade/models/portfolio_group_info.rb +326 -0
- data/lib/snaptrade/models/portfolio_group_position.rb +238 -0
- data/lib/snaptrade/models/portfolio_group_settings.rb +277 -0
- data/lib/snaptrade/models/position.rb +271 -0
- data/lib/snaptrade/models/position_symbol.rb +264 -0
- data/lib/snaptrade/models/redirect_tokenand_pin.rb +227 -0
- data/lib/snaptrade/models/security_type.rb +245 -0
- data/lib/snaptrade/models/session_event.rb +274 -0
- data/lib/snaptrade/models/session_event_type.rb +43 -0
- data/lib/snaptrade/models/snap_trade_api_disclaimer_accept_status.rb +227 -0
- data/lib/snaptrade/models/snap_trade_holdings_account.rb +284 -0
- data/lib/snaptrade/models/snap_trade_holdings_account_account_id.rb +296 -0
- data/lib/snaptrade/models/snap_trade_holdings_total_value.rb +227 -0
- data/lib/snaptrade/models/snap_trade_login_user_request_body.rb +254 -0
- data/lib/snaptrade/models/snap_trade_register_user_request_body.rb +229 -0
- data/lib/snaptrade/models/state.rb +41 -0
- data/lib/snaptrade/models/status.rb +236 -0
- data/lib/snaptrade/models/strategy_impact.rb +310 -0
- data/lib/snaptrade/models/strategy_impact_legs_inner.rb +271 -0
- data/lib/snaptrade/models/strategy_order_place.rb +229 -0
- data/lib/snaptrade/models/strategy_order_place_orders_inner.rb +597 -0
- data/lib/snaptrade/models/strategy_order_place_orders_inner_legs_inner.rb +271 -0
- data/lib/snaptrade/models/strategy_order_record.rb +312 -0
- data/lib/snaptrade/models/strategy_order_record_order_type.rb +40 -0
- data/lib/snaptrade/models/strategy_order_record_status.rb +55 -0
- data/lib/snaptrade/models/strategy_order_record_time_in_force.rb +38 -0
- data/lib/snaptrade/models/strategy_quotes.rb +265 -0
- data/lib/snaptrade/models/strategy_quotes_greek.rb +253 -0
- data/lib/snaptrade/models/strategy_type.rb +37 -0
- data/lib/snaptrade/models/sub_period_return_rate.rb +239 -0
- data/lib/snaptrade/models/symbol.rb +272 -0
- data/lib/snaptrade/models/symbol_query.rb +218 -0
- data/lib/snaptrade/models/symbols_quotes.rb +263 -0
- data/lib/snaptrade/models/target_asset.rb +290 -0
- data/lib/snaptrade/models/time_in_force.rb +39 -0
- data/lib/snaptrade/models/trade.rb +281 -0
- data/lib/snaptrade/models/trade_action.rb +38 -0
- data/lib/snaptrade/models/trade_execution_status.rb +296 -0
- data/lib/snaptrade/models/trade_execution_status_action.rb +38 -0
- data/lib/snaptrade/models/trade_impact.rb +257 -0
- data/lib/snaptrade/models/trading_cancel_user_account_order_request.rb +217 -0
- data/lib/snaptrade/models/trading_place_oco_order_request.rb +230 -0
- data/lib/snaptrade/models/transactions_status.rb +229 -0
- data/lib/snaptrade/models/type.rb +38 -0
- data/lib/snaptrade/models/underlying_symbol.rb +275 -0
- data/lib/snaptrade/models/universal_activity.rb +349 -0
- data/lib/snaptrade/models/universal_symbol.rb +284 -0
- data/lib/snaptrade/models/universal_symbol_ticker.rb +283 -0
- data/lib/snaptrade/models/us_exchange.rb +291 -0
- data/lib/snaptrade/models/user_error_log.rb +263 -0
- data/lib/snaptrade/models/user_i_dand_secret.rb +229 -0
- data/lib/snaptrade/models/user_settings.rb +299 -0
- data/lib/snaptrade/version.rb +13 -0
- data/lib/snaptrade.rb +214 -0
- data/snaptrade.gemspec +41 -0
- data/spec/api/account_information_api_spec.rb +135 -0
- data/spec/api/api_status_api_spec.rb +42 -0
- data/spec/api/authentication_api_spec.rb +88 -0
- data/spec/api/connections_api_spec.rb +82 -0
- data/spec/api/error_logs_api_spec.rb +43 -0
- data/spec/api/options_api_spec.rb +101 -0
- data/spec/api/portfolio_management_api_spec.rb +395 -0
- data/spec/api/reference_data_api_spec.rb +150 -0
- data/spec/api/trading_api_spec.rb +163 -0
- data/spec/api/transactions_and_reporting_api_spec.rb +67 -0
- data/spec/api_client_spec.rb +193 -0
- data/spec/configuration_spec.rb +40 -0
- data/spec/getting_started_spec.rb +144 -0
- data/spec/models/account_holdings_account_spec.rb +54 -0
- data/spec/models/account_holdings_spec.rb +48 -0
- data/spec/models/account_order_record_spec.rb +132 -0
- data/spec/models/account_order_record_status_spec.rb +24 -0
- data/spec/models/account_simple_spec.rb +48 -0
- data/spec/models/account_spec.rb +84 -0
- data/spec/models/account_sync_status_spec.rb +30 -0
- data/spec/models/action_spec.rb +24 -0
- data/spec/models/auth_type_spec.rb +24 -0
- data/spec/models/authentication_login_snap_trade_user200_response_spec.rb +27 -0
- data/spec/models/balance_spec.rb +36 -0
- data/spec/models/brokerage_authorization_spec.rb +78 -0
- data/spec/models/brokerage_authorization_type_read_only_brokerage_spec.rb +42 -0
- data/spec/models/brokerage_authorization_type_read_only_spec.rb +48 -0
- data/spec/models/brokerage_authorization_type_read_only_type_spec.rb +24 -0
- data/spec/models/brokerage_authorization_type_spec.rb +30 -0
- data/spec/models/brokerage_authorization_type_type_spec.rb +24 -0
- data/spec/models/brokerage_spec.rb +132 -0
- data/spec/models/brokerage_symbol_spec.rb +54 -0
- data/spec/models/brokerage_type_spec.rb +36 -0
- data/spec/models/calculated_trade_spec.rb +36 -0
- data/spec/models/cash_restriction_spec.rb +54 -0
- data/spec/models/connection_type_spec.rb +24 -0
- data/spec/models/connections_session_events200_response_inner_spec.rb +66 -0
- data/spec/models/currency_spec.rb +42 -0
- data/spec/models/delete_user_response_spec.rb +36 -0
- data/spec/models/dividend_at_date_spec.rb +42 -0
- data/spec/models/encrypted_response_encrypted_message_data_spec.rb +42 -0
- data/spec/models/encrypted_response_spec.rb +36 -0
- data/spec/models/exchange_rate_pairs_spec.rb +42 -0
- data/spec/models/exchange_spec.rb +72 -0
- data/spec/models/excluded_asset_spec.rb +30 -0
- data/spec/models/jwt_spec.rb +30 -0
- data/spec/models/login_redirect_uri_spec.rb +36 -0
- data/spec/models/manual_trade_and_impact_spec.rb +42 -0
- data/spec/models/manual_trade_balance_spec.rb +42 -0
- data/spec/models/manual_trade_form_spec.rb +72 -0
- data/spec/models/manual_trade_spec.rb +72 -0
- data/spec/models/manual_trade_symbol_spec.rb +60 -0
- data/spec/models/model400_failed_request_response_spec.rb +36 -0
- data/spec/models/model401_failed_request_response_spec.rb +36 -0
- data/spec/models/model403_failed_request_response_spec.rb +36 -0
- data/spec/models/model404_failed_request_response_spec.rb +36 -0
- data/spec/models/model_asset_class_details_spec.rb +36 -0
- data/spec/models/model_asset_class_spec.rb +36 -0
- data/spec/models/model_asset_class_target_spec.rb +30 -0
- data/spec/models/model_portfolio_asset_class_spec.rb +36 -0
- data/spec/models/model_portfolio_details_spec.rb +42 -0
- data/spec/models/model_portfolio_security_spec.rb +36 -0
- data/spec/models/model_portfolio_spec.rb +42 -0
- data/spec/models/model_type_spec.rb +24 -0
- data/spec/models/monthly_dividends_spec.rb +36 -0
- data/spec/models/net_contributions_spec.rb +42 -0
- data/spec/models/net_dividend_spec.rb +42 -0
- data/spec/models/option_chain_inner_chain_per_root_inner_chain_per_strike_price_inner_spec.rb +42 -0
- data/spec/models/option_chain_inner_chain_per_root_inner_spec.rb +42 -0
- data/spec/models/option_chain_inner_spec.rb +54 -0
- data/spec/models/option_leg_action_spec.rb +24 -0
- data/spec/models/option_leg_spec.rb +42 -0
- data/spec/models/option_strategy_legs_inner_spec.rb +48 -0
- data/spec/models/option_strategy_spec.rb +54 -0
- data/spec/models/options_get_option_strategy_request_spec.rb +42 -0
- data/spec/models/options_holdings_spec.rb +60 -0
- data/spec/models/options_place_option_strategy_request_spec.rb +42 -0
- data/spec/models/options_position_spec.rb +66 -0
- data/spec/models/options_symbol_spec.rb +90 -0
- data/spec/models/order_strategy_execute_body_order_type_spec.rb +24 -0
- data/spec/models/order_strategy_execute_body_time_in_force_spec.rb +24 -0
- data/spec/models/order_type_spec.rb +24 -0
- data/spec/models/partner_data_spec.rb +96 -0
- data/spec/models/past_value_spec.rb +42 -0
- data/spec/models/performance_custom_spec.rb +138 -0
- data/spec/models/portfolio_group_info_spec.rb +90 -0
- data/spec/models/portfolio_group_position_spec.rb +42 -0
- data/spec/models/portfolio_group_settings_spec.rb +54 -0
- data/spec/models/portfolio_group_spec.rb +36 -0
- data/spec/models/position_spec.rb +60 -0
- data/spec/models/position_symbol_spec.rb +60 -0
- data/spec/models/redirect_tokenand_pin_spec.rb +36 -0
- data/spec/models/security_type_spec.rb +48 -0
- data/spec/models/session_event_spec.rb +66 -0
- data/spec/models/session_event_type_spec.rb +24 -0
- data/spec/models/snap_trade_api_disclaimer_accept_status_spec.rb +36 -0
- data/spec/models/snap_trade_holdings_account_account_id_spec.rb +78 -0
- data/spec/models/snap_trade_holdings_account_spec.rb +72 -0
- data/spec/models/snap_trade_holdings_total_value_spec.rb +36 -0
- data/spec/models/snap_trade_login_user_request_body_spec.rb +54 -0
- data/spec/models/snap_trade_register_user_request_body_spec.rb +36 -0
- data/spec/models/state_spec.rb +24 -0
- data/spec/models/status_spec.rb +42 -0
- data/spec/models/strategy_impact_legs_inner_spec.rb +66 -0
- data/spec/models/strategy_impact_spec.rb +90 -0
- data/spec/models/strategy_order_place_orders_inner_legs_inner_spec.rb +66 -0
- data/spec/models/strategy_order_place_orders_inner_spec.rb +282 -0
- data/spec/models/strategy_order_place_spec.rb +36 -0
- data/spec/models/strategy_order_record_order_type_spec.rb +24 -0
- data/spec/models/strategy_order_record_spec.rb +90 -0
- data/spec/models/strategy_order_record_status_spec.rb +24 -0
- data/spec/models/strategy_order_record_time_in_force_spec.rb +24 -0
- data/spec/models/strategy_quotes_greek_spec.rb +54 -0
- data/spec/models/strategy_quotes_spec.rb +60 -0
- data/spec/models/strategy_type_spec.rb +24 -0
- data/spec/models/sub_period_return_rate_spec.rb +42 -0
- data/spec/models/symbol_query_spec.rb +30 -0
- data/spec/models/symbol_spec.rb +66 -0
- data/spec/models/symbols_quotes_spec.rb +60 -0
- data/spec/models/target_asset_spec.rb +60 -0
- data/spec/models/time_in_force_spec.rb +24 -0
- data/spec/models/trade_action_spec.rb +24 -0
- data/spec/models/trade_execution_status_action_spec.rb +24 -0
- data/spec/models/trade_execution_status_spec.rb +78 -0
- data/spec/models/trade_impact_spec.rb +54 -0
- data/spec/models/trade_spec.rb +72 -0
- data/spec/models/trading_cancel_user_account_order_request_spec.rb +30 -0
- data/spec/models/trading_place_oco_order_request_spec.rb +36 -0
- data/spec/models/transactions_status_spec.rb +36 -0
- data/spec/models/type_spec.rb +24 -0
- data/spec/models/underlying_symbol_spec.rb +66 -0
- data/spec/models/universal_activity_spec.rb +114 -0
- data/spec/models/universal_symbol_spec.rb +72 -0
- data/spec/models/universal_symbol_ticker_spec.rb +72 -0
- data/spec/models/us_exchange_spec.rb +78 -0
- data/spec/models/user_error_log_spec.rb +60 -0
- data/spec/models/user_i_dand_secret_spec.rb +36 -0
- data/spec/models/user_settings_spec.rb +84 -0
- data/spec/spec_helper.rb +109 -0
- metadata +664 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#SnapTrade
|
|
3
|
+
|
|
4
|
+
#Connect brokerage accounts to your app for live positions and trading
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
|
7
|
+
Contact: api@snaptrade.com
|
|
8
|
+
|
|
9
|
+
=end
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
require 'json'
|
|
13
|
+
|
|
14
|
+
# Unit tests for SnapTrade::TradingApi
|
|
15
|
+
describe 'TradingApi' do
|
|
16
|
+
before do
|
|
17
|
+
# run before each test
|
|
18
|
+
@api_instance = SnapTrade::TradingApi.new
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
after do
|
|
22
|
+
# run after each test
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe 'test an instance of TradingApi' do
|
|
26
|
+
it 'should create an instance of TradingApi' do
|
|
27
|
+
expect(@api_instance).to be_instance_of(SnapTrade::TradingApi)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# unit tests for cancel_user_account_order
|
|
32
|
+
# Cancel open order in account
|
|
33
|
+
# @param user_id
|
|
34
|
+
# @param user_secret
|
|
35
|
+
# @param account_id The ID of the account get positions.
|
|
36
|
+
# @param trading_cancel_user_account_order_request The Order ID to be canceled
|
|
37
|
+
# @param [Hash] opts the optional parameters
|
|
38
|
+
# @return [AccountOrderRecord]
|
|
39
|
+
describe 'cancel_user_account_order test' do
|
|
40
|
+
it 'should work' do
|
|
41
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# unit tests for get_calculated_trade_impact_by_id
|
|
46
|
+
# Return details of a specific trade before it's placed
|
|
47
|
+
# @param portfolio_group_id The ID of the PortfolioGroup to perform rebalancing calculations
|
|
48
|
+
# @param calculated_trade_id The ID of calculated trade to get account impact
|
|
49
|
+
# @param trade_id The ID of trade object
|
|
50
|
+
# @param [Hash] opts the optional parameters
|
|
51
|
+
# @return [Trade]
|
|
52
|
+
describe 'get_calculated_trade_impact_by_id test' do
|
|
53
|
+
it 'should work' do
|
|
54
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# unit tests for get_calculated_trades_impact
|
|
59
|
+
# Return the impact of placing a series of trades on the portfolio
|
|
60
|
+
# @param portfolio_group_id The ID of the PortfolioGroup to perform rebalancing calculations
|
|
61
|
+
# @param calculated_trade_id The ID of calculated trade to get account impact
|
|
62
|
+
# @param [Hash] opts the optional parameters
|
|
63
|
+
# @return [Array<TradeImpact>]
|
|
64
|
+
describe 'get_calculated_trades_impact test' do
|
|
65
|
+
it 'should work' do
|
|
66
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# unit tests for get_order_impact
|
|
71
|
+
# Check impact of trades on account.
|
|
72
|
+
# @param user_id
|
|
73
|
+
# @param user_secret
|
|
74
|
+
# @param manual_trade_form
|
|
75
|
+
# @param [Hash] opts the optional parameters
|
|
76
|
+
# @return [ManualTradeAndImpact]
|
|
77
|
+
describe 'get_order_impact test' do
|
|
78
|
+
it 'should work' do
|
|
79
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# unit tests for get_user_account_quotes
|
|
84
|
+
# Get symbol quotes
|
|
85
|
+
# @param user_id
|
|
86
|
+
# @param user_secret
|
|
87
|
+
# @param symbols List of universal_symbol_id or tickers to get quotes for.
|
|
88
|
+
# @param account_id The ID of the account to get quotes.
|
|
89
|
+
# @param [Hash] opts the optional parameters
|
|
90
|
+
# @option opts [Boolean] :use_ticker Should be set to True if providing tickers.
|
|
91
|
+
# @return [SymbolsQuotes]
|
|
92
|
+
describe 'get_user_account_quotes test' do
|
|
93
|
+
it 'should work' do
|
|
94
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# unit tests for modify_calculated_trade_by_id
|
|
99
|
+
# Modify units of a trade before it is placed
|
|
100
|
+
# @param portfolio_group_id The ID of the PortfolioGroup to perform rebalancing calculations
|
|
101
|
+
# @param calculated_trade_id The ID of calculated trade to get account impact
|
|
102
|
+
# @param trade_id The ID of trade object
|
|
103
|
+
# @param [Hash] opts the optional parameters
|
|
104
|
+
# @option opts [Trade] :trade
|
|
105
|
+
# @return [Trade]
|
|
106
|
+
describe 'modify_calculated_trade_by_id test' do
|
|
107
|
+
it 'should work' do
|
|
108
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# unit tests for place_calculated_trades
|
|
113
|
+
# Place orders for the CalculatedTrades in series
|
|
114
|
+
# @param portfolio_group_id The ID of the PortfolioGroup to perform rebalancing calculations
|
|
115
|
+
# @param calculated_trade_id The ID of calculated trade to get account impact
|
|
116
|
+
# @param [Hash] opts the optional parameters
|
|
117
|
+
# @return [Array<TradeExecutionStatus>]
|
|
118
|
+
describe 'place_calculated_trades test' do
|
|
119
|
+
it 'should work' do
|
|
120
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# unit tests for place_force_order
|
|
125
|
+
# Place a trade with NO validation.
|
|
126
|
+
# @param user_id
|
|
127
|
+
# @param user_secret
|
|
128
|
+
# @param manual_trade_form
|
|
129
|
+
# @param [Hash] opts the optional parameters
|
|
130
|
+
# @return [AccountOrderRecord]
|
|
131
|
+
describe 'place_force_order test' do
|
|
132
|
+
it 'should work' do
|
|
133
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# unit tests for place_oco_order
|
|
138
|
+
# Place a OCO (One Cancels Other) order
|
|
139
|
+
# @param user_id
|
|
140
|
+
# @param user_secret
|
|
141
|
+
# @param trading_place_oco_order_request
|
|
142
|
+
# @param [Hash] opts the optional parameters
|
|
143
|
+
# @return [AccountOrderRecord]
|
|
144
|
+
describe 'place_oco_order test' do
|
|
145
|
+
it 'should work' do
|
|
146
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# unit tests for place_order
|
|
151
|
+
# Place order
|
|
152
|
+
# @param trade_id The ID of trade object obtained from trade/impact endpoint
|
|
153
|
+
# @param user_id
|
|
154
|
+
# @param user_secret
|
|
155
|
+
# @param [Hash] opts the optional parameters
|
|
156
|
+
# @return [AccountOrderRecord]
|
|
157
|
+
describe 'place_order test' do
|
|
158
|
+
it 'should work' do
|
|
159
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#SnapTrade
|
|
3
|
+
|
|
4
|
+
#Connect brokerage accounts to your app for live positions and trading
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
|
7
|
+
Contact: api@snaptrade.com
|
|
8
|
+
|
|
9
|
+
=end
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
require 'json'
|
|
13
|
+
|
|
14
|
+
# Unit tests for SnapTrade::TransactionsAndReportingApi
|
|
15
|
+
describe 'TransactionsAndReportingApi' do
|
|
16
|
+
before do
|
|
17
|
+
# run before each test
|
|
18
|
+
@api_instance = SnapTrade::TransactionsAndReportingApi.new
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
after do
|
|
22
|
+
# run after each test
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe 'test an instance of TransactionsAndReportingApi' do
|
|
26
|
+
it 'should create an instance of TransactionsAndReportingApi' do
|
|
27
|
+
expect(@api_instance).to be_instance_of(SnapTrade::TransactionsAndReportingApi)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# unit tests for get_activities
|
|
32
|
+
# Get transaction history for a user
|
|
33
|
+
# Returns activities (transactions) for a user. Specifing start and end date is highly recommended for automatic calls for better performance
|
|
34
|
+
# @param user_id
|
|
35
|
+
# @param user_secret
|
|
36
|
+
# @param [Hash] opts the optional parameters
|
|
37
|
+
# @option opts [Date] :start_date
|
|
38
|
+
# @option opts [Date] :end_date
|
|
39
|
+
# @option opts [String] :accounts Optional comma seperated list of account IDs used to filter the request on specific accounts
|
|
40
|
+
# @option opts [String] :brokerage_authorizations Optional comma seperated list of brokerage authorization IDs used to filter the request on only accounts that belong to those authorizations
|
|
41
|
+
# @option opts [String] :type Optional comma seperated list of types to filter activities by. Potential values include - DIVIDEND - BUY - SELL - CONTRIBUTION - WITHDRAWAL - EXTERNAL_ASSET_TRANSFER_IN - EXTERNAL_ASSET_TRANSFER_OUT - INTERNAL_CASH_TRANSFER_IN - INTERNAL_CASH_TRANSFER_OUT - INTERNAL_ASSET_TRANSFER_IN - INTERNAL_ASSET_TRANSFER_OUT - INTEREST - REBATE - GOV_GRANT - TAX - FEE - REI - FXT
|
|
42
|
+
# @return [Array<UniversalActivity>]
|
|
43
|
+
describe 'get_activities test' do
|
|
44
|
+
it 'should work' do
|
|
45
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# unit tests for get_reporting_custom_range
|
|
50
|
+
# Get performance information for a specific timeframe
|
|
51
|
+
# Returns performance information (contributions, dividends, rate of return, etc) for a specific timeframe. Total Equity Timeframe and Rate of Returns are experimental and should not be trusted to be 100% accurate
|
|
52
|
+
# @param start_date
|
|
53
|
+
# @param end_date
|
|
54
|
+
# @param user_id
|
|
55
|
+
# @param user_secret
|
|
56
|
+
# @param [Hash] opts the optional parameters
|
|
57
|
+
# @option opts [String] :accounts Optional comma seperated list of account IDs used to filter the request on specific accounts
|
|
58
|
+
# @option opts [Boolean] :detailed Optional, increases frequency of data points for the total value and contribution charts if set to true
|
|
59
|
+
# @option opts [String] :frequency Optional frequency for the rate of return chart (defaults to monthly). Possible values are daily, weekly, monthly, quarterly, yearly.
|
|
60
|
+
# @return [PerformanceCustom]
|
|
61
|
+
describe 'get_reporting_custom_range test' do
|
|
62
|
+
it 'should work' do
|
|
63
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#SnapTrade
|
|
3
|
+
|
|
4
|
+
#Connect brokerage accounts to your app for live positions and trading
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
|
7
|
+
Contact: api@snaptrade.com
|
|
8
|
+
|
|
9
|
+
=end
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
|
|
13
|
+
describe SnapTrade::ApiClient do
|
|
14
|
+
context 'initialization' do
|
|
15
|
+
context 'URL stuff' do
|
|
16
|
+
context 'host' do
|
|
17
|
+
it 'removes http from host' do
|
|
18
|
+
|
|
19
|
+
configuration = SnapTrade::Configuration.new
|
|
20
|
+
configuration.host = 'http://example.com'
|
|
21
|
+
expect(configuration.host).to eq('example.com')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'removes https from host' do
|
|
25
|
+
configuration = SnapTrade::Configuration.new
|
|
26
|
+
configuration.host = 'https://wookiee.com'
|
|
27
|
+
expect(configuration.host).to eq('wookiee.com')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'removes trailing path from host' do
|
|
31
|
+
configuration = SnapTrade::Configuration.new
|
|
32
|
+
configuration.host = 'hello.com/v4'
|
|
33
|
+
expect(configuration.host).to eq('hello.com')
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'base_path' do
|
|
38
|
+
it "prepends a slash to base_path" do
|
|
39
|
+
configuration = SnapTrade::Configuration.new
|
|
40
|
+
configuration.base_path = 'v4/dog'
|
|
41
|
+
expect(configuration.base_path).to eq('/v4/dog')
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "doesn't prepend a slash if one is already there" do
|
|
45
|
+
configuration = SnapTrade::Configuration.new
|
|
46
|
+
configuration.base_path = '/v4/dog'
|
|
47
|
+
expect(configuration.base_path).to eq('/v4/dog')
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "ends up as a blank string if nil" do
|
|
51
|
+
configuration = SnapTrade::Configuration.new
|
|
52
|
+
configuration.base_path = nil
|
|
53
|
+
expect(configuration.base_path).to eq('')
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe '#deserialize' do
|
|
60
|
+
it "handles Array<Integer>" do
|
|
61
|
+
api_client = SnapTrade::ApiClient.new
|
|
62
|
+
headers = { 'Content-Type' => 'application/json' }
|
|
63
|
+
response = double('response', headers: headers, body: '[12, 34]')
|
|
64
|
+
data = api_client.deserialize(response, 'Array<Integer>')
|
|
65
|
+
expect(data).to be_instance_of(Array)
|
|
66
|
+
expect(data).to eq([12, 34])
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it 'handles Array<Array<Integer>>' do
|
|
70
|
+
api_client = SnapTrade::ApiClient.new
|
|
71
|
+
headers = { 'Content-Type' => 'application/json' }
|
|
72
|
+
response = double('response', headers: headers, body: '[[12, 34], [56]]')
|
|
73
|
+
data = api_client.deserialize(response, 'Array<Array<Integer>>')
|
|
74
|
+
expect(data).to be_instance_of(Array)
|
|
75
|
+
expect(data).to eq([[12, 34], [56]])
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'handles Hash<String, String>' do
|
|
79
|
+
api_client = SnapTrade::ApiClient.new
|
|
80
|
+
headers = { 'Content-Type' => 'application/json' }
|
|
81
|
+
response = double('response', headers: headers, body: '{"message": "Hello"}')
|
|
82
|
+
data = api_client.deserialize(response, 'Hash<String, String>')
|
|
83
|
+
expect(data).to be_instance_of(Hash)
|
|
84
|
+
expect(data).to eq(:message => 'Hello')
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
describe "#object_to_hash" do
|
|
89
|
+
it 'ignores nils and includes empty arrays' do
|
|
90
|
+
# uncomment below to test object_to_hash for model
|
|
91
|
+
# api_client = SnapTrade::ApiClient.new
|
|
92
|
+
# _model = SnapTrade::ModelName.new
|
|
93
|
+
# update the model attribute below
|
|
94
|
+
# _model.id = 1
|
|
95
|
+
# update the expected value (hash) below
|
|
96
|
+
# expected = {id: 1, name: '', tags: []}
|
|
97
|
+
# expect(api_client.object_to_hash(_model)).to eq(expected)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
describe '#build_collection_param' do
|
|
102
|
+
let(:param) { ['aa', 'bb', 'cc'] }
|
|
103
|
+
let(:api_client) { SnapTrade::ApiClient.new }
|
|
104
|
+
|
|
105
|
+
it 'works for csv' do
|
|
106
|
+
expect(api_client.build_collection_param(param, :csv)).to eq('aa,bb,cc')
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it 'works for ssv' do
|
|
110
|
+
expect(api_client.build_collection_param(param, :ssv)).to eq('aa bb cc')
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it 'works for tsv' do
|
|
114
|
+
expect(api_client.build_collection_param(param, :tsv)).to eq("aa\tbb\tcc")
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it 'works for pipes' do
|
|
118
|
+
expect(api_client.build_collection_param(param, :pipes)).to eq('aa|bb|cc')
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it 'works for multi' do
|
|
122
|
+
expect(api_client.build_collection_param(param, :multi)).to eq(['aa', 'bb', 'cc'])
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it 'fails for invalid collection format' do
|
|
126
|
+
expect { api_client.build_collection_param(param, :INVALID) }.to raise_error(RuntimeError, 'unknown collection format: :INVALID')
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
describe '#json_mime?' do
|
|
131
|
+
let(:api_client) { SnapTrade::ApiClient.new }
|
|
132
|
+
|
|
133
|
+
it 'works' do
|
|
134
|
+
expect(api_client.json_mime?(nil)).to eq false
|
|
135
|
+
expect(api_client.json_mime?('')).to eq false
|
|
136
|
+
|
|
137
|
+
expect(api_client.json_mime?('application/json')).to eq true
|
|
138
|
+
expect(api_client.json_mime?('application/json; charset=UTF8')).to eq true
|
|
139
|
+
expect(api_client.json_mime?('APPLICATION/JSON')).to eq true
|
|
140
|
+
|
|
141
|
+
expect(api_client.json_mime?('application/xml')).to eq false
|
|
142
|
+
expect(api_client.json_mime?('text/plain')).to eq false
|
|
143
|
+
expect(api_client.json_mime?('application/jsonp')).to eq false
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
describe '#select_header_accept' do
|
|
148
|
+
let(:api_client) { SnapTrade::ApiClient.new }
|
|
149
|
+
|
|
150
|
+
it 'works' do
|
|
151
|
+
expect(api_client.select_header_accept(nil)).to be_nil
|
|
152
|
+
expect(api_client.select_header_accept([])).to be_nil
|
|
153
|
+
|
|
154
|
+
expect(api_client.select_header_accept(['application/json'])).to eq('application/json')
|
|
155
|
+
expect(api_client.select_header_accept(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
|
|
156
|
+
expect(api_client.select_header_accept(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
|
|
157
|
+
|
|
158
|
+
expect(api_client.select_header_accept(['application/xml'])).to eq('application/xml')
|
|
159
|
+
expect(api_client.select_header_accept(['text/html', 'application/xml'])).to eq('text/html,application/xml')
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
describe '#select_header_content_type' do
|
|
164
|
+
let(:api_client) { SnapTrade::ApiClient.new }
|
|
165
|
+
|
|
166
|
+
it 'works' do
|
|
167
|
+
expect(api_client.select_header_content_type(nil)).to be_nil
|
|
168
|
+
expect(api_client.select_header_content_type([])).to be_nil
|
|
169
|
+
|
|
170
|
+
expect(api_client.select_header_content_type(['application/json'])).to eq('application/json')
|
|
171
|
+
expect(api_client.select_header_content_type(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
|
|
172
|
+
expect(api_client.select_header_content_type(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
|
|
173
|
+
expect(api_client.select_header_content_type(['application/xml'])).to eq('application/xml')
|
|
174
|
+
expect(api_client.select_header_content_type(['text/plain', 'application/xml'])).to eq('text/plain')
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
describe '#sanitize_filename' do
|
|
179
|
+
let(:api_client) { SnapTrade::ApiClient.new }
|
|
180
|
+
|
|
181
|
+
it 'works' do
|
|
182
|
+
expect(api_client.sanitize_filename('sun')).to eq('sun')
|
|
183
|
+
expect(api_client.sanitize_filename('sun.gif')).to eq('sun.gif')
|
|
184
|
+
expect(api_client.sanitize_filename('../sun.gif')).to eq('sun.gif')
|
|
185
|
+
expect(api_client.sanitize_filename('/var/tmp/sun.gif')).to eq('sun.gif')
|
|
186
|
+
expect(api_client.sanitize_filename('./sun.gif')).to eq('sun.gif')
|
|
187
|
+
expect(api_client.sanitize_filename('..\sun.gif')).to eq('sun.gif')
|
|
188
|
+
expect(api_client.sanitize_filename('\var\tmp\sun.gif')).to eq('sun.gif')
|
|
189
|
+
expect(api_client.sanitize_filename('c:\var\tmp\sun.gif')).to eq('sun.gif')
|
|
190
|
+
expect(api_client.sanitize_filename('.\sun.gif')).to eq('sun.gif')
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#SnapTrade
|
|
3
|
+
|
|
4
|
+
#Connect brokerage accounts to your app for live positions and trading
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
|
7
|
+
Contact: api@snaptrade.com
|
|
8
|
+
|
|
9
|
+
=end
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
|
|
13
|
+
describe SnapTrade::Configuration do
|
|
14
|
+
let(:config) { SnapTrade::Configuration.default }
|
|
15
|
+
|
|
16
|
+
before(:each) do
|
|
17
|
+
# uncomment below to setup host and base_path
|
|
18
|
+
# require 'URI'
|
|
19
|
+
# uri = URI.parse("https://api.snaptrade.com/api/v1")
|
|
20
|
+
# SnapTrade.configure do |c|
|
|
21
|
+
# c.host = uri.host
|
|
22
|
+
# c.base_path = uri.path
|
|
23
|
+
# end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#base_url' do
|
|
27
|
+
it 'should have the default value' do
|
|
28
|
+
# uncomment below to test default value of the base path
|
|
29
|
+
# expect(config.base_url).to eq("https://api.snaptrade.com/api/v1")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'should remove trailing slashes' do
|
|
33
|
+
[nil, '', '/', '//'].each do |base_path|
|
|
34
|
+
config.base_path = base_path
|
|
35
|
+
# uncomment below to test trailing slashes
|
|
36
|
+
# expect(config.base_url).to eq("https://api.snaptrade.com/api/v1")
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#SnapTrade
|
|
3
|
+
|
|
4
|
+
#Connect brokerage accounts to your app for live positions and trading
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
|
7
|
+
Contact: api@snaptrade.com
|
|
8
|
+
|
|
9
|
+
=end
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
require 'json'
|
|
13
|
+
require 'securerandom'
|
|
14
|
+
require 'debug'
|
|
15
|
+
|
|
16
|
+
# Unit tests for SnapTrade::APIStatusApi
|
|
17
|
+
describe 'GettingStarted' do
|
|
18
|
+
before do
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
after do
|
|
22
|
+
# run after each test
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe 'non object body parameter' do
|
|
26
|
+
it 'should work' do
|
|
27
|
+
configuration = SnapTrade::Configuration.new
|
|
28
|
+
configuration.client_id = ENV["SNAPTRADE_CLIENT_ID"]
|
|
29
|
+
configuration.consumer_key = ENV["SNAPTRADE_CONSUMER_KEY"]
|
|
30
|
+
configuration.host = "http://127.0.0.1:4010"
|
|
31
|
+
snaptrade = SnapTrade::Client.new(configuration)
|
|
32
|
+
|
|
33
|
+
data = snaptrade.portfolio_management.set_portfolio_targets(
|
|
34
|
+
portfolio_group_id: SecureRandom.uuid,
|
|
35
|
+
body: [{
|
|
36
|
+
"id" => SecureRandom.uuid,
|
|
37
|
+
"symbol" => {
|
|
38
|
+
"id" => SecureRandom.uuid,
|
|
39
|
+
"symbol" => "VOO"
|
|
40
|
+
}
|
|
41
|
+
}]
|
|
42
|
+
)
|
|
43
|
+
puts data
|
|
44
|
+
expect(data).not_to be_nil
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe 'optional non body parameters should be passed' do
|
|
49
|
+
it 'should pass' do
|
|
50
|
+
configuration = SnapTrade::Configuration.new
|
|
51
|
+
configuration.client_id = ENV["SNAPTRADE_CLIENT_ID"]
|
|
52
|
+
configuration.consumer_key = ENV["SNAPTRADE_CONSUMER_KEY"]
|
|
53
|
+
configuration.host = "http://127.0.0.1:4010"
|
|
54
|
+
snaptrade = SnapTrade::Client.new(configuration)
|
|
55
|
+
|
|
56
|
+
data, status_code, headers, response = snaptrade.account_information.get_user_account_orders_with_http_info(
|
|
57
|
+
user_id: "a",
|
|
58
|
+
user_secret: "b",
|
|
59
|
+
account_id: SecureRandom.uuid,
|
|
60
|
+
state: "all"
|
|
61
|
+
)
|
|
62
|
+
puts data
|
|
63
|
+
expect(response.env.url.query).to include("state=all")
|
|
64
|
+
expect(data).not_to be_nil
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# integration test for getting started flow
|
|
69
|
+
describe 'getting started flow static pattern' do
|
|
70
|
+
it 'should work' do
|
|
71
|
+
# 1) Setup
|
|
72
|
+
SnapTrade.client_id = ENV["SNAPTRADE_CLIENT_ID"]
|
|
73
|
+
SnapTrade.consumer_key = ENV["SNAPTRADE_CONSUMER_KEY"]
|
|
74
|
+
|
|
75
|
+
# 2) Check API Status
|
|
76
|
+
response = SnapTrade::APIStatus.check()
|
|
77
|
+
expect(response).not_to be_nil
|
|
78
|
+
puts response
|
|
79
|
+
|
|
80
|
+
# 3) Create a new user
|
|
81
|
+
user_id = SecureRandom.uuid
|
|
82
|
+
response = SnapTrade::Authentication.register_snap_trade_user(user_id: user_id)
|
|
83
|
+
puts response
|
|
84
|
+
|
|
85
|
+
# 4) Get a redirect URI
|
|
86
|
+
redirect_uri = SnapTrade::Authentication.login_snap_trade_user(user_id: user_id, user_secret: response.user_secret)
|
|
87
|
+
puts redirect_uri
|
|
88
|
+
|
|
89
|
+
SnapTrade::PortfolioManagement.create(
|
|
90
|
+
user_id: user_id,
|
|
91
|
+
user_secret: response.user_secret,
|
|
92
|
+
id: SecureRandom.uuid,
|
|
93
|
+
name: "MyPortfolio"
|
|
94
|
+
)
|
|
95
|
+
portfolios = SnapTrade::PortfolioManagement.list(user_id: user_id, user_secret: response.user_secret)
|
|
96
|
+
puts portfolios
|
|
97
|
+
|
|
98
|
+
# 5) Obtaining account holdings data
|
|
99
|
+
holdings = SnapTrade::AccountInformation.get_all_user_holdings(user_id: user_id, user_secret: response.user_secret)
|
|
100
|
+
puts holdings
|
|
101
|
+
|
|
102
|
+
# 6) Deleting a user
|
|
103
|
+
deleted_response = SnapTrade::Authentication.delete_snap_trade_user(user_id: user_id)
|
|
104
|
+
puts deleted_response
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe 'getting started flow instance patern' do
|
|
109
|
+
it 'should work' do
|
|
110
|
+
# 1) Setup
|
|
111
|
+
configuration = SnapTrade::Configuration.new
|
|
112
|
+
configuration.client_id = ENV["SNAPTRADE_CLIENT_ID"]
|
|
113
|
+
configuration.consumer_key = ENV["SNAPTRADE_CONSUMER_KEY"]
|
|
114
|
+
snaptrade = SnapTrade::Client.new(configuration)
|
|
115
|
+
|
|
116
|
+
# 2) Check that the client is able to make a request to the API server.
|
|
117
|
+
response = snaptrade.api_status.check()
|
|
118
|
+
expect(response).not_to be_nil
|
|
119
|
+
puts response
|
|
120
|
+
|
|
121
|
+
# 3) Create a new user
|
|
122
|
+
user_id = SecureRandom.uuid
|
|
123
|
+
response = snaptrade.authentication.register_snap_trade_user(user_id: user_id)
|
|
124
|
+
puts response
|
|
125
|
+
|
|
126
|
+
# 4) Get a redirect URI
|
|
127
|
+
redirect_uri = snaptrade.authentication.login_snap_trade_user(user_id: user_id, user_secret: response.user_secret)
|
|
128
|
+
puts redirect_uri
|
|
129
|
+
|
|
130
|
+
snaptrade.portfolio_management.create(user_id: user_id, user_secret: response.user_secret, id: SecureRandom.uuid, name: "MyPortfolio")
|
|
131
|
+
portfolios = snaptrade.portfolio_management.list(user_id: user_id, user_secret: response.user_secret)
|
|
132
|
+
puts portfolios
|
|
133
|
+
|
|
134
|
+
# 5) Obtaining account holdings data
|
|
135
|
+
holdings = snaptrade.account_information.get_all_user_holdings(user_id: user_id, user_secret: response.user_secret)
|
|
136
|
+
puts holdings
|
|
137
|
+
|
|
138
|
+
# 6) Deleting a user
|
|
139
|
+
deleted_response = snaptrade.authentication.delete_snap_trade_user(user_id: user_id)
|
|
140
|
+
puts deleted_response
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#SnapTrade
|
|
3
|
+
|
|
4
|
+
#Connect brokerage accounts to your app for live positions and trading
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 1.0.0
|
|
7
|
+
Contact: api@snaptrade.com
|
|
8
|
+
|
|
9
|
+
=end
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
require 'json'
|
|
13
|
+
require 'date'
|
|
14
|
+
|
|
15
|
+
# Unit tests for SnapTrade::AccountHoldingsAccount
|
|
16
|
+
describe SnapTrade::AccountHoldingsAccount do
|
|
17
|
+
let(:instance) { SnapTrade::AccountHoldingsAccount.new }
|
|
18
|
+
|
|
19
|
+
describe 'test an instance of AccountHoldingsAccount' do
|
|
20
|
+
it 'should create an instance of AccountHoldingsAccount' do
|
|
21
|
+
expect(instance).to be_instance_of(SnapTrade::AccountHoldingsAccount)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
describe 'test attribute "account"' do
|
|
25
|
+
it 'should work' do
|
|
26
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'test attribute "balances"' do
|
|
31
|
+
it 'should work' do
|
|
32
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe 'test attribute "positions"' do
|
|
37
|
+
it 'should work' do
|
|
38
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe 'test attribute "orders"' do
|
|
43
|
+
it 'should work' do
|
|
44
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe 'test attribute "total_value"' do
|
|
49
|
+
it 'should work' do
|
|
50
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|