file-transfer: writing tests and ensuring that all is going well (#2413)

* file-transfer: writing tests and ensuring that all is going well

* def send_file(filename: str = "mytext.txt", testing: bool = False) -> None:

* send_file(filename="mytext.txt", testing=True)

* Update send_file.py

* requirements.txt: lxml

Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
Meysam 2020-09-12 01:43:43 +04:30 committed by GitHub
parent c676956030
commit 2e790ce4ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 10 deletions

View File

@ -1,11 +1,6 @@
if __name__ == "__main__":
import socket # Import socket module
def send_file(filename: str = "mytext.txt", testing: bool = False) -> None:
import socket
ONE_CONNECTION_ONLY = (
True # Set this to False if you wish to continuously accept connections
)
filename = "mytext.txt"
port = 12312 # Reserve a port for your service.
sock = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
@ -29,10 +24,12 @@ if __name__ == "__main__":
print("Done sending")
conn.close()
if (
ONE_CONNECTION_ONLY
): # This is to make sure that the program doesn't hang while testing
if testing: # Allow the test to complete
break
sock.shutdown(1)
sock.close()
if __name__ == "__main__":
send_file()

View File

@ -0,0 +1,32 @@
from unittest.mock import patch, Mock
from file_transfer.send_file import 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(filename="mytext.txt", testing=True)
# ===== 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()

View File

@ -3,6 +3,7 @@ black
fake_useragent
flake8
keras
lxml
matplotlib
mypy
numpy