Esempio n. 1
0
class TestBinanceJeManager(unittest.TestCase):
    # Test binance.je (Binance Jersey)

    def setUp(self):
        self.binance_je_api_key = BINANCE_JE_API_KEY
        self.binance_je_api_secret = BINANCE_JE_API_SECRET

        self.binance_je_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.je")

    def test_create_uri_miniticker_regular_je(self):
        self.assertEqual(self.binance_je_websocket_api_manager.create_websocket_uri(["!miniTicker"], ["arr"]),
                         'wss://stream.binance.je:9443/ws/!miniTicker@arr')

    def test_create_uri_miniticker_reverse_je(self):
        self.assertEqual(self.binance_je_websocket_api_manager.create_websocket_uri(["arr"], ["!miniTicker"]),
                         'wss://stream.binance.je:9443/ws/!miniTicker@arr')

    def test_create_uri_ticker_regular_je(self):
        self.assertEqual(self.binance_je_websocket_api_manager.create_websocket_uri(["!ticker"], ["arr"]),
                         'wss://stream.binance.je:9443/ws/!ticker@arr')

    def test_create_uri_ticker_reverse_je(self):
        self.assertEqual(self.binance_je_websocket_api_manager.create_websocket_uri(["arr"], ["!ticker"]),
                         'wss://stream.binance.je:9443/ws/!ticker@arr')

    def test_create_uri_userdata_regular_false_je(self):
        self.assertFalse(self.binance_je_websocket_api_manager.create_websocket_uri(["!userData"], ["arr"]))

    def test_create_uri_userdata_reverse_false_je(self):
        self.assertFalse(self.binance_je_websocket_api_manager.create_websocket_uri(["arr"], ["!userData"]))

    def test_create_uri_userdata_regular_je(self):
        if len(self.binance_je_api_key) == 0 or len(self.binance_je_api_secret) == 0:
            print("\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_regular_je() "
                  "for binance.je")
        else:
            stream_id = uuid.uuid4()
            self.binance_je_websocket_api_manager._add_socket_to_socket_list(stream_id, ["!userData"], ["arr"])
            self.assertRegex(self.binance_je_websocket_api_manager.create_websocket_uri(["!userData"], ["arr"],
                                                                                        stream_id,
                                                                                        self.binance_je_api_key,
                                                                                        self.binance_je_api_secret),
                             r'wss://stream.binance.je:9443/ws/.')

    def test_create_uri_userdata_reverse_je(self):
        if len(self.binance_je_api_key) == 0 or len(self.binance_je_api_secret) == 0:
            print("\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_reverse_je() "
                  "for binance.je")
        else:
            stream_id = uuid.uuid4()
            self.binance_je_websocket_api_manager._add_socket_to_socket_list(stream_id, ["arr"], ["!userData"])
            self.assertRegex(self.binance_je_websocket_api_manager.create_websocket_uri(["arr"], ["!userData"],
                                                                                        stream_id,
                                                                                        self.binance_je_api_key,
                                                                                        self.binance_je_api_secret),
                             r'wss://stream.binance.je:9443/ws')

    def tearDown(self):
        self.binance_je_websocket_api_manager.stop_manager_with_all_streams()
