def test_is_site(self): dom = Domain(domain="asdf.com") assert not dom.is_site dom.site = Site(domain=Domain(domain="main.com")) assert not dom.is_site dom.site = Site(domain=dom) assert dom.is_site
def test_validation(self): "Domain.domain should only accept well-formed domains" def shouldfail(name): try: Domain(domain=name) except ValueError: return True assert shouldfail("http://www.sabren.com/") assert shouldfail("sabren..com") assert shouldfail("$sabren.com") assert shouldfail(" sabren.com") assert shouldfail("sabren.com ") assert shouldfail("-sabren.com") # I think? assert not shouldfail("sabren.com") assert not shouldfail("sabren2.com") assert not shouldfail("sabren.co.uk") assert not shouldfail("sa-br-en.com") assert not shouldfail("s.a.b.r.e.n.com") assert not shouldfail("sub.domain.sabren.com") assert Domain(domain="sabren.com").domain == "sabren.com" assert Domain(domain="SaBReN2.COM").domain == "sabren2.com" # finally, this is a crazy one. It's for wildcard domains. assert not shouldfail("*.sabren.com") assert shouldfail("s*bren.com") assert shouldfail("xyz.*.com") assert shouldfail("*.*.com") assert shouldfail("*.*.xyz.com") # this one is probably valid, but i don't like it: assert shouldfail("abc.*.sabren.com")
def test_location(self): Domain(location='xyz.com') Domain(location='abc.xyz.com') Domain(location='127.0.0.1') try: Domain(location='xyz') self.fail('should have gotten valueError') except ValueError: pass
def test_aliases(self): d = Domain(domain="test.com") s = Site(domain=d) d.site = s a = Domain(domain="alias.com") s.aliases << a self.clerk.store(s) self.clerk.store(d) s = self.clerk.fetch(Site, ID=1) assert [a] == s.aliases
def test_mailto(self): self.assertRaises(ValueError, Domain, mailto="e@p") # forward is only okay if it contains %1 # these should be okay: Domain(mailto="*****@*****.**") Domain(mailto="*****@*****.**") # regression tests: Domain(mailto="*****@*****.**") Domain(mailto="*****@*****.**")
def checkDomain(self, domain, subsokay=0): """ System-level validation of the domain name. """ # first run it through Domain's validation: # (also makes it lowercase, etc) domain = Domain(domain=domain).domain # now use the real stuff: if self.clerk.match(Domain, domain=domain): raise ValueError, self.ERR["dup"] % domain #if domain.startswith("www."): # raise ValueError, self.ERR["www"] if not subsokay: for d in self.user.domains: if domain.endswith( "." + d.domain): raise ValueError, self.ERR["sub"] if domain.endswith(".sabren.com") and not self.sabrenOK: raise ValueError, self.ERR["sei"] return domain # filtered for lowercase, etc..
def addSub(self, sub, domain): match = [d for d in self.user.domains if d.domain == domain] if not match: raise ValueError, self.ERR["dad"] % domain parent = match[0] if parent.zone: raise ValueError, self.ERR["zon"] % domain sub = self.checkDomain(sub + "." + domain, subsokay=1) d = Domain(domain=sub, user=self.user, rectype="cname", location=domain, processmail=0, zone=parent) return self.clerk.store(d)
def checkDomain(self, domain, subsokay=0): """ System-level validation of the domain name. """ # first run it through Domain's validation: # (also makes it lowercase, etc) domain = Domain(domain=domain).domain # now use the real stuff: if self.clerk.match(Domain, domain=domain): raise ValueError, self.ERR["dup"] % domain #if domain.startswith("www."): # raise ValueError, self.ERR["www"] if not subsokay: for d in self.user.domains: if domain.endswith("." + d.domain): raise ValueError, self.ERR["sub"] if domain.endswith(".sabren.com") and not self.sabrenOK: raise ValueError, self.ERR["sei"] return domain # filtered for lowercase, etc..
def shouldfail(name): try: Domain(domain=name) except ValueError: return True
def test_default(self): d = Domain() assert d.mailto == EmailRule.BOUNCE
def addDomain(self, domain): d = Domain(domain=self.checkDomain(domain), user=self.user) self.user.domains << d return self.clerk.store(d)