Skip to content

Commit 02e8164

Browse files
committed
tests: Simplify generating payload
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
1 parent 9d105eb commit 02e8164

File tree

1 file changed

+15
-37
lines changed

1 file changed

+15
-37
lines changed

tests/unit/sftp_test.py

+15-37
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,21 @@ def sftp_session(ssh_client_session):
2020
del sftp_sess # noqa: WPS420
2121

2222

23-
@pytest.fixture
24-
def transmit_payload():
25-
"""Generate a binary test payload."""
26-
uuid_name = uuid.uuid4()
27-
return 'Hello, {name!s}'.format(name=uuid_name).encode()
23+
@pytest.fixture(
24+
params=(32, 1024 + 1),
25+
ids=('small-payload', 'large-payload'),
26+
)
27+
def transmit_payload(request: pytest.FixtureRequest):
28+
"""Generate binary test payloads of assorted sizes.
29+
30+
The choice 32 is arbitrary small value.
31+
32+
The choice 1024 + 1 is meant to be 1B larger than the chunk size used in
33+
sftp.pyx to make sure we excercise at least two rounds of reading/writing.
34+
"""
35+
payload_len = request.param
36+
random_bytes = [ord(random.choice(string.printable)) for _ in range(payload_len)] # NOSONAR
37+
return bytes(random_bytes)
2838

2939

3040
@pytest.fixture
@@ -93,35 +103,3 @@ def test_put_existing(dst_exists_path, src_path, sftp_session, transmit_payload)
93103
"""Check that SFTP file upload works when target file exists."""
94104
sftp_session.put(str(src_path), str(dst_exists_path))
95105
assert dst_exists_path.read_bytes() == transmit_payload
96-
97-
98-
@pytest.fixture
99-
def large_payload():
100-
"""Generate a large 1025 byte (1024 + 1B) test payload."""
101-
payload_len = 1024 + 1
102-
random_bytes = [ord(random.choice(string.printable)) for _ in range(payload_len)]
103-
return bytes(random_bytes)
104-
105-
106-
@pytest.fixture
107-
def src_path_large(tmp_path, large_payload):
108-
"""Return a remote path to a 1025 byte-sized file.
109-
110-
The pylibssh chunk size is 1024 so the test needs a file that would
111-
execute at least two loops.
112-
"""
113-
path = tmp_path / 'large.txt'
114-
path.write_bytes(large_payload)
115-
return path
116-
117-
118-
def test_put_large(dst_path, src_path_large, sftp_session, large_payload):
119-
"""Check that SFTP can upload large file."""
120-
sftp_session.put(str(src_path_large), str(dst_path))
121-
assert dst_path.read_bytes() == large_payload
122-
123-
124-
def test_get_large(dst_path, src_path_large, sftp_session, large_payload):
125-
"""Check that SFTP can download large file."""
126-
sftp_session.get(str(src_path_large), str(dst_path))
127-
assert dst_path.read_bytes() == large_payload

0 commit comments

Comments
 (0)