diff options
Diffstat (limited to 'test/api.scm')
| -rw-r--r-- | test/api.scm | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/test/api.scm b/test/api.scm new file mode 100644 index 0000000..1a85a77 --- /dev/null +++ b/test/api.scm @@ -0,0 +1,93 @@ +(use-modules (ibkr api) + (ibkr types) + (json) + (web uri) + (web request) + (srfi srfi-64) + (ice-9 textual-ports) + (ice-9 iconv)) + +;; (test-begin "errors") +;; (test-error &ibkr-request-error (auth-status-connected "http://localhost:12345")) +;; (test-end "errors") + +(define (read-text path) + (call-with-input-file path (lambda (p) (get-string-all p)))) + +(test-begin "auth-status") +(test-equal "uri" "http://base/v1/api/iserver/auth/status" + (auth-status-uri "http://base")) +(test-end "auth-status") + +(test-begin "accounts") +(test-equal "uri" "http://base/v1/api/portfolio/accounts" + (accounts-uri "http://base")) +(let ((body (read-text "test/account-response.json"))) + (test-assert "conversion" (account? (car (response-body->accounts body))))) +(test-end "accounts") + +(test-begin "positions") +(test-equal "uri" "http://base/v1/api/portfolio2/ACCT/positions" + (positions-uri "http://base" "ACCT")) +(let ((body (read-text "test/position-response.json"))) + (test-assert "conversion" (position? (car (response-body->positions body))))) +(test-end "positions") + +(test-begin "ledger") +(test-equal "uri" "http://base/v1/api/portfolio/ACCT/ledger" + (ledger-uri "http://base" "ACCT")) +(let ((body (read-text "test/ledger-response.json"))) + (test-assert "conversion" (ledger? (response-body->ledger body "USD")))) +(test-end "ledger") + +(test-begin "stocks") +(test-equal "uri" + "http://base/v1/api/trsrv/stocks?symbols=IBKR" + (stocks-by-symbol-uri "http://base" "IBKR")) +(let* ((body (read-text "test/stocks-response.json")) + (converted (response-body->stocks-by-symbol body "AAPL"))) + (test-assert "conversion-list" (list? converted)) + (test-assert "conversion-type" (stock? (car converted))) + (test-assert "contract-list" (list? (stock-contracts (car converted)))) + (test-equal "exchange-search" + 265598 (contract-id (first-contract-on-exchange converted "NASDAQ")))) +(test-end "stocks") + +(test-begin "contract-snapshot") +(test-equal "uri" + "http://base/v1/api/iserver/marketdata/snapshot?conids=265598&fields=31" + (contract-snapshot-uri "http://base" 265598 'last-trade)) +(let ((body (read-text "test/snapshot-response.json"))) + (test-assert "conversion" + (number? (response-body->contract-snapshot body 'last-trade)))) +(test-end "contract-snapshot") + +(test-begin "order-preview") +(test-equal "uri" "http://base/v1/api/iserver/account/ACCT/orders/whatif" + (order-preview-uri "http://base" "ACCT")) +(test-end "order-preview") + +(test-begin "order-submit") +(test-equal "uri" "http://base/v1/api/iserver/account/ACCT/orders" + (order-submit-uri "http://base" "ACCT")) +(test-end "order-submit") + +(test-begin "order-status") +(test-equal "uri" "http://base/v1/api/iserver/account/order/status/OID" + (order-status-uri "http://base" "OID")) +(test-end "order-status") + +(test-begin "suppress") +(test-equal "uri" "http://base/v1/api/iserver/questions/suppress" + (suppress-uri "http://base")) +(test-end "suppress") + +(test-begin "reset-suppress") +(test-equal "uri" "http://base/v1/api/iserver/questions/suppress/reset" + (reset-suppress-uri "http://base")) +(test-end "reset-suppress") + +(test-begin "reply") +(test-equal "uri" "http://base/v1/api/iserver/reply/REPID" + (reply-uri "http://base" "REPID")) +(test-end "reply") |