class TestBinanceComManager(unittest.TestCase):
    # Test binance.com (Binance)

    def setUp(self):
        self.binance_com_api_key = BINANCE_COM_API_KEY
        self.binance_com_api_secret = BINANCE_COM_API_SECRET
        self.binance_com_websocket_api_manager = BinanceWebSocketApiManager(
            exchange="binance.com", disable_colorama=True)

    def test_create_uri_miniticker_regular_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!miniTicker"], ["arr"]),
            'wss://stream.binance.com:9443/ws/!miniTicker@arr')

    def test_create_uri_miniticker_reverse_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!miniTicker"]),
            'wss://stream.binance.com:9443/ws/!miniTicker@arr')

    def test_create_uri_ticker_regular_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!ticker"], ["arr"]),
            'wss://stream.binance.com:9443/ws/!ticker@arr')

    def test_create_uri_ticker_reverse_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!ticker"]),
            'wss://stream.binance.com:9443/ws/!ticker@arr')

    def test_create_uri_userdata_regular_false_com(self):
        self.assertFalse(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!userData"], ["arr"]))

    def test_create_uri_userdata_reverse_false_com(self):
        self.assertFalse(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!userData"]))

    def test_create_uri_userdata_regular_com(self):
        if len(self.binance_com_api_key) == 0 or len(
                self.binance_com_api_secret) == 0:
            print(
                "\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_regular_com() "
                "for binance.com")
        else:
            stream_id = uuid.uuid4()
            self.binance_com_websocket_api_manager._add_socket_to_socket_list(
                stream_id, ["!userData"], ["arr"])
            self.assertRegex(
                self.binance_com_websocket_api_manager.create_websocket_uri(
                    ["!userData"], ["arr"], stream_id,
                    self.binance_com_api_key, self.binance_com_api_secret),
                r'wss://stream.binance.com:9443/ws/.')

    def test_create_uri_userdata_reverse_com(self):
        if len(self.binance_com_api_key) == 0 or len(
                self.binance_com_api_secret) == 0:
            print(
                "\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_reverse_com() "
                "for binance.com")
        else:
            stream_id = uuid.uuid4()
            self.binance_com_websocket_api_manager._add_socket_to_socket_list(
                stream_id, ["arr"], ["!userData"])
            self.assertRegex(
                self.binance_com_websocket_api_manager.create_websocket_uri(
                    ["arr"], ["!userData"], stream_id,
                    self.binance_com_api_key, self.binance_com_api_secret),
                r'wss://stream.binance.com:9443/ws/.')

    def test_is_exchange_type_cex(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.is_exchange_type("cex"),
            True)

    def test_is_exchange_type_dex(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.is_exchange_type("dex"),
            False)

    def test_is_update_available(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.is_update_availabe(), False)

    def test_is_manager_stopping(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.is_manager_stopping(),
            False)

    def test_get_human_uptime(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_uptime(
                60 * 60 * 60 * 61), "152d:12h:0m:0s")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_uptime(
                60 * 60 * 24), "24h:0m:0s")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_uptime(60 * 60),
            "60m:0s")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_uptime(60),
            "60 seconds")

    def test_get_human_bytesize(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(
                1024 * 1024 * 1024 * 1024 * 1024), "1024.0 tB")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(
                1024 * 1024 * 1024 * 1024), "1024.0 gB")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(
                1024 * 1024 * 1024), "1024.0 mB")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(
                1024 * 1024), "1024.0 kB")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(1024),
            "1024 B")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(1),
            "1 B")

    def test_get_exchange(self):
        self.assertEqual(self.binance_com_websocket_api_manager.get_exchange(),
                         "binance.com")

    def test_get_listenkey_from_restclient(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.
            get_listen_key_from_restclient(), False)

    def test_get_listenkey_from_restclient(self):
        stream_id = uuid.uuid4()
        self.assertEqual(
            self.binance_com_websocket_api_manager.
            delete_listen_key_by_stream_id(stream_id), False)

    def test_keepalive_listen_key(self):
        stream_id = uuid.uuid4()
        binance_websocket_api_restclient = BinanceWebSocketApiRestclient(
            self.binance_com_websocket_api_manager)
        self.assertEqual(
            str(
                binance_websocket_api_restclient.keepalive_listen_key(
                    stream_id, listen_key="invalid_testkey")),
            "{'code': -2014, 'msg': 'API-key format invalid.'}")

    def test_delete_listen_key(self):
        stream_id = uuid.uuid4()
        binance_websocket_api_restclient = BinanceWebSocketApiRestclient(
            self.binance_com_websocket_api_manager)
        self.assertEqual(
            str(
                binance_websocket_api_restclient.delete_listen_key(
                    stream_id, listen_key="invalid_testkey")),
            "{'code': -2014, 'msg': 'API-key format invalid.'}")
        self.binance_com_websocket_api_manager.show_secrets_in_logs = True
        self.assertEqual(
            str(
                binance_websocket_api_restclient.delete_listen_key(
                    stream_id, listen_key="invalid_testkey")),
            "{'code': -2014, 'msg': 'API-key format invalid.'}")

    def test_create_payload_subscribe(self):
        result = "[{'method': 'SUBSCRIBE', 'params': ['bnbbtc@kline_1m'], 'id': 1}]"
        stream_id = uuid.uuid4()
        self.assertEqual(
            str(
                self.binance_com_websocket_api_manager.create_payload(
                    stream_id, "subscribe", ['kline_1m'], ['bnbbtc'])), result)

    def test_fill_up_space_centered(self):
        result = "==========test text=========="
        self.assertEqual(
            str(
                self.binance_com_websocket_api_manager.fill_up_space_centered(
                    30, "test text", "=")), result)

    def test_fill_up_space_right(self):
        result = "|test text||||||||||||||||||||"
        self.assertEqual(
            str(
                self.binance_com_websocket_api_manager.fill_up_space_right(
                    30, "test text", "|")), result)

    def test_fill_up_space_left(self):
        result = "||||||||||||||||||||test text|"
        self.assertEqual(
            str(
                self.binance_com_websocket_api_manager.fill_up_space_left(
                    30, "test text", "|")), result)

    def test_create_stream(self):
        self.assertTrue(
            bool(
                self.binance_com_websocket_api_manager.create_stream(
                    'arr', '!userData', "userData", "key", "secret")))
        self.assertTrue(
            bool(
                self.binance_com_websocket_api_manager.create_stream(
                    markets=['bnbbtc'],
                    channels="trade",
                    stream_label="test_stream")))
        stream_id = self.binance_com_websocket_api_manager.get_stream_id_by_label(
            "test_stream")
        #time.sleep(5)
        #self.binance_com_websocket_api_manager.unsubscribe_from_stream(stream_id, markets=['bnbbtc'])
        #self.binance_com_websocket_api_manager.unsubscribe_from_stream(stream_id, channels=['trade'])
        time.sleep(5)
        self.assertTrue(
            self.binance_com_websocket_api_manager.set_restart_request(
                stream_id))
        time.sleep(10)
        self.binance_com_websocket_api_manager.get_monitoring_status_icinga()
        self.binance_com_websocket_api_manager.print_summary()
        self.binance_com_websocket_api_manager.print_stream_info(stream_id)

    def test_restart_stream(self):
        self.assertFalse(
            bool(
                self.binance_com_websocket_api_manager._restart_stream(
                    uuid.uuid4())))

    def test_start_monitoring_api(self):
        self.assertTrue(
            self.binance_com_websocket_api_manager.start_monitoring_api())
        time.sleep(5)
        self.assertTrue(
            self.binance_com_websocket_api_manager.stop_monitoring_api())

    def tearDown(self):
        self.binance_com_websocket_api_manager.stop_manager_with_all_streams()
