a9db350555
Removed py27 tox tests and added py38 in tox. Also fixed some pep8 violations.
130 lines
4.8 KiB
Python
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)
|