changeset 6802:044dcf3608a2

update session db tests session_common.py: testList had no asserts. While adding them I found out the memory and anydbm backends return byte strings while the rdbms backend return strings. So added a call to s2b defined in each db test file to covert. rdbms i a no-op and memory/anydbm call roundup.anypy.strings::s2b(). also add some data to other tests and verify it. other files: define s2b appropriately.
author John Rouillard <rouilj@ieee.org>
date Mon, 25 Jul 2022 15:02:30 -0400
parents 23dbb94466e6
children db437dd13ed5
files test/session_common.py test/test_anydbm.py test/test_memorydb.py test/test_sqlite.py
diffstat 4 files changed, 24 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/test/session_common.py	Mon Jul 25 14:28:31 2022 -0400
+++ b/test/session_common.py	Mon Jul 25 15:02:30 2022 -0400
@@ -1,4 +1,4 @@
-import os, shutil, unittest
+import os, shutil, time, unittest
 
 from .db_test_base import config
 
@@ -20,14 +20,23 @@
             shutil.rmtree(config.DATABASE)
 
     def testList(self):
+        '''Under dbm/memory sessions store, keys are returned as
+           byte strings. self.s2b converts string to byte under those
+           backends but is a no-op for rdbms based backends.
+
+           Unknown why keys can be strings not bytes for get/set
+           and work correctly.
+        '''
         self.sessions.list()
         self.sessions.set('random_key', text='hello, world!')
-        self.sessions.list()
+        self.sessions.set('random_key2', text='hello, world!')
+        self.assertEqual(self.sessions.list().sort(),
+                [self.s2b('random_key'), self.s2b('random_key2')].sort())
 
     def testGetAll(self):
-        self.sessions.set('random_key', text='hello, world!')
+        self.sessions.set('random_key', text='hello, world!', otherval='bar')
         self.assertEqual(self.sessions.getall('random_key'),
-            {'text': 'hello, world!'})
+            {'text': 'hello, world!', 'otherval': 'bar'})
 
     def testDestroy(self):
         self.sessions.set('random_key', text='hello, world!')
@@ -37,9 +46,11 @@
         self.assertRaises(KeyError, self.sessions.getall, 'random_key')
 
     def testSetSession(self):
-        self.sessions.set('random_key', text='hello, world!')
+        self.sessions.set('random_key', text='hello, world!', otherval='bar')
         self.assertEqual(self.sessions.get('random_key', 'text'),
             'hello, world!')
+        self.assertEqual(self.sessions.get('random_key', 'otherval'),
+            'bar')
 
     def testUpdateSession(self):
         self.sessions.set('random_key', text='hello, world!')
--- a/test/test_anydbm.py	Mon Jul 25 14:28:31 2022 -0400
+++ b/test/test_anydbm.py	Mon Jul 25 15:02:30 2022 -0400
@@ -22,6 +22,8 @@
 from .db_test_base import HTMLItemTest, SpecialActionTest
 from .rest_common import TestCase as RestTestCase
 
+from roundup.anypy import strings
+
 class anydbmOpener:
     module = get_backend('anydbm')
 
@@ -51,7 +53,7 @@
 
 from .session_common import SessionTest
 class anydbmSessionTest(anydbmOpener, SessionTest, unittest.TestCase):
-    pass
+    s2b = lambda x,y: strings.s2b(y)
 
 class anydbmSpecialActionTestCase(anydbmOpener, SpecialActionTest,
                                   unittest.TestCase):
--- a/test/test_memorydb.py	Mon Jul 25 14:28:31 2022 -0400
+++ b/test/test_memorydb.py	Mon Jul 25 15:02:30 2022 -0400
@@ -5,6 +5,8 @@
 from .db_test_base import DBTest, ROTest, SchemaTest, config, setupSchema
 from roundup.test import memorydb
 
+from roundup.anypy import strings
+
 class memorydbOpener:
     module = memorydb
 
@@ -54,6 +56,8 @@
 
 from .session_common import SessionTest
 class memorydbSessionTest(memorydbOpener, SessionTest, unittest.TestCase):
+    s2b = lambda x,y: strings.s2b(y)
+
     def setUp(self):
         self.db = self.module.Database(config, 'admin')
         setupSchema(self.db, 1, self.module)
--- a/test/test_sqlite.py	Mon Jul 25 14:28:31 2022 -0400
+++ b/test/test_sqlite.py	Mon Jul 25 15:02:30 2022 -0400
@@ -98,7 +98,7 @@
 
 from .session_common import SessionTest
 class sqliteSessionTest(sqliteOpener, SessionTest, unittest.TestCase):
-    pass
+    s2b = lambda x,y : y
 
 class sqliteRestTest (RestTestCase, unittest.TestCase):
     backend = 'sqlite'

Roundup Issue Tracker: http://roundup-tracker.org/