示例#1
0
    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)
示例#2
0
 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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
    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)
示例#8
0
    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)
示例#9
0
    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)
示例#10
0
    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)
示例#11
0
    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)
示例#12
0
    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)