Skip to content

Commit b1d0f95

Browse files
committed
Add make_mock_response to simplify setup in unit test #1383
Signed-off-by: tdruez <[email protected]>
1 parent 4080646 commit b1d0f95

File tree

5 files changed

+24
-42
lines changed

5 files changed

+24
-42
lines changed

scanpipe/tests/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,16 @@ def make_message(project, **data):
101101
)
102102

103103

104+
def make_mock_response(url, content=b"\x00", status_code=200, headers=None):
105+
"""Return a mock HTTP response object for testing purposes."""
106+
response = mock.Mock()
107+
response.url = url
108+
response.content = content
109+
response.status_code = status_code
110+
response.headers = headers or {}
111+
return response
112+
113+
104114
resource_data1 = {
105115
"path": "notice.NOTICE",
106116
"type": "file",

scanpipe/tests/pipes/test_fetch.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from requests import auth as request_auth
3030

3131
from scanpipe.pipes import fetch
32+
from scanpipe.tests import make_mock_response
3233

3334

3435
class ScanPipeFetchPipesTest(TestCase):
@@ -71,25 +72,19 @@ def test_scanpipe_pipes_fetch_get_fetcher(self):
7172
def test_scanpipe_pipes_fetch_http(self, mock_get):
7273
url = "https://example.com/filename.zip"
7374

74-
mock_get.return_value = mock.Mock(
75-
content=b"\x00", headers={}, status_code=200, url=url
76-
)
75+
mock_get.return_value = make_mock_response(url=url)
7776
downloaded_file = fetch.fetch_http(url)
7877
self.assertTrue(Path(downloaded_file.directory, "filename.zip").exists())
7978

8079
url_with_spaces = "https://example.com/space%20in%20name.zip"
81-
mock_get.return_value = mock.Mock(
82-
content=b"\x00", headers={}, status_code=200, url=url_with_spaces
83-
)
80+
mock_get.return_value = make_mock_response(url=url_with_spaces)
8481
downloaded_file = fetch.fetch_http(url)
8582
self.assertTrue(Path(downloaded_file.directory, "space in name.zip").exists())
8683

8784
headers = {
8885
"content-disposition": 'attachment; filename="another_name.zip"',
8986
}
90-
mock_get.return_value = mock.Mock(
91-
content=b"\x00", headers=headers, status_code=200, url=url
92-
)
87+
mock_get.return_value = make_mock_response(url=url, headers=headers)
9388
downloaded_file = fetch.fetch_http(url)
9489
self.assertTrue(Path(downloaded_file.directory, "another_name.zip").exists())
9590

@@ -188,9 +183,7 @@ def test_scanpipe_pipes_fetch_fetch_urls(self, mock_get):
188183
"https://example.com/archive.tar.gz",
189184
]
190185

191-
mock_get.return_value = mock.Mock(
192-
content=b"\x00", headers={}, status_code=200, url="mocked_url"
193-
)
186+
mock_get.return_value = make_mock_response(url="mocked_url")
194187
downloads, errors = fetch.fetch_urls(urls)
195188
self.assertEqual(2, len(downloads))
196189
self.assertEqual(urls[0], downloads[0].uri)

scanpipe/tests/test_commands.py

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
from scanpipe.models import WebhookSubscription
4949
from scanpipe.pipes import flag
5050
from scanpipe.pipes import purldb
51+
from scanpipe.tests import make_mock_response
5152
from scanpipe.tests import make_package
5253
from scanpipe.tests import make_project
5354
from scanpipe.tests import make_resource_file
@@ -963,12 +964,7 @@ def test_scanpipe_management_command_purldb_scan_queue_worker(
963964
mock_get_latest_output.return_value = (
964965
self.data / "scancode" / "is-npm-1.0.0_summary.json"
965966
)
966-
mock_download_get.return_value = mock.Mock(
967-
content=b"\x00",
968-
headers={},
969-
status_code=200,
970-
url=download_url,
971-
)
967+
mock_download_get.return_value = make_mock_response(url=download_url)
972968

973969
self.assertFalse(WebhookSubscription.objects.exists())
974970

@@ -1016,12 +1012,7 @@ def test_scanpipe_management_command_purldb_scan_queue_worker_failure(
10161012
"status": f"updated scannable_uri {scannable_uri_uuid} "
10171013
"scan_status to 'failed'"
10181014
}
1019-
mock_download_get.return_value = mock.Mock(
1020-
content=b"\x00",
1021-
headers={},
1022-
status_code=200,
1023-
url=download_url,
1024-
)
1015+
mock_download_get.return_value = make_mock_response(url=download_url)
10251016

10261017
options = [
10271018
"--max-loops",
@@ -1075,18 +1066,8 @@ def test_scanpipe_management_command_purldb_scan_queue_worker_continue_after_fai
10751066
]
10761067

10771068
mock_download_get.side_effect = [
1078-
mock.Mock(
1079-
content=b"\x00",
1080-
headers={},
1081-
status_code=200,
1082-
url=download_url1,
1083-
),
1084-
mock.Mock(
1085-
content=b"\x00",
1086-
headers={},
1087-
status_code=200,
1088-
url=download_url2,
1089-
),
1069+
make_mock_response(url=download_url1),
1070+
make_mock_response(url=download_url2),
10901071
]
10911072

10921073
mock_request_post.side_effect = [

scanpipe/tests/test_models.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
from scanpipe.tests import license_policies_index
7979
from scanpipe.tests import make_dependency
8080
from scanpipe.tests import make_message
81+
from scanpipe.tests import make_mock_response
8182
from scanpipe.tests import make_package
8283
from scanpipe.tests import make_project
8384
from scanpipe.tests import make_resource_directory
@@ -1473,9 +1474,7 @@ def test_scanpipe_input_source_model_delete_file(self):
14731474
@mock.patch("requests.sessions.Session.get")
14741475
def test_scanpipe_input_source_model_fetch(self, mock_get):
14751476
download_url = "https://download.url/file.zip"
1476-
mock_get.return_value = mock.Mock(
1477-
content=b"\x00", headers={}, status_code=200, url=download_url
1478-
)
1477+
mock_get.return_value = make_mock_response(url=download_url)
14791478

14801479
input_source = self.project1.add_input_source(download_url=download_url)
14811480
destination = input_source.fetch()

scanpipe/tests/test_pipelines.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
from scanpipe.pipes import scancode
5454
from scanpipe.pipes.input import copy_input
5555
from scanpipe.tests import FIXTURES_REGEN
56+
from scanpipe.tests import make_mock_response
5657
from scanpipe.tests import make_package
5758
from scanpipe.tests import make_project
5859
from scanpipe.tests import package_data1
@@ -226,9 +227,7 @@ def test_scanpipe_pipeline_class_download_missing_inputs(self, mock_get):
226227
self.assertEqual("", run.log)
227228

228229
download_url = "https://download.url/file.zip"
229-
mock_get.return_value = mock.Mock(
230-
content=b"\x00", headers={}, status_code=200, url=download_url
231-
)
230+
mock_get.return_value = make_mock_response(url=download_url)
232231
input_source2 = project1.add_input_source(download_url=download_url)
233232
pipeline.download_missing_inputs()
234233
self.assertIn("Fetching input from https://download.url/file.zip", run.log)

0 commit comments

Comments
 (0)