def test_set_call(self): base = mock.Mock() base.receive_sentence.return_value = [b'!done', b'.tag=1'] communicator = api_communicator.ApiCommunicator(base) communicator.call('/interface/', 'set', {'x': b'y'}) base.send_sentence.assert_called_once_with( [b'/interface/set', b'=x=y', b'.tag=1'])
def get_api(self): socket = mock.MagicMock() base = base_api.Connection(socket) base.receive_sentence = mock.Mock(return_value=[b'!done', b'.tag=1']) communicator = api_communicator.ApiCommunicator(base) routeros_api = api.RouterOsApi(communicator) return routeros_api
def test_query_call(self): base = mock.Mock() base.receive_sentence.return_value = [b'!done', b'.tag=1'] communicator = api_communicator.ApiCommunicator(base) communicator.call('/interface/', 'print', queries={'x': 'y'}).get() base.send_sentence.assert_called_once_with( [b'/interface/print', b'?x=y', b'.tag=1'])
def test_normal_call(self): base = mock.Mock() base.receive_sentence.side_effect = [[b'!re', b'=x=y', b'.tag=1'], [b'!done', b'.tag=1']] communicator = api_communicator.ApiCommunicator(base) response = communicator.call('/interface/', 'print').get() self.assertEqual(response, [{'x': b'y'}])
def test_login_call(self): base = mock.Mock() base.receive_sentence.return_value = [ b'!done', b'=ret=some-hex', b'.tag=1' ] communicator = api_communicator.ApiCommunicator(base) response = communicator.call('/', 'login').get() self.assertEqual(response.done_message['ret'], b'some-hex')
def test_error_call(self): base = mock.Mock() base.receive_sentence.side_effect = [[ b'!trap', b'=message=y', b'.tag=1' ], [b'!done', b'.tag=1']] communicator = api_communicator.ApiCommunicator(base) promise = communicator.call('/file/', 'print') self.assertRaises(exceptions.RouterOsApiCommunicationError, promise.get)
def test_async_error_raises_when_synchronizing(self): base = mock.Mock() base.receive_sentence.side_effect = [[ b'!trap', b'=message=m', b'.tag=1' ], [b'!done', b'.tag=2'], [b'!done', b'.tag=1']] communicator = api_communicator.ApiCommunicator(base) promise = communicator.call('/interface/', 'print') communicator.call('/interface/', 'print').get() self.assertRaises(exceptions.RouterOsApiCommunicationError, promise.get)
def test_mixed_calls(self): base = mock.Mock() base.receive_sentence.side_effect = [[b'!re', b'=x1=y1', b'.tag=1'], [b'!re', b'=x2=y2', b'.tag=2'], [b'!done', b'.tag=1'], [b'!done', b'.tag=2']] communicator = api_communicator.ApiCommunicator(base) promise = communicator.call('/interface/', 'print') response2 = communicator.call('/interface/', 'print').get() response1 = promise.get() self.assertEqual(response1, [{'x1': b'y1'}]) self.assertEqual(response2, [{'x2': b'y2'}])
def get_api(self): if not self.connected: self.socket = api_socket.get_socket(self.host, self.port, timeout=self.socket_timeout) base = base_api.Connection(self.socket) communicator = api_communicator.ApiCommunicator(base) self.api = RouterOsApi(communicator) for handler in self._get_exception_handlers(): communicator.add_exception_handler(handler) self.api.login(self.username, self.password) self.connected = True return self.api