class TestBinanceComManagerTest(unittest.TestCase):
    # Test testnet.binance.vision (Binance Testnet)

    def setUp(self):
        self.binance_com_testnet_api_key = BINANCE_COM_API_KEY
        self.binance_com_testnet_api_secret = BINANCE_COM_API_SECRET
        self.binance_com_testnet_websocket_api_manager = BinanceWebSocketApiManager(
            exchange="binance.com-testnet")

    def test_create_uri_miniticker_regular_com(self):
        self.assertEqual(
            self.binance_com_testnet_websocket_api_manager.
            create_websocket_uri(["!miniTicker"], ["arr"]),
            'wss://testnet.binance.vision/ws/!miniTicker@arr')

    def test_create_uri_miniticker_reverse_com(self):
        self.assertEqual(
            self.binance_com_testnet_websocket_api_manager.
            create_websocket_uri(["arr"], ["!miniTicker"]),
            'wss://testnet.binance.vision/ws/!miniTicker@arr')

    def test_create_uri_ticker_regular_com(self):
        self.assertEqual(
            self.binance_com_testnet_websocket_api_manager.
            create_websocket_uri(["!ticker"], ["arr"]),
            'wss://testnet.binance.vision/ws/!ticker@arr')

    def test_create_uri_ticker_reverse_com(self):
        self.assertEqual(
            self.binance_com_testnet_websocket_api_manager.
            create_websocket_uri(["arr"], ["!ticker"]),
            'wss://testnet.binance.vision/ws/!ticker@arr')

    def test_create_uri_userdata_regular_false_com(self):
        self.assertFalse(
            self.binance_com_testnet_websocket_api_manager.
            create_websocket_uri(["!userData"], ["arr"]))

    def test_create_uri_userdata_reverse_false_com(self):
        self.assertFalse(
            self.binance_com_testnet_websocket_api_manager.
            create_websocket_uri(["arr"], ["!userData"]))

    def test_create_uri_userdata_regular_com(self):
        if len(self.binance_com_testnet_api_key) == 0 or len(
                self.binance_com_testnet_api_secret) == 0:
            print(
                "\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_regular_com() "
                "for binance.com-testnet")
        else:
            stream_id = uuid.uuid4()
            self.binance_com_testnet_websocket_api_manager._add_socket_to_socket_list(
                stream_id, ["!userData"], ["arr"])
            self.assertRegex(
                self.binance_com_testnet_websocket_api_manager.
                create_websocket_uri(["!userData"], ["arr"], stream_id,
                                     self.binance_com_testnet_api_key,
                                     self.binance_com_testnet_api_secret),
                r'wss://testnet.binance.vision/ws/.')

    def test_create_uri_userdata_reverse_com(self):
        if len(self.binance_com_testnet_api_key) == 0 or len(
                self.binance_com_testnet_api_secret) == 0:
            print(
                "\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_reverse_com() "
                "for binance.com-testnet")
        else:
            stream_id = uuid.uuid4()
            self.binance_com_testnet_websocket_api_manager._add_socket_to_socket_list(
                stream_id, ["arr"], ["!userData"])
            self.assertRegex(
                self.binance_com_testnet_websocket_api_manager.
                create_websocket_uri(["arr"], ["!userData"], stream_id,
                                     self.binance_com_testnet_api_key,
                                     self.binance_com_testnet_api_secret),
                r'wss://stream.binance.com:9443/ws/.')

    def test_is_exchange_type_cex(self):
        self.assertEqual(
            self.binance_com_testnet_websocket_api_manager.is_exchange_type(
                "cex"), True)

    def test_is_exchange_type_dex(self):
        self.assertEqual(
            self.binance_com_testnet_websocket_api_manager.is_exchange_type(
                "dex"), False)

    def tearDown(self):
        self.binance_com_testnet_websocket_api_manager.stop_manager_with_all_streams(
        )
