tests/db.py
branchdevel
changeset 150 c6896c3374c4
parent 138 57c4450c8ba6
child 202 3cc8cca036ab
--- a/tests/db.py	Mon Feb 13 17:59:11 2012 +0100
+++ b/tests/db.py	Mon Feb 13 18:00:27 2012 +0100
@@ -1,5 +1,5 @@
 import unittest
-
+from sqlalchemy.orm.exc import MultipleResultsFound
 from datetime import datetime
 
 from iro.model.schema import User, Offer, Userright, Job, Message
@@ -22,6 +22,17 @@
             u=session.merge(u)
             self.failUnlessEqual(u.routes('sms').all(),[('sipgate_basic',),])
 
+    def testProviders(self):
+        '''test providers'''
+        with self.session() as session:
+            u=User(name='test',apikey='abcdef123456789')
+            o=Offer(name="sipgate_basic", provider="sipgate", route="basic", typ="sms")
+            u.rights.append(Userright(o)) 
+            session.add(u)
+        
+        with self.session() as session:
+            u=session.merge(u)
+            self.failUnlessEqual(u.providers('sms').all(),[('sipgate',),])
 
     def testTyps(self):
         with self.session() as session:
@@ -39,6 +50,58 @@
         with self.session() as session:
             self.failUnlessEqual(session.typs.order_by(Offer.typ).all(),[('sms',),('sms2',)])
 
+class Has_RightTests(DBTestCase):
+    '''test User.has_right'''
+    def testSimple(self):
+        '''test a very simple case'''
+        with self.session() as session:
+            u=User(name='test',apikey='abcdef123456789')
+            o=Offer(name="sipgate_basic", provider="sipgate", route="basic", typ="sms")
+            u.rights.append(Userright(o)) 
+            session.add(u)
+        
+        with self.session() as session:
+            u=session.merge(u)
+            self.failUnlessEqual(u.has_right("sms"),"sipgate_basic")
+            self.failUnlessEqual(u.has_right("sms", offer_name="sipgate_basic"),"sipgate_basic")
+            self.failUnlessEqual(u.has_right("sms", route="basic"),"sipgate_basic")
+            self.failUnlessEqual(u.has_right("sms", provider="sipgate"),"sipgate_basic")
+
+    def testDouble(self):
+        '''now we have different routes'''
+        with self.session() as session:
+            u=User(name='test',apikey='abcdef123456789')
+            o=Offer(name="b", provider="sipgate", route="basic", typ="sms")
+            u.rights.append(Userright(o)) 
+            o=Offer(name="c", provider="sipgate", route="c", typ="sms")
+            u.rights.append(Userright(o)) 
+            session.add(u)
+        
+        with self.session() as session:
+            u=session.merge(u)
+            self.failUnlessEqual(u.has_right("sms", offer_name="b"),"b")
+            self.failUnlessEqual(u.has_right("sms", route="basic"),"b")
+            self.failUnlessEqual(u.has_right("sms", offer_name="c"),"c")
+            self.failUnlessEqual(u.has_right("sms", route="c"),"c")
+            self.assertRaises(MultipleResultsFound, u.has_right,"sms")
+            self.assertRaises(MultipleResultsFound, u.has_right,"sms", provider="sipgate")
+    
+    def testUnknown(self):
+        ''' a unknown typ'''
+        with self.session() as session:
+            u=User(name='test',apikey='abcdef123456789')
+            o=Offer(name="b", provider="sipgate", route="basic", typ="sms")
+            u.rights.append(Userright(o)) 
+            o=Offer(name="c", provider="sipgate", route="c", typ="sms")
+            u.rights.append(Userright(o)) 
+            session.add(u)
+        
+        with self.session() as session:
+            u=session.merge(u)
+            self.failUnlessEqual(u.has_right("fax", offer_name="b"), None)
+            self.failUnlessEqual(u.has_right("fax"), None)
+
+
 
 class BillTest(DBTestCase):
     """test the bill function"""