Skip to content

Commit 303c760

Browse files
author
Vadim Sultanov
committed
bugfix: domain name validation.
Updated regexp for domain validation Add testcases for domain validation fix issue: IdentityPython#950
1 parent 3daa066 commit 303c760

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed

src/saml2/validate.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,7 @@ def valid_instance(instance):
420420

421421

422422
def valid_domain_name(dns_name):
423-
m = re.match(r"^[a-z0-9]+([-.]{ 1 }[a-z0-9]+).[a-z]{2,5}(:[0-9]{1,5})?(\/.)?$", dns_name, re.I)
423+
m = re.match(r"^((?:[a-zA-Z](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,5})(?::\d+)?$", dns_name, re.I)
424424
if not m:
425425
raise ValueError("Not a proper domain name")
426+
return True

tests/test_13_validate.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from saml2.validate import valid_any_uri
1212
from saml2.validate import valid_anytype
1313
from saml2.validate import valid_duration
14+
from saml2.validate import valid_domain_name
1415
from saml2.validate import valid_instance
1516
from saml2.validate import valid_non_negative_integer
1617
from saml2.validate import valid_string
@@ -146,3 +147,61 @@ def test_valid_address():
146147
assert valid_address("[2001:8003:5555:9999:555a:5555:c77:d5c5")
147148
with raises(NotValid):
148149
assert valid_address("[[2001:8003:5555:9999:555a:5555:c77:d5c5]")
150+
151+
152+
def test_valid_domain_name():
153+
assert valid_domain_name("api.my-domain.com")
154+
assert valid_domain_name("auth.admin.domain.com")
155+
assert valid_domain_name("auth.domain.com")
156+
assert valid_domain_name("auth.domain.com")
157+
assert valid_domain_name("lk.domain.com:12")
158+
assert valid_domain_name("lk.domain.com:12")
159+
assert valid_domain_name("static.domain.xyz:12345")
160+
assert valid_domain_name("domain.com")
161+
assert valid_domain_name("domain.lu")
162+
assert valid_domain_name("auth-domain.com")
163+
assert valid_domain_name("domain.com:12345")
164+
assert valid_domain_name("auth-admin.domain-uero.xyz")
165+
assert valid_domain_name("auth.lk.d.sr.mydomain.com")
166+
167+
with raises(ValueError):
168+
valid_domain_name("")
169+
170+
with raises(ValueError):
171+
valid_domain_name("auth.domain.ljnjnfds")
172+
173+
with raises(ValueError):
174+
valid_domain_name("123.123.123.123")
175+
176+
with raises(ValueError):
177+
valid_domain_name("123.123.123.123:80")
178+
179+
with raises(ValueError):
180+
valid_domain_name("123.123.123.123:8000")
181+
182+
with raises(ValueError):
183+
valid_domain_name("auth_domain.com")
184+
185+
with raises(ValueError):
186+
valid_domain_name("example-.com")
187+
188+
with raises(ValueError):
189+
valid_domain_name("[email protected]")
190+
191+
with raises(ValueError):
192+
valid_domain_name("exaple.c")
193+
194+
with raises(ValueError):
195+
valid_domain_name("123example.com")
196+
197+
with raises(ValueError):
198+
valid_domain_name("example.com:")
199+
200+
with raises(ValueError):
201+
valid_domain_name("example..com")
202+
203+
with raises(ValueError):
204+
valid_domain_name("example.com123")
205+
206+
with raises(ValueError):
207+
valid_domain_name("example.com.")

0 commit comments

Comments
 (0)