1835a79698
Co-authored-by: Cursor <cursoragent@cursor.com>
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
# -*- 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()
|