Merge pull request #508 from Mohamedemad4/added-websocket-client

feature(websocket): Add websocket client
This commit is contained in:
Cameron Yick
2021-07-19 18:20:38 -04:00
committed by GitHub
6 changed files with 212 additions and 0 deletions

44
tests/test_wsclient.py Normal file
View File

@@ -0,0 +1,44 @@
import os
from unittest import TestCase,mock
from tiingo.wsclient import TiingoWebsocketClient
from tiingo.exceptions import MissingRequiredArgumentError
class TestRestClientWithSession(TestCase):
def setUp(self):
def msg_cb(msg):
print(msg)
self.cb=msg_cb
self.config = {
'eventName':'subscribe',
'authorization':os.getenv("TIINGO_API_KEY"),
#see https://api.tiingo.com/documentation/websockets/iex > Request for more info
'eventData': {
'thresholdLevel':5
}
}
# test for missing or incorrectly supplied endpoints
def test_missing_or_wrong_endpoint(self):
with self.assertRaises(AttributeError) as ex:
TiingoWebsocketClient(config=self.config,on_msg_cb=self.cb)
self.assertTrue(type(ex.exception)==AttributeError)
with self.assertRaises(AttributeError) as ex:
TiingoWebsocketClient(config=self.config,endpoint='wq',on_msg_cb=self.cb)
self.assertTrue(type(ex.exception)==AttributeError)
# test for missing callback argument
def test_missing_msg_cb(self):
with self.assertRaises(MissingRequiredArgumentError) as ex:
TiingoWebsocketClient(config=self.config,endpoint='iex')
self.assertTrue(type(ex.exception)==MissingRequiredArgumentError)
# test for missing API keys in config dict and in os env
def test_missing_api_key(self):
with mock.patch.dict(os.environ, {}, clear=True): #clear env vars including the TIINGO_API_KEY
with self.assertRaises(RuntimeError) as ex:
TiingoWebsocketClient(config={},endpoint='iex',on_msg_cb=self.cb)
self.assertTrue(type(ex.exception)==RuntimeError)