示例#1
0
 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
示例#3
0
 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'])
示例#4
0
 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'}])
示例#5
0
 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')
示例#6
0
 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)
示例#7
0
 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)
示例#8
0
 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'}])
示例#9
0
 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