Example #1
0
 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
Example #2
0
    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")
Example #3
0
 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
Example #4
0
 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
Example #5
0
 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
Example #6
0
    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
Example #7
0
    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="*****@*****.**")
Example #8
0
    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..
Example #9
0
 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)
Example #10
0
    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..
Example #11
0
 def shouldfail(name):
     try:
         Domain(domain=name)
     except ValueError:
         return True
Example #12
0
 def test_default(self):
     d = Domain()
     assert d.mailto == EmailRule.BOUNCE
Example #13
0
 def addDomain(self, domain):
     d = Domain(domain=self.checkDomain(domain), user=self.user)
     self.user.domains << d
     return self.clerk.store(d)