Explorar o código

Add more testing for postgresql

oz123 %!s(int64=10) %!d(string=hai) anos
pai
achega
961e7a8bab
Modificáronse 3 ficheiros con 32 adicións e 31 borrados
  1. 1 0
      .gitignore
  2. 12 27
      pwman/data/drivers/postgresql.py
  3. 19 4
      pwman/tests/test_postgresql.py

+ 1 - 0
.gitignore

@@ -12,3 +12,4 @@ MANIFEST
 .coverage
 htmlcov/*
 .ropeproject*
+secret.txt

+ 12 - 27
pwman/data/drivers/postgresql.py

@@ -20,6 +20,11 @@
 # ============================================================================
 
 """Postgresql Database implementation."""
+import sys
+if sys.version_info.major > 2:  # pragma: no cover
+    from urllib import urlparse
+else:
+    from urlparse import urlparse
 import psycopg2 as pg
 import cPickle
 import pwman.util.config as config
@@ -75,34 +80,14 @@ class PostgresqlDatabase(Database):
         """
         self._pgsqluri = pgsqluri
 
-
-        config.add_defaults({"Database": {"server": "localhost",
-                                          "port": "5432",
-                                          "database": "pwman",
-                                          "table_prefix": "pwman_"}})
-        try:
-            self._server = config.get_value('Database', 'server')
-            self._port = config.get_value('Database', 'port')
-            self._user = config.get_value('Database', 'user')
-            self._password = config.get_value('Database', 'password')
-            self._database = config.get_value('Database', 'database')
-            self._prefix = config.get_value('Database', 'table_prefix')
-        except KeyError as e:
-            raise DatabaseException(
-                "Postgresql: missing parameter [%s]" % (e))
-
     def _open(self):
-        try:
-            self._con = None
-#            server = "%s:%s" % (self._server, self._port)
-#            self._con = pgdb.connect(host = server,
-#                                     database = self._database,
-#                                     user = self._user,
-#                                     password = self._password)
-#            self._cur = self._con.cursor()
-            self._checktables()
-        except pgdb.DatabaseError as e:
-            raise DatabaseException("Postgresql: %s" % (e))
+
+        u = urlparse(self._pgsqluri)
+        self._con = pg.connect(database=u.path[1:], user=u.username,
+                               password=u.password, host=u.hostname)
+        self._cur = self._con.cursor()
+        self._cur.execute("CREATE TABLE DBVERSION(VERSION TEXT NOT NULL "
+                          "DEFAULT '0.6')")
 
     def _get_cur(self):
         try:

+ 19 - 4
pwman/tests/test_postgresql.py

@@ -19,20 +19,35 @@
 
 import os
 import unittest
-from pwman.data.drivers.sqlite import PostgresqlDatabase
+import sys
+from pwman.data.drivers.postgresql import PostgresqlDatabase
 from pwman.data.nodes import Node
 from pwman.util.crypto_engine import CryptoEngine
 from .test_crypto_engine import give_key, DummyCallback
+import psycopg2 as pg
 
 
 class TestPostGresql(unittest.TestCase):
 
     @classmethod
     def setUpClass(self):
-        self.db = SQLite('test.db')
+        secret = open('secret.txt').readline().strip()
+        u = "postgresql://oz123:%s@localhost/pwman" % secret
+        self.db = PostgresqlDatabase(u)
         self.db._open()
 
     @classmethod
     def tearDownClass(self):
-        # TODO: DROP Test DATABASE
-        pass
+
+        self.db._cur.execute("TRUNCATE DBVERSION")
+
+    def test_con(self):
+
+        self.assertIsInstance(self.db._cur, pg._psycopg.cursor)
+
+if __name__ == '__main__':
+
+    ce = CryptoEngine.get()
+    ce.callback = DummyCallback()
+    ce.changepassword(reader=give_key)
+    unittest.main(verbosity=2, failfast=True)