فهرست منبع

Add two more high level test

These tests are driven by expect, and test the whole
UI functionality
oz123 11 سال پیش
والد
کامیت
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)