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_disconnect(self): self.mock_ics.return_value.post.return_value = FakeResponse() self.mock_ics.return_value.patch.return_value = FakeResponsePatch() self.mock_ics.return_value.delete.return_value = FakeResponseDelete() connection = Rest(device=self.device, alias="rest", via="rest") connection.connect() connection.disconnect() self.mock_ics.return_value.post.assert_called_once() self.mock_ics.return_value.delete.assert_called_once() self.assertFalse(connection.connected)
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_delete_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().get.return_value = resp req().delete.return_value = resp connection.connect() resp.json = MagicMock(return_value={'imdata': []}) connection.delete(dn='temp') connection.disconnect() self.assertEqual(connection.connected, False)
def test_connection(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().get.return_value = resp connection.connect() self.assertEqual(connection.connected, True) connection.connect() self.assertEqual(connection.connected, True) # Now disconnect with patch('requests.Session') as req: 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_connection_wrong_code(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 = 404 req().post.return_value = resp with self.assertRaises(RequestException): connection.connect() self.assertEqual(connection.connected, False) # Now disconnect with patch('requests.Session') as req: connection.disconnect() self.assertEqual(connection.connected, False)
def test_get_connected_change_expected(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.side_effect = [resp, resp] connection.connect() resp.json = MagicMock(return_value={'imdata': []}) resp2.json = MagicMock(return_value={'imdata': []}) connection.get(dn='temp') self.assertEqual(connection.connected, True) connection.disconnect() self.assertEqual(connection.connected, False)
def test_delete_connected_wrong_status_change_expected(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 = 400 req().post.side_effect = [resp, resp] req().request.return_value = resp2 connection.connect() with self.assertRaises(RequestException): connection.delete(dn='/temp') self.assertEqual(connection.connected, True) connection.disconnect() self.assertEqual(connection.connected, False)
def test_delete_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().delete.return_value = resp2 req().post.side_effect = [resp, resp, resp2] connection.connect() resp.json = MagicMock(return_value={'imdata': []}) resp2.json = MagicMock(return_value={'imdata': []}) with self.assertRaises(RequestException): connection.delete(dn='temp') self.assertEqual(connection.connected, True) connection.disconnect() self.assertEqual(connection.connected, False)
def test_put_connected_change_expected(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().put.return_value = resp2 req().post.side_effect = [resp, resp, resp2] connection.connect() resp.json = MagicMock(return_value={'imdata': []}) resp2.json = MagicMock(return_value={'imdata': []}) connection.put(api_url='temp', payload={'payload': 'something'}, expected_status_code=300) self.assertEqual(connection.connected, True) 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 = 400 req().request.return_value = resp2 req().get.return_value = resp req().post.return_value = 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)