|  | @@ -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')
 |