|
|
|
import asyncio
|
|
|
|
import subprocess
|
|
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
from announce_server.decorator import _announce_server, announce_server
|
|
|
|
|
|
|
|
|
|
|
|
@patch("announce_server.decorator._announce_server")
|
|
|
|
def test_announce_server_decorator(mock_announce_server):
|
|
|
|
# Mock the _announce_server function to prevent actual connections
|
|
|
|
mock_announce_server.return_value = MagicMock()
|
|
|
|
|
|
|
|
# Decorate the sample function with announce_server
|
|
|
|
@announce_server(
|
|
|
|
name="test_server",
|
|
|
|
ip="127.0.0.1",
|
|
|
|
port=8000,
|
|
|
|
host_ip="127.0.0.1",
|
|
|
|
host_port=5000,
|
|
|
|
)
|
|
|
|
def http_server():
|
|
|
|
server = subprocess.Popen(["python3", "-m", "http.server", "13373"])
|
|
|
|
yield
|
|
|
|
server.terminate()
|
|
|
|
server.wait()
|
|
|
|
|
|
|
|
# Run the decorated function
|
|
|
|
http_server()
|
|
|
|
|
|
|
|
# Check if the _announce_server function was called with the correct arguments
|
|
|
|
mock_announce_server.assert_called_once_with(
|
|
|
|
name="test_server",
|
|
|
|
ip="127.0.0.1",
|
|
|
|
port=8000,
|
|
|
|
host_ip="127.0.0.1",
|
|
|
|
host_port=5000,
|
|
|
|
)
|