55"""Post Files Tests"""
66# pylint: disable=line-too-long
77
8+ import functools
89import re
10+ import socketserver
11+ import threading
12+ import time
913from unittest import mock
1014
1115import mocket
1216import pytest
1317import requests as python_requests
18+ from local_test_server import LocalTestServerHandler
19+
20+
21+ def uses_local_server (func ):
22+ @functools .wraps (func )
23+ def wrapper (* args , ** kwargs ):
24+ with socketserver .TCPServer (("127.0.0.1" , 5000 ), LocalTestServerHandler ) as server :
25+ server_thread = threading .Thread (target = server .serve_forever )
26+ server_thread .daemon = True
27+ server_thread .start ()
28+ time .sleep (2 ) # Give the server some time to start
29+
30+ result = func (* args , ** kwargs )
31+
32+ server .shutdown ()
33+ server .server_close ()
34+ time .sleep (2 )
35+ return result
36+
37+ return wrapper
1438
1539
1640@pytest .fixture
@@ -20,7 +44,8 @@ def log_stream():
2044
2145@pytest .fixture
2246def post_url ():
23- return "https://httpbin.org/post"
47+ # return "https://httpbin.org/post"
48+ return "http://127.0.0.1:5000/post"
2449
2550
2651@pytest .fixture
@@ -63,6 +88,7 @@ def get_actual_request_data(log_stream):
6388 return boundary , content_length , actual_request_post
6489
6590
91+ @uses_local_server
6692def test_post_file_as_data ( # pylint: disable=unused-argument
6793 requests , sock , log_stream , post_url , request_logging
6894):
@@ -85,6 +111,7 @@ def test_post_file_as_data( # pylint: disable=unused-argument
85111 assert sent .endswith (actual_request_post )
86112
87113
114+ @uses_local_server
88115def test_post_files_text ( # pylint: disable=unused-argument
89116 sock , requests , log_stream , post_url , request_logging
90117):
@@ -120,6 +147,7 @@ def test_post_files_text( # pylint: disable=unused-argument
120147 assert sent .endswith (actual_request_post )
121148
122149
150+ @uses_local_server
123151def test_post_files_file ( # pylint: disable=unused-argument
124152 sock , requests , log_stream , post_url , request_logging
125153):
0 commit comments