-
Notifications
You must be signed in to change notification settings - Fork 56
Expand file tree
/
Copy pathtest_network_upload.py
More file actions
111 lines (94 loc) · 3.3 KB
/
test_network_upload.py
File metadata and controls
111 lines (94 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import pathlib
from unittest.mock import MagicMock, patch
import click
import pytest
from click.testing import CliRunner
from codecov_cli.commands.network_upload import network_upload
from codecov_cli.types import UploadCollectionResult
@pytest.fixture
def mock_network_finder():
with patch("codecov_cli.commands.network_upload.NetworkFinder") as mock:
yield mock
@pytest.fixture
def mock_upload_sender():
with patch("codecov_cli.commands.network_upload.UploadSender") as mock:
yield mock
def test_network_upload_dry_run(mock_network_finder):
mock_network_finder.return_value.find_files.return_value = ["file1.py", "file2.py"]
runner = CliRunner()
result = runner.invoke(
network_upload,
[
"--root-dir",
"/test/path",
"--network-filter",
".*\\.py",
"--dry-run",
"--commit-sha",
"abcdef123456",
"--token",
"test-token",
],
)
assert result.exit_code == 0
assert "Dry run: No files will be uploaded." in result.output
assert "file1.py" in result.output
assert "file2.py" in result.output
def test_network_upload_no_files_found(mock_network_finder):
mock_network_finder.return_value.find_files.return_value = []
runner = CliRunner()
result = runner.invoke(
network_upload,
[
"--root-dir",
"/test/path",
"--commit-sha",
"abcdef123456",
"--token",
"test-token",
],
)
assert result.exit_code == 0
assert "No files found in the network." in result.output
def test_network_upload_success(mock_network_finder, mock_upload_sender):
mock_network_finder.return_value.find_files.return_value = ["file1.py", "file2.py"]
mock_sender = MagicMock()
mock_sender.send_upload_data.return_value = MagicMock(status_code=200)
mock_upload_sender.return_value = mock_sender
runner = CliRunner()
result = runner.invoke(
network_upload,
[
"--root-dir",
"/test/path",
"--commit-sha",
"abcdef123456",
"--token",
"test-token",
],
)
assert result.exit_code == 0
assert "Network files successfully uploaded to Codecov." in result.output
mock_sender.send_upload_data.assert_called_once()
call_args = mock_sender.send_upload_data.call_args[0]
assert isinstance(call_args[0], UploadCollectionResult)
assert call_args[0].network == ["file1.py", "file2.py"]
assert call_args[1] == "abcdef123456" # commit_sha
assert call_args[2] == "test-token" # token
def test_network_upload_failure(mock_network_finder, mock_upload_sender):
mock_network_finder.return_value.find_files.return_value = ["file1.py", "file2.py"]
mock_sender = MagicMock()
mock_sender.send_upload_data.return_value = MagicMock(status_code=400)
mock_upload_sender.return_value = mock_sender
runner = CliRunner()
result = runner.invoke(
network_upload,
[
"--root-dir", "/test/path",
"--commit-sha", "abcdef123456",
"--token", "test-token",
"--fail-on-error",
],
)
assert result.exit_code == 1
assert "Failed to upload network files. Status code: 400" in result.output