2023-07-22 16:54:36 +00:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
from users.models import Domain
|
|
|
|
|
|
|
|
|
2023-12-13 09:04:41 +00:00
|
|
|
def test_valid_domain():
|
|
|
|
"""
|
|
|
|
Tests that a valid domain is valid
|
|
|
|
"""
|
|
|
|
|
|
|
|
assert Domain.is_valid_domain("example.com")
|
|
|
|
assert Domain.is_valid_domain("xn----gtbspbbmkef.xn--p1ai")
|
|
|
|
assert Domain.is_valid_domain("underscore_subdomain.example.com")
|
|
|
|
assert Domain.is_valid_domain("something.versicherung")
|
|
|
|
assert Domain.is_valid_domain("11.com")
|
|
|
|
assert Domain.is_valid_domain("a.cn")
|
|
|
|
assert Domain.is_valid_domain("sub1.sub2.sample.co.uk")
|
|
|
|
assert Domain.is_valid_domain("somerandomexample.xn--fiqs8s")
|
|
|
|
assert not Domain.is_valid_domain("über.com")
|
|
|
|
assert not Domain.is_valid_domain("example.com:4444")
|
|
|
|
assert not Domain.is_valid_domain("example.-com")
|
|
|
|
assert not Domain.is_valid_domain("foo@bar.com")
|
|
|
|
assert not Domain.is_valid_domain("example.")
|
|
|
|
assert not Domain.is_valid_domain("example.com.")
|
|
|
|
assert not Domain.is_valid_domain("-example.com")
|
|
|
|
assert not Domain.is_valid_domain("_example.com")
|
|
|
|
assert not Domain.is_valid_domain("_example._com")
|
|
|
|
assert not Domain.is_valid_domain("example_.com")
|
|
|
|
assert not Domain.is_valid_domain("example")
|
|
|
|
assert not Domain.is_valid_domain("a......b.com")
|
|
|
|
assert not Domain.is_valid_domain("a.123")
|
|
|
|
assert not Domain.is_valid_domain("123.123")
|
|
|
|
assert not Domain.is_valid_domain("123.123.123.123")
|
|
|
|
|
|
|
|
|
2023-07-22 16:54:36 +00:00
|
|
|
@pytest.mark.django_db
|
|
|
|
def test_recursive_block():
|
|
|
|
"""
|
|
|
|
Tests that blocking a domain also blocks its subdomains
|
|
|
|
"""
|
|
|
|
|
|
|
|
root_domain = Domain.get_remote_domain("evil.com")
|
|
|
|
root_domain.blocked = True
|
|
|
|
root_domain.save()
|
|
|
|
|
|
|
|
# Re-fetching the root should be blocked
|
|
|
|
assert Domain.get_remote_domain("evil.com").recursively_blocked()
|
|
|
|
|
|
|
|
# A sub domain should also be blocked
|
|
|
|
assert Domain.get_remote_domain("terfs.evil.com").recursively_blocked()
|
|
|
|
|
|
|
|
# An unrelated domain should not be blocked
|
|
|
|
assert not Domain.get_remote_domain("example.com").recursively_blocked()
|