import unittest from .context import ptaimport from ptaimport import passwords as pwd class TestPasswords( unittest.TestCase ): """ Tests the passwords module functions """ def setUp( self ): # no manager name given self.config_none = { } # unknown manager name given self.config_unknown = { "manager": "unknown" } def test_verify( self ): """ Tests the passwords.verify() function """ (ok, err) = pwd.verify( self.config_none ) self.assertFalse(ok) self.assertNotEqual( len(err), 0 ) (ok, err) = pwd.verify( self.config_unknown ) self.assertFalse(ok) self.assertNotEqual( len(err), 0 ) def test_factory( self ): """ Tests the passwords.Manager() function """ self.assertRaises(ValueError, pwd.Manager, self.config_none ) self.assertRaises(ValueError, pwd.Manager, self.config_unknown ) #------------------------------------------------------------------------------- class TestPlainTextPasswords( unittest.TestCase ): """ Tests the PlainTextPasswordManager class """ def setUp( self ): # no passwords given self.config_none = { "manager": "plaintext" } # not dict "passwords" section self.config_wrong = { "manager": "plaintext", "passwords": "foo" } # one password given self.test_pass_name = "my_password" self.test_pass_val = "qwerty1234" self.config_pass = { "manager": "plaintext", "passwords": { self.test_pass_name: self.test_pass_val } } def test_verify(self): """ Tests the PlainTextPasswordManager.verify() method """ (ok, err) = pwd.verify( self.config_none ) self.assertFalse(ok) self.assertNotEqual( len(err), 0 ) (ok, err) = pwd.verify( self.config_wrong ) self.assertFalse(ok) self.assertNotEqual( len(err), 0 ) (ok, err) = pwd.verify( self.config_pass ) self.assertTrue(ok) self.assertEqual( len(err), 0 ) def test_pass(self): """ Tests the PlainTextPasswordManager.get() method """ manager = pwd.Manager( self.config_pass ) pwd_val = manager.get( self.test_pass_name ) self.assertIsNotNone( pwd_val ) self.assertEqual( pwd_val, pwd.Password(self.test_pass_val) ) #------------------------------------------------------------------------------- class TestGNUPassPasswords( unittest.TestCase ): """ Tests the GNUPassPasswordManager class Unfortunately, not much can be tested automatically, as any password retrieval would trigger user input (and anyway, we cannot know the ground truth for tests) """ def setUp( self ): self.config = { "manager": "pass" } def test_create( self ): """ Tests the creation of a GNU pass manager """ (ok, err) = pwd.verify( self.config ) self.assertTrue(ok) self.assertEqual( len(err), 0 ) pwd.Manager( self.config ) #------------------------------------------------------------------------------- if __name__ == "__main__": unittest.main()