Beispiel #1
0
 def test_rename_success(self):
     """Test a successful rename (then rename it back)"""
     ret = True
     try:
         with patch_args(subparser_name='rename',
                         identity='r1',
                         nopassphrase='true',
                         all=True,
                         pwname='test',
                         rename='retest',
                         overwrite='true'):
             with mock.patch.object(builtins, 'input', lambda _: 'y'):
                 rename.Rename(cli.Cli())
         with patch_args(subparser_name='rename',
                         identity='r1',
                         nopassphrase='true',
                         all=True,
                         pwname='retest',
                         rename='test',
                         overwrite="true"):
             with mock.patch.object(builtins, 'input', lambda _: 'y'):
                 rename.Rename(cli.Cli())
     except DecryptionError:
         ret = False
     self.assertTrue(ret)
Beispiel #2
0
 def test_rename_cli_error(self):
     """Test what happens when pwname is not supplied"""
     with self.assertRaises(CliArgumentError) as context:
         with patch_args(subparser_name='rename',
                         identity='r1',
                         nopassphrase='true',
                         all=True,
                         rename='test',
                         overwrite='true'):
             rename.Rename(cli.Cli())
     self.assertEqual(context.exception.msg, ERROR_MSGS['pwname'])
Beispiel #3
0
 def test_recipient_not_in_database(self):
     """Test what happens when a recipient is not in the appropriate directory"""
     with self.assertRaises(CliArgumentError) as context:
         with patch_args(subparser_name='rename',
                         identity='bleh',
                         nopassphrase='true',
                         all=None,
                         pwname='test',
                         rename='retest'):
             rename.Rename(cli.Cli())
     self.assertEqual(context.exception.msg, ERROR_MSGS['rep'])
Beispiel #4
0
    def __init__(self):
        ####################################################################
        """Intialization function for class. Register all subcommands"""
        ####################################################################
        # Hash of registered subparser actions, mapping string to actual subparser
        self.actions = {}
        home = path.expanduser("~")
        defaultrc = None
        for file in [".pkpassrc", ".pkpassrc.yml", ".pkpassrc.yaml"]:
            if path.isfile(path.join(home, file)):
                defaultrc = path.join(home, file)
        if not defaultrc:
            defaultrc = path.join(home, ".pkpassrc")
        self.parser = ArgumentParser(description="Public Key Password Manager")
        self.parser.set_default_subparser = set_default_subparser
        self.parser.add_argument(
            "--config",
            type=str,
            help=
            "Path to a PKPass configuration file.  Defaults to '~/.pkpassrc{,.yml,.yaml}'",
            default=defaultrc,
        )
        self.parser.add_argument("--debug",
                                 action="store_true",
                                 help="Errors are more verbose")
        self.subparsers = self.parser.add_subparsers(help="sub-commands",
                                                     dest="subparser_name")

        card.Card(self)
        clip.Clip(self)
        create.Create(self)
        delete.Delete(self)
        distribute.Distribute(self)
        export.Export(self)
        generate.Generate(self)
        pkimport.Import(self)
        info.Info(self)
        pklist.List(self)
        listrecipients.Listrecipients(self)
        modify.Modify(self)
        recover.Recover(self)
        rename.Rename(self)
        show.Show(self)
        populate.Populate(self)
        update.Update(self)
        verifyinstall.VerifyInstall(self)
Beispiel #5
0
    def __init__(self, args, recipients_database):
        ####################################################################
        Cmd.__init__(self)
        # Hash of registered subparser actions, mapping string to actual subparser
        self.actions = {}
        self.parser = argparse.ArgumentParser(
            description='Public Key Password Manager')

        home = os.path.expanduser("~")
        self.parser.add_argument(
            '--config',
            type=str,
            help=
            "Path to a PKPass configuration file.  Defaults to '~/.pkpassrc'",
            default=os.path.join(home, '.pkpassrc'))
        self.subparsers = self.parser.add_subparsers(help='sub-commands',
                                                     dest='subparser_name')
        self.recipients_database = recipients_database
        self.parser.error = pkparse_error

        card.Card(self)
        clip.Clip(self)
        create.Create(self)
        delete.Delete(self)
        distribute.Distribute(self)
        export.Export(self)
        generate.Generate(self)
        pkimport.Import(self)
        pklist.List(self)
        listrecipients.Listrecipients(self)
        recover.Recover(self)
        rename.Rename(self)
        show.Show(self)
        update.Update(self)

        # Hold onto args passed on the command line
        self.pre_args = args
        # manually remove interpreter from command line so that argparse doesn't try to use it
        sys.argv.remove('interpreter')
        # change our cwd so users can tab complete
        self._change_pwstore()

        # We basically need to grab the first argument and ditch it
        self.parsedargs = {}
Beispiel #6
0
    def __init__(self):
        """ Intialization function for class. Register all subcommands   """
        ####################################################################
        # Hash of registered subparser actions, mapping string to actual subparser
        self.actions = {}
        home = os.path.expanduser("~")
        self.parser = argparse.ArgumentParser(
            description='Public Key Password Manager')
        self.parser.set_default_subparser = util.set_default_subparser
        self.parser.add_argument(
            '--config',
            type=str,
            help=
            "Path to a PKPass configuration file.  Defaults to '~/.pkpassrc'",
            default=os.path.join(home, '.pkpassrc'))
        self.parser.add_argument('--version',
                                 action='store_true',
                                 help='Show the version of PkPass and exit')
        self.subparsers = self.parser.add_subparsers(help='sub-commands',
                                                     dest='subparser_name')

        card.Card(self)
        clip.Clip(self)
        create.Create(self)
        delete.Delete(self)
        distribute.Distribute(self)
        export.Export(self)
        generate.Generate(self)
        pkimport.Import(self)
        interpreter.Interpreter(self)
        pklist.List(self)
        listrecipients.Listrecipients(self)
        recover.Recover(self)
        rename.Rename(self)
        show.Show(self)
        update.Update(self)

        self.parser.set_default_subparser(self.parser, name='interpreter')
        self.parsedargs = self.parser.parse_args()
        if 'version' in self.parsedargs and self.parsedargs.version:
            print(util.show_version())
        else:
            self.actions[self.parsedargs.subparser_name].run(self.parsedargs)
Beispiel #7
0
    def __init__(self):
        """ Intialization function for class. Register all subcommands   """
        ####################################################################
        # Hash of registered subparser actions, mapping string to actual subparser
        self.actions = {}
        home = path.expanduser("~")
        self.parser = ArgumentParser(description='Public Key Password Manager')
        self.parser.set_default_subparser = util.set_default_subparser
        self.parser.add_argument(
            '--config',
            type=str,
            help=
            "Path to a PKPass configuration file.  Defaults to '~/.pkpassrc'",
            default=path.join(home, '.pkpassrc'))
        self.parser.add_argument('--debug',
                                 action='store_true',
                                 help="Errors are more verbose")
        self.subparsers = self.parser.add_subparsers(help='sub-commands',
                                                     dest='subparser_name')

        card.Card(self)
        clip.Clip(self)
        create.Create(self)
        delete.Delete(self)
        distribute.Distribute(self)
        export.Export(self)
        generate.Generate(self)
        pkimport.Import(self)
        info.Info(self)
        pklist.List(self)
        listrecipients.Listrecipients(self)
        modify.Modify(self)
        recover.Recover(self)
        rename.Rename(self)
        show.Show(self)
        update.Update(self)
        verifyinstall.VerifyInstall(self)