@@ -104,6 +104,12 @@ def test_dns_name_resolving_private_address_is_rejected(self) -> None:
104104 with self .assertRaises (IntelligenceServiceError ):
105105 self .service .create_source ({"name" : "bad" , "url" : "https://metadata.example.com/rss.xml" , "scope_type" : "market" })
106106
107+ def test_shared_address_space_url_is_rejected (self ) -> None :
108+ shared_dns = [(socket .AF_INET , socket .SOCK_STREAM , 6 , "" , ("100.64.0.1" , 0 ))]
109+ with patch ("src.services.intelligence_service.socket.getaddrinfo" , return_value = shared_dns ):
110+ with self .assertRaises (IntelligenceServiceError ):
111+ self .service .create_source ({"name" : "bad" , "url" : "https://metadata.example.com/rss.xml" , "scope_type" : "market" })
112+
107113 def test_generated_no_url_sentinel_is_rejected_for_source_url (self ) -> None :
108114 with self .assertRaisesRegex (IntelligenceServiceError , "absolute http\\ (s\\ ) URL" ):
109115 self .service .create_source ({"name" : "bad" , "url" : "no-url:intel:anything" , "scope_type" : "market" })
@@ -124,8 +130,21 @@ def test_redirect_target_is_validated_before_following(self) -> None:
124130 with self ._public_dns (), patch ("src.services.intelligence_service.requests.get" , return_value = redirect ) as mock_get :
125131 with self .assertRaises (IntelligenceServiceError ):
126132 self .service .fetch_source (source ["id" ])
133+ self .assertEqual (mock_get .call_count , 1 )
134+ self .assertFalse (mock_get .call_args .kwargs ["allow_redirects" ])
135+
136+ def test_fetch_requests_disable_environment_proxies (self ) -> None :
137+ with self ._public_dns ():
138+ source = self .service .create_source ({
139+ "name" : "proxy-safe-feed" ,
140+ "url" : "https://feeds.example.com/rss.xml" ,
141+ "scope_type" : "market" ,
142+ })
143+ with patch .dict (os .environ , {"HTTP_PROXY" : "http://127.0.0.1:3128" , "HTTPS_PROXY" : "http://127.0.0.1:3128" , "ALL_PROXY" : "http://127.0.0.1:3128" }):
144+ with self ._public_dns (), patch ("src.services.intelligence_service.requests.get" , return_value = self ._mock_response ()) as mock_get :
145+ self .service .fetch_source (source ["id" ])
127146 self .assertEqual (mock_get .call_count , 1 )
128- self .assertFalse (mock_get .call_args .kwargs ["allow_redirects" ] )
147+ self .assertEqual (mock_get .call_args .kwargs ["proxies" ], { "http" : None , "https" : None } )
129148
130149 def test_fetch_validates_dns_resolution_used_by_request (self ) -> None :
131150 public_dns = [(socket .AF_INET , socket .SOCK_STREAM , 6 , "" , ("93.184.216.34" , 0 ))]
0 commit comments