From 128b675355c87c1e11e700013b229a5b105886bb Mon Sep 17 00:00:00 2001 From: Adrien Perrin Date: Thu, 5 Sep 2024 08:56:28 +0000 Subject: [PATCH 1/3] prevent download tests from creating directory --- tests/test_downloaders.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/test_downloaders.py b/tests/test_downloaders.py index db0ebec..720a34a 100644 --- a/tests/test_downloaders.py +++ b/tests/test_downloaders.py @@ -845,7 +845,8 @@ def test_trigger_download_if_no_max_downloads_settings_found(self): download_manager = downloaders.DownloadManager() with mock.patch.object(downloaders.DownloadManager, 'get_provider_settings') as mock_p_s: mock_p_s.return_value = {} - with mock.patch.object( + with mock.patch('os.makedirs'), \ + mock.patch.object( downloaders.HTTPDownloader, 'check_and_download_url') as mock_dl_url: mock_dl_url.return_value='Dataset_1_test.nc' download_manager.download_dataset(Dataset.objects.get(pk=1), '') @@ -888,7 +889,8 @@ def test_download_dataset(self): 'data/provider_settings.yml')) dataset = Dataset.objects.get(pk=1) dataset_url = dataset.dataseturi_set.first().uri - with mock.patch.object(downloaders.HTTPDownloader, 'check_and_download_url') as mock_dl_url: + with mock.patch('os.makedirs'), \ + mock.patch.object(downloaders.HTTPDownloader, 'check_and_download_url') as mock_dl_url: mock_dl_url.return_value = 'dataset_1_file.h5' result = download_manager.download_dataset(dataset, '') mock_dl_url.assert_called_with( @@ -920,7 +922,8 @@ def test_download_dataset_locked(self): download_manager = downloaders.DownloadManager() dataset = Dataset.objects.get(pk=1) with mock.patch.object(downloaders.DownloadLock, '__enter__') as mock_lock: - with mock.patch.object( + with mock.patch('os.makedirs'), \ + mock.patch.object( downloaders.HTTPDownloader, 'check_and_download_url') as mock_dl_url: mock_lock.return_value = False with self.assertRaises(downloaders.TooManyDownloadsError): @@ -973,7 +976,8 @@ def test_download_no_downloader_found(self): download_manager.DOWNLOADERS = {} dataset = Dataset.objects.get(pk=1) - with mock.patch.object(downloaders.HTTPDownloader, 'check_and_download_url') as mock_dl_url: + with mock.patch('os.makedirs'), \ + mock.patch.object(downloaders.HTTPDownloader, 'check_and_download_url') as mock_dl_url: with self.assertLogs(downloaders.LOGGER): with self.assertRaises(KeyError): download_manager.download_dataset(dataset, '') From 1f48c66708e8bf93e450dbcb71dee8f422aad4e9 Mon Sep 17 00:00:00 2001 From: Adrien Perrin Date: Thu, 5 Sep 2024 09:20:55 +0000 Subject: [PATCH 2/3] mock redis config in download tests removes the need to set the env vars externally --- tests/test_downloaders.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_downloaders.py b/tests/test_downloaders.py index 720a34a..dc958b7 100644 --- a/tests/test_downloaders.py +++ b/tests/test_downloaders.py @@ -201,6 +201,11 @@ def simulate_no_space_left(file, url, connection): class HTTPDownloaderTestCase(unittest.TestCase): """Tests for the HTTPDownloader""" + def setUp(self): + mock.patch('geospaas_processing.utils.REDIS_HOST', None).start() + mock.patch('geospaas_processing.utils.REDIS_PORT', None).start() + self.addCleanup(mock.patch.stopall) + def test_build_oauth2_authentication(self): """Test the creation of an OAuth2 object""" fake_token = { From 61c3999cde7ff3708593660d68554c410c876f16 Mon Sep 17 00:00:00 2001 From: Adrien Perrin Date: Thu, 5 Sep 2024 09:30:12 +0000 Subject: [PATCH 3/3] add missing redis:lock test --- tests/test_utils.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index bc6ecd9..2fb9b15 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -18,10 +18,10 @@ class RedisLockTestCase(unittest.TestCase): """Tests for the redis_lock context manager""" def setUp(self): - patcher = mock.patch.object(utils, 'Redis') + self.redis_patcher = mock.patch.object(utils, 'Redis') mock.patch.object(utils, 'REDIS_HOST', 'test').start() mock.patch.object(utils, 'REDIS_PORT', 6379).start() - self.redis_mock = patcher.start() + self.redis_mock = self.redis_patcher.start() self.addCleanup(mock.patch.stopall) def test_redis_lock_standard_usage(self): @@ -41,6 +41,15 @@ def test_redis_lock_existing_lock(self): self.assertFalse(acquired) self.redis_mock.return_value.delete.assert_not_called() + def test_redis_lock_no_redis(self): + """The lock should always grant access if Redis is not + available + """ + self.redis_patcher.stop() + with mock.patch.object(utils, 'Redis', None): + with utils.redis_lock('id', 'oid') as acquired: + self.assertTrue(acquired) + self.redis_patcher.start() class UtilsTestCase(unittest.TestCase): """Tests for the utility functions"""