class TestBinanceComManager(unittest.TestCase):
    # Test binance.com (Binance)

    def setUp(self):
        self.binance_com_api_key = BINANCE_COM_API_KEY
        self.binance_com_api_secret = BINANCE_COM_API_SECRET
        self.binance_com_websocket_api_manager = BinanceWebSocketApiManager(
            exchange="binance.com")

    def test_create_uri_miniticker_regular_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!miniTicker"], ["arr"]),
            'wss://stream.binance.com:9443/ws/!miniTicker@arr')

    def test_create_uri_miniticker_reverse_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!miniTicker"]),
            'wss://stream.binance.com:9443/ws/!miniTicker@arr')

    def test_create_uri_ticker_regular_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!ticker"], ["arr"]),
            'wss://stream.binance.com:9443/ws/!ticker@arr')

    def test_create_uri_ticker_reverse_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!ticker"]),
            'wss://stream.binance.com:9443/ws/!ticker@arr')

    def test_create_uri_userdata_regular_false_com(self):
        self.assertFalse(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!userData"], ["arr"]))

    def test_create_uri_userdata_reverse_false_com(self):
        self.assertFalse(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!userData"]))

    def test_create_uri_userdata_regular_com(self):
        if len(self.binance_com_api_key) == 0 or len(
                self.binance_com_api_secret) == 0:
            print(
                "\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_regular_com() "
                "for binance.com")
        stream_id = uuid.uuid4()
        self.binance_com_websocket_api_manager._add_socket_to_socket_list(
            stream_id, ["!userData"], ["arr"])
        self.assertRegex(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!userData"], ["arr"], stream_id, self.binance_com_api_key,
                self.binance_com_api_secret),
            r'wss://stream.binance.com:9443/ws/.')

    def test_create_uri_userdata_reverse_com(self):
        if len(self.binance_com_api_key) == 0 or len(
                self.binance_com_api_secret) == 0:
            print(
                "\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_reverse_com() "
                "for binance.com")
        stream_id = uuid.uuid4()
        self.binance_com_websocket_api_manager._add_socket_to_socket_list(
            stream_id, ["arr"], ["!userData"])
        self.assertRegex(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!userData"], stream_id, self.binance_com_api_key,
                self.binance_com_api_secret),
            r'wss://stream.binance.com:9443/ws/.')

    def test_create_uri_single_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["trade"], ["bnbbtc"]),
            'wss://stream.binance.com:9443/stream?streams=bnbbtc@trade/')

    def test_create_uri_multi_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ['trade', 'kline_1h'], ['bnbbtc', 'ethbtc']),
            'wss://stream.binance.com:9443/stream?streams=bnbbtc@trade/ethbtc@trade/'
            'bnbbtc@kline_1h/ethbtc@kline_1h/')

    def test_create_uri_multi_with_ticker_com(self):
        self.assertFalse(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ['trade', 'kline_1h', '!ticker'], ['bnbbtc', 'ethbtc']))

    def tearDown(self):
        self.binance_com_websocket_api_manager.stop_manager_with_all_streams()