basyx commited on
Commit
4b33deb
·
verified ·
1 Parent(s): 8641c6e

Test validated DNS address fallback behavior

Browse files
Files changed (1) hide show
  1. tests/test_downloader.py +36 -1
tests/test_downloader.py CHANGED
@@ -8,7 +8,7 @@ import respx
8
  from httpx import Response
9
 
10
  from app.core.exceptions import InputError
11
- from app.services.downloader import Downloader
12
  from app.services.validator import MediaValidator
13
 
14
 
@@ -90,3 +90,38 @@ def test_response_filename_falls_back_to_url_path() -> None:
90
 
91
  response = Response(200)
92
  assert Downloader._response_filename(response, "https://example.test/media%20clip.mp4") == "media clip.mp4"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  from httpx import Response
9
 
10
  from app.core.exceptions import InputError
11
+ from app.services.downloader import Downloader, _PinnedNetworkBackend
12
  from app.services.validator import MediaValidator
13
 
14
 
 
90
 
91
  response = Response(200)
92
  assert Downloader._response_filename(response, "https://example.test/media%20clip.mp4") == "media clip.mp4"
93
+
94
+
95
+ async def test_pinned_backend_retries_validated_addresses(settings) -> None:
96
+ first_socket = object()
97
+ calls = []
98
+
99
+ class Fallback:
100
+ async def connect_tcp(self, **kwargs):
101
+ calls.append(kwargs)
102
+ if len(calls) == 1:
103
+ raise OSError("first validated address unavailable")
104
+ return first_socket
105
+
106
+ downloader = Downloader(settings, MediaValidator(settings))
107
+ downloader._pinned[("media.example.test", 443)] = ("203.0.113.10", "93.184.216.34")
108
+ backend = _PinnedNetworkBackend(downloader, Fallback())
109
+
110
+ result = await backend.connect_tcp("media.example.test", 443, timeout=3.0)
111
+
112
+ assert result is first_socket
113
+ assert [call["host"] for call in calls] == ["203.0.113.10", "93.184.216.34"]
114
+ assert all(call["port"] == 443 for call in calls)
115
+
116
+
117
+ async def test_pinned_backend_fails_closed_without_validated_addresses(settings) -> None:
118
+ class Fallback:
119
+ async def connect_tcp(self, **kwargs):
120
+ raise AssertionError("must not connect when validated address list is empty")
121
+
122
+ downloader = Downloader(settings, MediaValidator(settings))
123
+ downloader._pinned[("media.example.test", 443)] = ()
124
+ backend = _PinnedNetworkBackend(downloader, Fallback())
125
+
126
+ with pytest.raises(OSError, match="No validated network destination"):
127
+ await backend.connect_tcp("media.example.test", 443)