27 lines
915 B
Python
27 lines
915 B
Python
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from redflare.core.scope import ScopeError, ScopePolicy, normalize_target
|
|
|
|
|
|
class ScopeTests(unittest.TestCase):
|
|
def test_normalizes_bare_hostname(self):
|
|
target = normalize_target("localhost:8080")
|
|
self.assertEqual(target.url, "https://localhost:8080")
|
|
self.assertEqual(target.port, 8080)
|
|
|
|
@patch("redflare.core.scope.is_public_host", return_value=False)
|
|
def test_allowed_host(self, _):
|
|
target = normalize_target("http://localhost:8080")
|
|
ScopePolicy({"localhost"}).validate(target)
|
|
|
|
@patch("redflare.core.scope.is_public_host", return_value=False)
|
|
def test_rejects_host_outside_manifest(self, _):
|
|
target = normalize_target("http://other.local")
|
|
with self.assertRaises(ScopeError):
|
|
ScopePolicy({"allowed.local"}).validate(target)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|