feat期权标的白名单:可固定只显示 ETH 或 BTC。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-13 19:09:06 +08:00
parent 8d846794a2
commit 1835a79698
11 changed files with 215 additions and 13 deletions
+51
View File
@@ -0,0 +1,51 @@
# -*- coding: utf-8 -*-
import os
import unittest
from lib.options.options_underly_lib import (
inst_underly_not_allowed_msg,
parse_options_underlyings,
resolve_default_underly,
underly_not_allowed_msg,
)
class OptionsUnderlyLibTests(unittest.TestCase):
def setUp(self):
self._old_u = os.environ.get("OKX_OPTIONS_UNDERLYINGS")
self._old_d = os.environ.get("OKX_OPTIONS_DEFAULT_UNDERLY")
def tearDown(self):
self._restore("OKX_OPTIONS_UNDERLYINGS", self._old_u)
self._restore("OKX_OPTIONS_DEFAULT_UNDERLY", self._old_d)
@staticmethod
def _restore(key: str, val: str | None) -> None:
if val is None:
os.environ.pop(key, None)
else:
os.environ[key] = val
def test_default_both(self):
os.environ.pop("OKX_OPTIONS_UNDERLYINGS", None)
self.assertEqual(parse_options_underlyings(), ["ETH", "BTC"])
def test_eth_only(self):
os.environ["OKX_OPTIONS_UNDERLYINGS"] = "ETH"
self.assertEqual(parse_options_underlyings(), ["ETH"])
self.assertIsNone(underly_not_allowed_msg("ETH"))
self.assertIsNotNone(underly_not_allowed_msg("BTC"))
self.assertIsNotNone(inst_underly_not_allowed_msg("BTC-USD-260328-100000-C"))
def test_default_clamped_to_whitelist(self):
os.environ["OKX_OPTIONS_UNDERLYINGS"] = "BTC"
os.environ["OKX_OPTIONS_DEFAULT_UNDERLY"] = "ETH"
self.assertEqual(resolve_default_underly(), "BTC")
def test_ignores_junk(self):
os.environ["OKX_OPTIONS_UNDERLYINGS"] = "ETH, DOGE ,btc"
self.assertEqual(parse_options_underlyings(), ["ETH", "BTC"])
if __name__ == "__main__":
unittest.main()