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

Add testing for do_edit

oz123 10 éve
szülő
commit
86305df83e
2 módosított fájl, 33 hozzáadás és 9 törlés
  1. 32 7
      pwman/tests/test_base_ui.py
  2. 1 2
      pwman/ui/baseui.py

+ 32 - 7
pwman/tests/test_base_ui.py

@@ -18,22 +18,35 @@
 # ============================================================================
 import os
 import unittest
-from pwman.util.crypto_engine import CryptoEngine
-from .test_crypto_engine import give_key, DummyCallback
-from pwman.data.database import __DB_FORMAT__
-from .test_tools import (SetupTester)
-from pwman.data import factory
-from pwman.ui import get_ui_platform
 try:
     from StringIO import StringIO
 except ImportError:
     from io import StringIO
 
 import sys
+from pwman.util.crypto_engine import CryptoEngine
+from .test_crypto_engine import give_key, DummyCallback
+from pwman.data.database import __DB_FORMAT__
+from .test_tools import (SetupTester)
+from pwman.data import factory
+from pwman.data.nodes import Node
+from pwman.ui import get_ui_platform
+from pwman.ui.tools import CMDLoop
 
 testdb = os.path.join(os.path.dirname(__file__), "test-baseui.pwman.db")
 
 
+class dummy_stdin(object):
+
+    def __init__(self):
+        self.idx = -1
+        self.ans = ['4', 'some fucking notes', 'X']
+
+    def __call__(self, msg):
+        self.idx += 1
+        return self.ans[self.idx]
+
+
 class TestBaseUI(unittest.TestCase):
 
     def setUp(self):
@@ -131,7 +144,19 @@ class TestBaseUI(unittest.TestCase):
         self.assertListEqual([], self.tester.cli._get_ids('5x'))
         self.assertListEqual([], self.tester.cli._get_ids('5\\'))
 
-    def test_8_do_delete(self):
+    def test_8_do_edit(self):
+        node = self.tester.cli._db.getnodes([1])[0]
+        node = node[1:5] + [node[5:]]
+        node = Node.from_encrypted_entries(*node)
+        sys.stdin = StringIO(("1\nfoo\nx\n"))
+        self.tester.cli.do_edit('1')
+        v = StringIO()
+        sys.stdin = sys.__stdin__
+        sys.stdout = v
+        self.tester.cli.do_print('1')
+        self.assertIn('\x1b[31mUsername:\x1b[0m foo', v.getvalue())
+
+    def test_9_do_delete(self):
         self.assertIsNone(self.tester.cli._do_rm('x'))
         sys.stdin = StringIO("y\n")
         self.tester.cli.do_rm('1')

+ 1 - 2
pwman/ui/baseui.py

@@ -433,11 +433,10 @@ class BaseCommands(HelpUIMixin, AliasesMixin):
                                          tgetter(),
                                          node.tags))
                 menu.run(node)
-                # _db.editnode does not recieve a node instance
                 self._db.editnode(i, **node.to_encdict())
                 # when done with node erase it
                 zerome(node._password)
-            except Exception as e:
+            except Exception as e:  # pragma: no cover
                 self.error(e)
 
     def do_list(self, args):