コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
    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])
コード例 #4
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
コード例 #5
0
    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
コード例 #6
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)
コード例 #7
0
    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
コード例 #8
0
    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
コード例 #9
0
    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
コード例 #10
0
 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
コード例 #11
0
 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
コード例 #12
0
 def test_init_port_filter(self):
     cl = client.OgnClient('username', filter_='filter')
     assert cl.port == client.OgnClient.APRS_PORT_FILTER
コード例 #13
0
 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
コード例 #14
0
 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')
コード例 #15
0
 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')
コード例 #16
0
 def test_validate_login_failed_auth(self):
     cl = client.OgnClient('username', passcode='123456')
     assert not cl._validate_login('# logresp user unverified, '
                                   'server GLIDERN3')
コード例 #17
0
    def _setup_keepalive_client(self, mocker, ts):
        cl = client.OgnClient('username')
        cl.send = mocker.MagicMock()
        cl._last_send = ts

        return cl
コード例 #18
0
 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')
コード例 #19
0
 def test_validate_login_unauth(self):
     cl = client.OgnClient('username')
     assert not cl._validate_login('# logresp user unverified, '
                                   'server GLIDERN3')
コード例 #20
0
 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())
コード例 #21
0
 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')
コード例 #22
0
 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
コード例 #23
0
 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
コード例 #24
0
 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')
コード例 #25
0
 def test_validate_login_success(self):
     cl = client.OgnClient('username', passcode='123456')
     assert cl._validate_login('# logresp user verified, server GLIDERN3')
コード例 #26
0
 def test_init_default_server(self):
     cl = client.OgnClient('username')
     assert cl.server == client.OgnClient.APRS_SERVER
コード例 #27
0
 def test_init_port(self):
     cl = client.OgnClient('username')
     assert cl.port == client.OgnClient.APRS_PORT_FULL
コード例 #28
0
    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