def test_request_exception_retry(self): connection = Rest(device=self.device, alias='rest', via='rest') self.assertEqual(connection.connected, False) with patch('requests.Session') as req: resp = Response() resp.status_code = 200 req().post.side_effect = [resp, resp] req().request.side_effect = [TimeoutError('Timeout'), resp] connection.connect() resp.json = MagicMock(return_value={'imdata': []}) with self.assertLogs( logger='rest.connector.libs.nxos.implementation', level=logging.INFO) as log_cm: connection.post(dn='temp', payload={'payload': 'something'}, retry_wait=0) self.assertIn('TimeoutError', '\n'.join(log_cm.output)) self.assertEqual(connection.connected, True) connection.disconnect() self.assertEqual(connection.connected, False)
def test_post_connected(self): connection = Rest(device=self.device, alias='rest', via='rest') self.assertEqual(connection.connected, False) with patch('requests.Session') as req: resp = Response() resp.status_code = 200 req().post.return_value = resp connection.connect() resp.json = MagicMock(return_value={'imdata': []}) connection.post(dn='temp', payload={'payload': 'something'}) connection.disconnect() self.assertEqual(connection.connected, False)
def test_post_xml_connected(self): connection = Rest(device=self.device, alias='rest', via='rest') self.assertEqual(connection.connected, False) with patch('requests.Session') as req: resp = Response() resp.status_code = 200 req().post.return_value = resp connection.connect() resp._content = '<?xml version="1.0" encoding="UTF-8"?>' \ '<imdata totalCount="0"></imdata>' connection.post(dn='temp', xml_payload=True, payload='<fvTenant name="ExampleCorp"/>') connection.disconnect() self.assertEqual(connection.connected, False)
def test_post_connected_wrong_status(self): connection = Rest(device=self.device, alias='rest', via='rest') self.assertEqual(connection.connected, False) with patch('requests.Session') as req: resp = Response() resp.status_code = 200 resp2 = Response() resp2.status_code = 300 req().get.return_value = resp2 req().post.side_effect = [resp, resp, resp2, resp2] connection.connect() resp.json = MagicMock(return_value={'imdata': []}) resp2.json = MagicMock(return_value={'imdata': []}) with self.assertRaises(RequestException): connection.post(dn='temp', payload={'payload': 'something'}) self.assertEqual(connection.connected, True) connection.disconnect() self.assertEqual(connection.connected, False)
def test_post_not_connected(self): connection = Rest(device=self.device, alias='rest', via='rest') with self.assertRaises(Exception): connection.post(dn='temp', payload={'payload': 'something'})