Lancer / tests /test_scraper_security.py
Madras1's picture
Upload 149 files
d2fbff3 verified
Raw History Blame Contribute Delete
742 Bytes
import unittest
from app.sources.scraper import _is_safe_public_url
class ScraperSecurityTests(unittest.IsolatedAsyncioTestCase):
async def test_rejects_private_and_non_http_destinations(self):
unsafe_urls = [
"http://127.0.0.1/admin",
"http://10.0.0.5/internal",
"http://169.254.169.254/latest/meta-data",
"http://[::1]/",
"file:///etc/passwd",
]
for url in unsafe_urls:
with self.subTest(url=url):
self.assertFalse(await _is_safe_public_url(url))
async def test_accepts_public_ip_literal(self):
self.assertTrue(await _is_safe_public_url("https://1.1.1.1/"))
if __name__ == "__main__":
unittest.main()