Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion file_transfer/send_file.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
if __name__ == "__main__":
def run_script():
import socket # Import socket module

ONE_CONNECTION_ONLY = (
Expand Down Expand Up @@ -36,3 +36,7 @@

sock.shutdown(1)
sock.close()


if __name__ == "__main__": # pragma: no cover
run_script()
32 changes: 32 additions & 0 deletions file_transfer/tests/test_send_file.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from unittest.mock import patch, Mock


from file_transfer.send_file import run_script as send_file


@patch("socket.socket")
@patch("builtins.open")
def test_send_file_running_as_expected(file, sock):
# ===== initialization =====
conn = Mock()
sock.return_value.accept.return_value = conn, Mock()
f = iter([1, None])
file.return_value.__enter__.return_value.read.side_effect = lambda _: next(f)

# ===== invoke =====
send_file()

# ===== ensurance =====
sock.assert_called_once()
sock.return_value.bind.assert_called_once()
sock.return_value.listen.assert_called_once()
sock.return_value.accept.assert_called_once()
conn.recv.assert_called_once()

file.return_value.__enter__.assert_called_once()
file.return_value.__enter__.return_value.read.assert_called()

conn.send.assert_called_once()
conn.close.assert_called_once()
sock.return_value.shutdown.assert_called_once()
sock.return_value.close.assert_called_once()