Просмотр исходного кода

Add two more high level test

These tests are driven by expect, and test the whole
UI functionality
oz123 11 лет назад
Родитель
Сommit
c4fe9cd2b8
1 измененных файлов с 18 добавлено и 2 удалено
  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)