def test_receive_loop_exit(self, mocker): sock = self._get_mocked_socket(mocker, True) with mocker.patch('socket.create_connection', return_value=sock): cl = client.OgnClient('username') cl.connect() cl._kill = True cl._receive_loop(lambda x: None, None)
def test_receive_loop_parse(self, mocker): sock = self._get_mocked_socket(mocker, True) with mocker.patch('socket.create_connection', return_value=sock): cl = client.OgnClient('username') cl.connect() cb = mocker.MagicMock(side_effect=lambda x: cl.disconnect()) cl._receive_loop(cb, None) cl._receive_loop(cb, lambda x: x)
def test_receive_loop_raw(self, mocker): sock = self._get_mocked_socket(mocker, True) with mocker.patch('socket.create_connection', return_value=sock): cl = client.OgnClient('username') cl.connect() cb = mocker.MagicMock(side_effect=lambda x: cl.disconnect()) cl._receive_loop(cb, None) cb.assert_called_once_with(APRS_RECORDS[0])
def test_gen_auth_msg(self): cl = client.OgnClient('username') msg = cl._gen_auth_message() user, username, pass_, passcode, *other = msg.split(' ') assert user == 'user' assert pass_ == 'pass' assert username == 'username' assert passcode == '-1' assert len(other) == 3
def test_disconnect(self, mocker): sock = self._get_mocked_socket(mocker) with mocker.patch('socket.create_connection', return_value=sock): cl = client.OgnClient('username') cl.connect() cl.disconnect() assert cl._kill assert sock.close.call_count > 0 assert cl._sock_file.close.call_count > 0
def test_reconnect_fail(self, mocker): mocker.patch('time.sleep') cl = client.OgnClient('username') cl.connect = mocker.MagicMock(side_effect=BrokenPipeError) with pytest.raises(ConnectionError): cl._reconnect(retries=10, wait_period=5) assert time.sleep.call_count == 10 assert cl.connect.call_count == 10 time.sleep.assert_called_with(5)
def test_connect_failed_auth(self, mocker): sock = self._get_mocked_socket(mocker) with mocker.patch('socket.create_connection', return_value=sock): cl = client.OgnClient('username') cl._validate_login = mocker.MagicMock( side_effect=exceptions.ParseError) with pytest.raises(exceptions.ParseError): cl.connect() cl._sock_file.close.call_count == 1 cl._socket.close.call_count == 1
def test_send_fail_once(self, mocker): sock = self._get_mocked_socket(mocker, True) mocker.patch('socket.create_connection', return_value=sock) cl = client.OgnClient('username') cl._socket = mocker.Mock() cl._socket.sendall = mocker.Mock(side_effect=[BrokenPipeError, None]) cl._reconnect = mocker.Mock() cl.send('\n\ntest\nmessage\n\n\n') assert cl._socket.sendall.call_count == 2 assert cl._reconnect.call_count == 1
def test_receive_reconnect(self, mocker): sock = self._get_mocked_socket(mocker, True) mocker.patch('socket.create_connection', return_value=sock) mocker.patch('time.sleep') cl = client.OgnClient('username') cl._receive_loop = mocker.MagicMock(side_effect=BrokenPipeError) cl._reconnect = mocker.MagicMock(side_effect=ConnectionError) cl.connect() with pytest.raises(ConnectionError): cl.receive(lambda x: None) assert cl._reconnect.call_count == 1
def test_connect_sock_file(self, mocker): sock = self._get_mocked_socket(mocker) with mocker.patch('socket.create_connection', return_value=sock): cl = client.OgnClient('username') cl.connect() assert not cl._sock_file.close.called
def test_connect_responses(self, mocker): sock = self._get_mocked_socket(mocker) with mocker.patch('socket.create_connection', return_value=sock): cl = client.OgnClient('username') cl.connect() assert cl._authenticated
def test_init_port_filter(self): cl = client.OgnClient('username', filter_='filter') assert cl.port == client.OgnClient.APRS_PORT_FILTER
def test_init_port_set(self): cl = client.OgnClient('username', port=-1, filter_='filter') assert cl.port == -1 cl = client.OgnClient('username', port=-1) assert cl.port == -1
def test_validate_login_not_login(self): cl = client.OgnClient('username', passcode='123456') with pytest.raises(exceptions.LoginError): cl._validate_login('# aprsc 2.1.4-g408ed49')
def test_validate_login_parse_error(self): cl = client.OgnClient('username', passcode='123456') with pytest.raises(exceptions.ParseError): cl._validate_login('# logresp 2.1.4-g408ed49')
def test_validate_login_failed_auth(self): cl = client.OgnClient('username', passcode='123456') assert not cl._validate_login('# logresp user unverified, ' 'server GLIDERN3')
def _setup_keepalive_client(self, mocker, ts): cl = client.OgnClient('username') cl.send = mocker.MagicMock() cl._last_send = ts return cl
def test_send_strip(self, mocker): cl = client.OgnClient('username') cl._socket = mocker.Mock() cl.send('\n\ntest\nmessage\n\n\n') cl._socket.sendall.assert_called_once_with(b'test\nmessage\n')
def test_validate_login_unauth(self): cl = client.OgnClient('username') assert not cl._validate_login('# logresp user unverified, ' 'server GLIDERN3')
def test_receive_exit(self, mocker): sock = self._get_mocked_socket(mocker, True) with mocker.patch('socket.create_connection', return_value=sock): cl = client.OgnClient('username') cl.connect() cl.receive(lambda x: cl.disconnect())
def test_gen_auth_msg_filter(self): cl = client.OgnClient('username', filter_='special_filter') msg = cl._gen_auth_message() assert msg.endswith('filter special_filter')
def test_send_last_send(self, mocker): cl = client.OgnClient('username') cl._socket = mocker.Mock() cl.send('test message') assert time.time() - cl._last_send < 0.001
def test_init_set_server(self): server = 'example.com' cl = client.OgnClient('username', server=server) assert cl.server != client.OgnClient.APRS_SERVER assert cl.server == server
def test_validate_login_error(self): cl = client.OgnClient('username', passcode='123456') with pytest.raises(exceptions.LoginError): assert not cl._validate_login('# logresp user blocked, server ' 'GLIDERN3')
def test_validate_login_success(self): cl = client.OgnClient('username', passcode='123456') assert cl._validate_login('# logresp user verified, server GLIDERN3')
def test_init_default_server(self): cl = client.OgnClient('username') assert cl.server == client.OgnClient.APRS_SERVER
def test_init_port(self): cl = client.OgnClient('username') assert cl.port == client.OgnClient.APRS_PORT_FULL
def test_reconnect_success(self, mocker): cl = client.OgnClient('username') cl.connect = mocker.MagicMock() cl._reconnect(retries=10, wait_period=5) assert cl.connect.call_count == 1