rbd-iscsi-client/rbd_iscsi_client/tests/test_client_request.py
Hemna a9db350555 Update to work with py38
Removed py27 tox tests and added py38 in tox.
Also fixed some pep8 violations.
2020-07-30 10:16:29 -04:00

130 lines
4.8 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""Tests for `rbd_iscsi_client` package."""
import unittest
from unittest import mock
from rbd_iscsi_client import client
from rbd_iscsi_client import exceptions
import requests
class TestRbd_iscsi_client(unittest.TestCase):
"""Tests for `rbd_iscsi_client` package."""
client = None
FAKE_URL = 'client://fake-url:0000'
FAKE_USER = 'user'
FAKE_PASSWORD = 'password'
def setUp(self):
self.client = client.RBDISCSIClient(self.FAKE_USER,
self.FAKE_PASSWORD,
self.FAKE_URL,
secure=False,
http_log_debug=True,
suppress_ssl_warnings=False,
timeout=None)
def tearDown(self):
self.client = None
def test_request_timeout(self):
self.client._http_log_req = mock.Mock()
self.client.timeout = 10
retest = mock.Mock()
http_method = 'fake this'
http_url = 'http://fake-url:0000'
with mock.patch('requests.request', retest, create=True):
# Test timeout exception
retest.side_effect = requests.exceptions.Timeout
self.assertRaises(exceptions.Timeout,
self.client.request,
http_url, http_method)
def test_request_redirects(self):
self.client._http_log_req = mock.Mock()
self.client.timeout = 10
retest = mock.Mock()
http_method = 'fake this'
http_url = 'http://fake-url:0000'
with mock.patch('requests.request', retest, create=True):
# Test too many redirects exception
retest.side_effect = requests.exceptions.TooManyRedirects
self.assertRaises(exceptions.TooManyRedirects,
self.client.request,
http_url, http_method)
def test_request_http_error(self):
self.client._http_log_req = mock.Mock()
self.client.timeout = 10
retest = mock.Mock()
http_method = 'fake this'
http_url = 'http://fake-url:0000'
with mock.patch('requests.request', retest, create=True):
# Test HTTP Error exception
retest.side_effect = requests.exceptions.HTTPError
self.assertRaises(exceptions.HTTPError,
self.client.request,
http_url, http_method)
def test_request_url_required(self):
self.client._http_log_req = mock.Mock()
self.client.timeout = 10
retest = mock.Mock()
http_method = 'fake this'
http_url = 'http://fake-url:0000'
with mock.patch('requests.request', retest, create=True):
# Test URL required exception
retest.side_effect = requests.exceptions.URLRequired
self.assertRaises(exceptions.URLRequired,
self.client.request,
http_url, http_method)
def test_request_exception(self):
self.client._http_log_req = mock.Mock()
self.client.timeout = 10
retest = mock.Mock()
http_method = 'fake this'
http_url = 'http://fake-url:0000'
with mock.patch('requests.request', retest, create=True):
# Test request exception
retest.side_effect = requests.exceptions.RequestException
self.assertRaises(exceptions.RequestException,
self.client.request,
http_url, http_method)
def test_request_ssl_error(self):
self.client._http_log_req = mock.Mock()
self.client.timeout = 10
retest = mock.Mock()
with mock.patch('requests.request', retest, create=True):
# Test requests exception
retest.side_effect = requests.exceptions.SSLError
self.assertRaisesRegexp(exceptions.SSLCertFailed, "failed")
def test_client_timeout_setting(self):
self.client._http_log_req = mock.Mock()
self.client.timeout = 10
retest = mock.Mock()
with mock.patch('requests.request', retest, create=True):
self.assertEqual(self.client.timeout, 10)