class BaseClientTest(unittest.TestCase):

    def setUp(self):
        self.client = APIClient('username', 'password', 'app_key', '/fail/')

    def test_client_certs(self):
        with self.assertRaises(CertsError):
            print(self.client.cert)

    @mock.patch('betfairlightweight.baseclient.os.listdir')
    def test_client_certs_mocked(self, mock_listdir):
        mock_listdir.return_value = ['.DS_Store', 'client-2048.crt', 'client-2048.key']
        assert self.client.cert == ['/fail/client-2048.crt', '/fail/client-2048.key']

    def test_set_session_token(self):
        self.client.set_session_token('session_token')
        assert self.client.session_token == 'session_token'
        assert self.client._login_time is not None

    def test_get_app_key(self):
        self.client.app_key = None
        with self.assertRaises(AppKeyError):
            self.client.get_app_key()
        self.client.app_key = 'app_key'

    @mock.patch('betfairlightweight.baseclient.os.environ')
    def test_get_app_key_mocked(self, mocked_environ):
        self.client.app_key = None
        mocked_environ.__get__ = mock.Mock(return_value='app_key')
        assert self.client.get_app_key() is None

    def test_client_headers(self):
        assert self.client.login_headers == {'X-Application': '1',
                                             'content-type': 'application/x-www-form-urlencoded'}
        assert self.client.keep_alive_headers == {'Accept': 'application/json',
                                                  'X-Application': self.client.app_key,
                                                  'X-Authentication': self.client.session_token,
                                                  'content-type': 'application/x-www-form-urlencoded'}
        assert self.client.request_headers == {'X-Application': self.client.app_key,
                                               'X-Authentication': self.client.session_token,
                                               'content-type': 'application/json'}

    def test_client_logged_in_session(self):
        self.client.set_session_token('session_token')

        assert self.client.session_expired is None
        self.client._login_time = datetime.datetime(2003, 8, 4, 12, 30, 45)
        assert self.client.session_expired is True

    def test_client_logout(self):
        self.client.client_logout()
        assert self.client._login_time is None
        assert self.client.session_token is None
Esempio n. 2
0
class BaseClientTest(unittest.TestCase):
    def setUp(self):
        self.client = APIClient('bf_username', 'password', 'app_key', '/fail/')

    def test_client_certs(self):
        with self.assertRaises(CertsError):
            print(self.client.cert)

    @mock.patch('betfairlightweight.baseclient.os.listdir')
    def test_client_certs_mocked(self, mock_listdir):
        mock_listdir.return_value = [
            '.DS_Store', 'client-2048.crt', 'client-2048.key'
        ]
        assert self.client.cert == [
            '/fail/client-2048.crt', '/fail/client-2048.key'
        ]

    @mock.patch('betfairlightweight.baseclient.os.listdir')
    def test_client_certs_missing(self, mock_listdir):
        mock_listdir.return_value = ['.DS_Store', 'client-2048.key']
        with self.assertRaises(CertsError):
            print(self.client.cert)

    def test_set_session_token(self):
        self.client.set_session_token('session_token')
        assert self.client.session_token == 'session_token'
        assert self.client._login_time is not None

    def test_get_password(self):
        self.client.password = None
        with self.assertRaises(PasswordError):
            self.client.get_password()

    def test_get_app_key(self):
        self.client.app_key = None
        with self.assertRaises(AppKeyError):
            self.client.get_app_key()
        self.client.app_key = 'app_key'

    @mock.patch('betfairlightweight.baseclient.os.environ')
    def test_get_app_key_mocked(self, mocked_environ):
        self.client.app_key = None
        mocked_environ.__get__ = mock.Mock(return_value='app_key')
        assert self.client.get_app_key() is None

    def test_client_headers(self):
        assert self.client.login_headers == {
            'X-Application': '1',
            'content-type': 'application/x-www-form-urlencoded'
        }
        assert self.client.keep_alive_headers == {
            'Accept': 'application/json',
            'X-Application': self.client.app_key,
            'X-Authentication': self.client.session_token,
            'content-type': 'application/x-www-form-urlencoded'
        }
        assert self.client.request_headers == {
            'X-Application': self.client.app_key,
            'X-Authentication': self.client.session_token,
            'content-type': 'application/json',
            'Accept-Encoding': 'gzip, deflate',
            'Connection': 'keep-alive'
        }

    def test_client_logged_in_session(self):
        self.client.set_session_token('session_token')

        assert self.client.session_expired is None
        self.client._login_time = datetime.datetime(2003, 8, 4, 12, 30, 45)
        assert self.client.session_expired is True

    def test_client_logout(self):
        self.client.client_logout()
        assert self.client._login_time is None
        assert self.client.session_token is None
