Forráskód Böngészése

Extend testing of new SQLite engine

oz123 10 éve
szülő
commit
2c05006392
4 módosított fájl, 26 hozzáadás és 6 törlés
  1. 1 0
      Makefile
  2. 13 3
      pwman/data/drivers/sqlite.py
  3. 2 0
      pwman/tests/test_pwman.py
  4. 10 3
      pwman/tests/test_sqlite.py

+ 1 - 0
Makefile

@@ -13,6 +13,7 @@ help:
 
 clean: clean-build clean-pyc
 	rm -fr htmlcov/
+	rm test.db
 
 clean-build:
 	rm -fr build/

+ 13 - 3
pwman/data/drivers/sqlite.py

@@ -365,9 +365,12 @@ class SQLite(SQLiteDatabaseNewForm):
     def _open(self):
         self._con = sqlite.connect(self._filename)
         self._cur = self._con.cursor()
-        self._create_tables()
 
     def _create_tables(self):
+        self._cur.execute("PRAGMA TABLE_INFO(NODE)")
+        if self._cur.fetchone() is not None:
+            return
+
         self._cur.execute("CREATE TABLE NODE (ID INTEGER PRIMARY KEY "
                           "AUTOINCREMENT, "
                           "USER TEXT NOT NULL, "
@@ -386,7 +389,7 @@ class SQLite(SQLiteDatabaseNewForm):
                           "FOREIGN KEY(tagid) REFERENCES TAG(ID))")
 
         self._cur.execute("CREATE TABLE CRYPTO"
-                          "(SALT TEXT,"
+                          "(SEED TEXT,"
                           " DIGEST TEXT)")
 
         # create a table to hold DB version info
@@ -404,4 +407,11 @@ class SQLite(SQLiteDatabaseNewForm):
     def fetch_crypto_info(self):
         self._cur.execute("SELECT * FROM CRYPTO")
         keyrow = self._cur.fetchone()
-        return keyrow[0]
+        return keyrow
+
+    def save_crypto_info(self, seed, digest):
+        """save the random seed and the digested key"""
+        #self._open()
+        self._cur.execute("DELETE  FROM CRYPTO")
+        self._cur.execute("INSERT INTO CRYPTO VALUES(?, ?)", [seed, digest])
+        self._con.commit()

+ 2 - 0
pwman/tests/test_pwman.py

@@ -28,6 +28,7 @@ from .db_tests import (DBTests, SetupTester, CLITests, #ConfigTest,
 #from .crypto_tests import CryptoTest
 from .test_crypto_engine import CryptoEngineTest
 from .test_config import TestConfig
+from .test_sqlite import TestSQLite
 
 if 'win' not in sys.platform:
     from .test_complete_ui import (Ferrum, NEW_DB_PATH)
@@ -54,6 +55,7 @@ def suite():
     #suite.addTest(loader.loadTestsFromTestCase(TestDBFalseConfig))
     suite.addTest(loader.loadTestsFromTestCase(CryptoEngineTest))
     suite.addTest(loader.loadTestsFromTestCase(TestConfig))
+    suite.addTest(loader.loadTestsFromTestCase(TestSQLite))
     #if 'win' not in sys.platform:
     #    suite.addTest(loader.loadTestsFromTestCase(Ferrum))
     return suite

+ 10 - 3
pwman/tests/test_sqlite.py

@@ -21,14 +21,21 @@ import unittest
 from pwman.data.drivers.sqlite import SQLite
 
 
-class TestConfig(unittest.TestCase):
+class TestSQLite(unittest.TestCase):
     def setUp(self):
         self.db = SQLite('test.db')
+        self.db._open()
 
-    def test_create_tables(self):
+    def test_1_create_tables(self):
+        self.db._create_tables()
+        self.db._con.commit()
         # the method _open calls _create_tables
-        self.db._open()
+        self.db.save_crypto_info("foo", "bar")
 
+    def test_2_crypto_info(self):
+        self.db.save_crypto_info("foo", "bar")
+        f = self.db.fetch_crypto_info()
+        self.assertListEqual([u'foo', u'bar'], list(f))
 
 if __name__ == '__main__':
     try: