Remove six usage (2/2)
This repo does not support Python 2 anymore, so we don't need six for compatibility between Python2 and 3, convert six usage to Python 3 code. This changes urllib usage. mock.patch usage in heat_dashboard/test/tests/api/test_heat.py is modified to cope with the mix usage of urllib from python3 (in heat-dashboard) and six.moves.urllib (in heatclient). In the case of the mix usage, patching urllib.request.urlopen() only does not work as urllib.request.urlopen() is not called after resolving a lazy loading in six and the resolved object is six.moves.urllib.request is called. The previous code depends on the behavior in heatclient read_url_content() and the method should be mocked instead. Considering this, mocking in api/test_heat.py is modified to mock direct methods called in the heat-dashboard code. Co-Authored-By: Akihiro Motoki <amotoki@gmail.com> Change-Id: Icf3f889770242b02023fe22c405cfa2d823581a5 Needed-By: https://review.opendev.org/701743
This commit is contained in:
parent
7103caa069
commit
79ef24a784
|
@ -12,7 +12,7 @@
|
|||
|
||||
import contextlib
|
||||
|
||||
from six.moves.urllib import request
|
||||
from urllib import request
|
||||
|
||||
from django.conf import settings
|
||||
from oslo_serialization import jsonutils
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
import io
|
||||
|
||||
import mock
|
||||
import six
|
||||
|
||||
from django.conf import settings
|
||||
from django.test.utils import override_settings
|
||||
|
@ -257,8 +256,8 @@ class HeatApiTests(test.APITestCase):
|
|||
files = api.heat.get_template_files(template_data=tmpl)[0]
|
||||
self.assertEqual(files, expected_files)
|
||||
|
||||
@mock.patch.object(six.moves.urllib.request, 'urlopen')
|
||||
def test_get_template_files(self, mock_request):
|
||||
@mock.patch('heatclient.common.utils.read_url_content')
|
||||
def test_get_template_files(self, mock_read_url_content):
|
||||
tmpl = '''
|
||||
# comment
|
||||
|
||||
|
@ -276,14 +275,16 @@ class HeatApiTests(test.APITestCase):
|
|||
expected_files = {u'http://test.example/example': b'echo "test"'}
|
||||
url = 'http://test.example/example'
|
||||
data = b'echo "test"'
|
||||
mock_request.return_value = io.BytesIO(data)
|
||||
mock_read_url_content.return_value = data
|
||||
|
||||
files = api.heat.get_template_files(template_data=tmpl)[0]
|
||||
self.assertEqual(files, expected_files)
|
||||
mock_request.assert_called_once_with(url)
|
||||
mock_read_url_content.assert_called_once_with(url)
|
||||
|
||||
@mock.patch.object(six.moves.urllib.request, 'urlopen')
|
||||
def test_get_template_files_with_template_url(self, mock_request):
|
||||
@mock.patch('urllib.request.urlopen')
|
||||
@mock.patch('heatclient.common.utils.read_url_content')
|
||||
def test_get_template_files_with_template_url(self, mock_read_url_content,
|
||||
mock_request):
|
||||
url = 'https://test.example/example.yaml'
|
||||
data = b'''
|
||||
# comment
|
||||
|
@ -301,11 +302,14 @@ class HeatApiTests(test.APITestCase):
|
|||
'''
|
||||
data2 = b'echo "test"'
|
||||
expected_files = {'http://test.example/example': b'echo "test"'}
|
||||
mock_request.side_effect = \
|
||||
[io.BytesIO(data), io.BytesIO(data2)]
|
||||
mock_request.return_value = io.BytesIO(data)
|
||||
mock_read_url_content.return_value = data2
|
||||
|
||||
files = api.heat.get_template_files(template_url=url)[0]
|
||||
self.assertEqual(files, expected_files)
|
||||
mock_request.assert_called_once_with(url)
|
||||
mock_read_url_content.assert_called_once_with(
|
||||
'http://test.example/example')
|
||||
|
||||
def test_get_template_files_invalid(self):
|
||||
tmpl = '''
|
||||
|
|
Loading…
Reference in New Issue