Esempio n. 3
0
class BaseClientTest(unittest.TestCase):
    def setUp(self):
        self.client = APIClient("bf_username", "password", "app_key", "/fail/")

    def test_client_certs(self):
        with self.assertRaises(CertsError):
            print(self.client.cert)

    @mock.patch("betfairlightweight.baseclient.os.listdir")
    def test_client_certs_mocked(self, mock_listdir):
        mock_listdir.return_value = [
            ".DS_Store", "client-2048.crt", "client-2048.key"
        ]
        assert self.client.cert == [
            "/fail/client-2048.crt", "/fail/client-2048.key"
        ]

    @mock.patch("betfairlightweight.baseclient.os.listdir")
    def test_client_certs_missing(self, mock_listdir):
        mock_listdir.return_value = [".DS_Store", "client-2048.key"]
        with self.assertRaises(CertsError):
            print(self.client.cert)

    def test_set_session_token(self):
        self.client.set_session_token("session_token")
        assert self.client.session_token == "session_token"
        assert self.client._login_time is not None

    def test_get_password(self):
        self.client.password = "******"
        assert self.client.get_password() == "test"

    def test_get_password_error(self):
        self.client.password = None
        with self.assertRaises(PasswordError):
            self.client.get_password()

    def test_get_app_key(self):
        self.client.app_key = "app_key"
        assert self.client.get_app_key() == "app_key"

    def test_get_app_key_error(self):
        self.client.app_key = None
        with self.assertRaises(AppKeyError):
            self.client.get_app_key()

    @mock.patch("betfairlightweight.baseclient.os.environ")
    def test_get_app_key_mocked(self, mocked_environ):
        self.client.app_key = None
        mocked_environ.__get__ = mock.Mock(return_value="app_key")
        self.assertEqual(self.client.get_app_key(), mocked_environ.get())

    @mock.patch("betfairlightweight.baseclient.USER_AGENT")
    def test_client_headers(self, mock_user_agent):
        assert self.client.login_headers == {
            "Accept": "application/json",
            "X-Application": self.client.app_key,
            "content-type": "application/x-www-form-urlencoded",
            "User-Agent": mock_user_agent,
        }
        assert self.client.keep_alive_headers == {
            "Accept": "application/json",
            "X-Application": self.client.app_key,
            "X-Authentication": self.client.session_token,
            "content-type": "application/x-www-form-urlencoded",
            "User-Agent": mock_user_agent,
        }
        assert self.client.request_headers == {
            "X-Application": self.client.app_key,
            "X-Authentication": self.client.session_token,
            "content-type": "application/json",
            "Accept-Encoding": "gzip, deflate",
            "Connection": "keep-alive",
            "User-Agent": mock_user_agent,
        }

    def test_client_logged_in_session(self):
        assert self.client.session_expired is True
        self.client.set_session_token("session_token")
        assert self.client.session_expired is False
        self.client._login_time = 959814000
        assert self.client.session_expired is True

    def test_client_logout(self):
        self.client.client_logout()
        assert self.client._login_time is None
        assert self.client.session_token is None