Explorar el Código

Add two more high level test

These tests are driven by expect, and test the whole
UI functionality
oz123 hace 11 años
padre
commit
c4fe9cd2b8
Se han modificado 1 ficheros con 18 adiciones y 2 borrados
  1. 18 2
      pwman/tests/test_complete_ui.py

+ 18 - 2
pwman/tests/test_complete_ui.py

@@ -22,7 +22,8 @@ import pexpect
 import unittest
 import os
 
-OLD_DB_PATH = os.path(os.path.dirname(__file__), 'pwman.db.v0.0.8')
+OLD_DB_PATH = os.path.join(os.path.dirname(__file__), 'pwman.v0.0.8.db')
+NEW_DB_PATH = os.path.join(os.path.dirname(__file__), 'pwman.v0.0.8-newdb.db')
 
 _db_warn = ("\n*** WARNNING: You are using the old database format"
             " which is insecure."
@@ -37,8 +38,22 @@ class Ferrum(unittest.TestCase):
     def test_db_warning(self):
         "when trying to run with old db, we should see warning"
         child = pexpect.spawn('../../scripts/pwman3 -t -d '+OLD_DB_PATH)
+        self.assertEqual(0, child.expect_exact(_db_warn, timeout=0.5))
 
-
+    def test_run_convert(self):
+        "invoke pwman with -k option to convert the old data"
+        child = pexpect.spawn('../../scripts/pwman3 -t -k -d '+OLD_DB_PATH)
+        child.expect('[\s|\S]+Please enter your password:', timeout=0.5)
+        self.assertEqual(6, child.sendline('12345'))
+        rv = child.expect_exact(('\r\npwman successfully converted the old database '
+                                 'to the new format.\r\nPlease run `pwman3 -d %s` '
+                                 'to make sure your password and data are still '
+                                 'correct. If you are convinced that no harm was '
+                                 'done, update your config file to indicate the '
+                                 'permanent location to your new database. '
+                                 'If you found errors, please report a bug in Pwman '
+                                 'homepage in github. \r\n' %  NEW_DB_PATH))
+        self.assertEqual(0, rv)
 
 
 def suite():
@@ -49,5 +64,6 @@ def suite():
 
 if __name__ == '__main__':
     unittest.TextTestRunner(verbosity=2).run(suite())
+    os.remove(NEW_DB_PATH)