diff options
author | James Falcon <therealfalcon@gmail.com> | 2021-08-12 20:06:28 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-12 19:06:28 -0600 |
commit | 1c3b10b58768ec4c70384f4a7af7ce956518fe7c (patch) | |
tree | d01279fb517bde8d98bb0be9ca032043883007b8 | |
parent | e119ceceb7d76af7d75c04a8779b9c5fc68083a8 (diff) | |
download | vyos-cloud-init-1c3b10b58768ec4c70384f4a7af7ce956518fe7c.tar.gz vyos-cloud-init-1c3b10b58768ec4c70384f4a7af7ce956518fe7c.zip |
Replace broken httpretty tests with mock (SC-324) (#973)
* Replace broken httpretty tests with mock
Certain versions of python/httpretty don't work correctly using https
URIs. #960 recently added httpretty tests using https. This commit
replaces the httpretty tests that were failing on https with mocks of
readurl instead.
-rw-r--r-- | tests/unittests/test_handler/test_handler_puppet.py | 59 |
1 files changed, 17 insertions, 42 deletions
diff --git a/tests/unittests/test_handler/test_handler_puppet.py b/tests/unittests/test_handler/test_handler_puppet.py index c0ba2e3c..b7891ab4 100644 --- a/tests/unittests/test_handler/test_handler_puppet.py +++ b/tests/unittests/test_handler/test_handler_puppet.py @@ -5,7 +5,6 @@ from cloudinit.sources import DataSourceNone from cloudinit import (distros, helpers, cloud, util) from cloudinit.tests.helpers import CiTestCase, HttprettyTestCase, mock -import httpretty import logging import textwrap @@ -309,62 +308,45 @@ class TestPuppetHandle(CiTestCase): m_subp.call_args_list) -class TestInstallPuppetAio(HttprettyTestCase): +URL_MOCK = mock.Mock() +URL_MOCK.contents = b'#!/bin/bash\necho "Hi Mom"' - @mock.patch('cloudinit.config.cc_puppet.subp.subp', - return_value=(None, None)) - def test_install_with_default_arguments(self, m_subp): - """Install AIO with no arguments""" - response = b'#!/bin/bash\necho "Hi Mom"' - httpretty.register_uri( - httpretty.GET, cc_puppet.AIO_INSTALL_URL, - body=response, status=200) +@mock.patch('cloudinit.config.cc_puppet.subp.subp', return_value=(None, None)) +@mock.patch( + 'cloudinit.config.cc_puppet.url_helper.readurl', + return_value=URL_MOCK, autospec=True, +) +class TestInstallPuppetAio(HttprettyTestCase): + def test_install_with_default_arguments(self, m_readurl, m_subp): + """Install AIO with no arguments""" cc_puppet.install_puppet_aio() self.assertEqual( [mock.call([mock.ANY, '--cleanup'], capture=False)], m_subp.call_args_list) - @mock.patch('cloudinit.config.cc_puppet.subp.subp', - return_value=(None, None)) - def test_install_with_custom_url(self, m_subp): + def test_install_with_custom_url(self, m_readurl, m_subp): """Install AIO from custom URL""" - response = b'#!/bin/bash\necho "Hi Mom"' - url = 'http://custom.url/path/to/script.sh' - httpretty.register_uri( - httpretty.GET, url, body=response, status=200) - cc_puppet.install_puppet_aio('http://custom.url/path/to/script.sh') + m_readurl.assert_called_with( + url='http://custom.url/path/to/script.sh', + retries=5) self.assertEqual( [mock.call([mock.ANY, '--cleanup'], capture=False)], m_subp.call_args_list) - @mock.patch('cloudinit.config.cc_puppet.subp.subp', - return_value=(None, None)) - def test_install_with_version(self, m_subp): + def test_install_with_version(self, m_readurl, m_subp): """Install AIO with specific version""" - response = b'#!/bin/bash\necho "Hi Mom"' - httpretty.register_uri( - httpretty.GET, cc_puppet.AIO_INSTALL_URL, - body=response, status=200) - cc_puppet.install_puppet_aio(cc_puppet.AIO_INSTALL_URL, '7.6.0') self.assertEqual( [mock.call([mock.ANY, '-v', '7.6.0', '--cleanup'], capture=False)], m_subp.call_args_list) - @mock.patch('cloudinit.config.cc_puppet.subp.subp', - return_value=(None, None)) - def test_install_with_collection(self, m_subp): + def test_install_with_collection(self, m_readurl, m_subp): """Install AIO with specific collection""" - response = b'#!/bin/bash\necho "Hi Mom"' - httpretty.register_uri( - httpretty.GET, cc_puppet.AIO_INSTALL_URL, - body=response, status=200) - cc_puppet.install_puppet_aio( cc_puppet.AIO_INSTALL_URL, None, 'puppet6-nightly') @@ -373,15 +355,8 @@ class TestInstallPuppetAio(HttprettyTestCase): capture=False)], m_subp.call_args_list) - @mock.patch('cloudinit.config.cc_puppet.subp.subp', - return_value=(None, None)) - def test_install_with_no_cleanup(self, m_subp): + def test_install_with_no_cleanup(self, m_readurl, m_subp): """Install AIO with no cleanup""" - response = b'#!/bin/bash\necho "Hi Mom"' - httpretty.register_uri( - httpretty.GET, cc_puppet.AIO_INSTALL_URL, - body=response, status=200) - cc_puppet.install_puppet_aio( cc_puppet.AIO_INSTALL_URL, None, None, False) |