Abhilash Raj pushed to branch master at GNU Mailman / Mailman Core


Commits:
fe3c2416 by Ashrya Agrawal at 2019-03-31T06:27:52Z
Add unique constraint to mail_host

- - - - -
cade5cc2 by Abhilash Raj at 2019-03-31T06:27:52Z
Merge branch 'patch_1' into 'master'

Add unique constraint to mail_host

See merge request mailman/mailman!483
- - - - -


2 changed files:

- src/mailman/model/domain.py
- src/mailman/model/tests/test_domain.py


Changes:

=====================================
src/mailman/model/domain.py
=====================================
@@ -43,7 +43,7 @@ class Domain(Model):
 
     id = Column(Integer, primary_key=True)
 
-    mail_host = Column(SAUnicode)
+    mail_host = Column(SAUnicode, unique=True)
     description = Column(SAUnicode)
     owners = relationship('User',
                           secondary='domain_owner',


=====================================
src/mailman/model/tests/test_domain.py
=====================================
@@ -20,13 +20,16 @@
 import unittest
 
 from mailman.app.lifecycle import create_list
+from mailman.database.transaction import dbconnection, transaction
 from mailman.interfaces.domain import (
     DomainCreatedEvent, DomainCreatingEvent, DomainDeletedEvent,
     DomainDeletingEvent, IDomainManager)
 from mailman.interfaces.listmanager import IListManager
 from mailman.interfaces.usermanager import IUserManager
+from mailman.model.domain import Domain
 from mailman.testing.helpers import event_subscribers
 from mailman.testing.layers import ConfigLayer
+from sqlalchemy.exc import IntegrityError
 from zope.component import getUtility
 
 
@@ -175,6 +178,22 @@ class TestDomainManager(unittest.TestCase):
                          ['a...@example.org', 'b...@example.net'])
 
 
+class TestDomain(unittest.TestCase):
+    layer = ConfigLayer
+
+    @dbconnection
+    def test_unique_mail_host(self, store):
+        domain = Domain('abc')
+        # Creates the first domain and commit it right away
+        with transaction():
+            store.add(domain)
+
+        # Now creating another Domain with same mail_host and committing it
+        with self.assertRaises(IntegrityError):
+            with transaction():
+                store.add(Domain('abc'))
+
+
 class TestDomainLifecycleEvents(unittest.TestCase):
     layer = ConfigLayer
 



View it on GitLab: 
https://gitlab.com/mailman/mailman/compare/0c79a9fc0047eb017a6993c6b3099d7bcfbc5c45...cade5cc26f4c410e649db761bed337fa2672fcfb

-- 
View it on GitLab: 
https://gitlab.com/mailman/mailman/compare/0c79a9fc0047eb017a6993c6b3099d7bcfbc5c45...cade5cc26f4c410e649db761bed337fa2672fcfb
You're receiving this email because of your account on gitlab.com.


_______________________________________________
Mailman-checkins mailing list
Mailman-checkins@python.org
Unsubscribe: 
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to