示例#1
0
 def test_get_config_dict_bool(self, home_dir):
     # boolean values are interpolated correctly
     config_file = home_dir / ".diceware.ini"
     config_file.write("\n".join(["[diceware]", "caps = Off", ""]))
     conf_dict = get_config_dict()
     assert "caps" in conf_dict.keys()
     assert conf_dict["caps"] is False
     config_file.write("\n".join(["[diceware]", "caps = On", ""]))
     assert get_config_dict()["caps"] is True
示例#2
0
 def test_get_config_dict_int(self, home_dir):
     # integer values are interpolated correctly
     config_file = home_dir / ".diceware.ini"
     config_file.write("\n".join(["[diceware]", "num=3", ""]))
     conf_dict = get_config_dict()
     assert "num" in conf_dict.keys()
     assert conf_dict["num"] == 3
示例#3
0
 def test_get_config_dict(self, home_dir):
     # we can get config values from files as a dict.
     config_file = home_dir / ".diceware.ini"
     config_file.write("\n".join(["[diceware]", "num = 3", ""]))
     conf_dict = get_config_dict()
     assert len(conf_dict) == len(OPTIONS_DEFAULTS)
     assert conf_dict != OPTIONS_DEFAULTS
示例#4
0
 def test_get_config_dict_string_quotes_stripped(self, home_dir):
     # preceding/trailing quotes are stripped from string values
     config_file = home_dir / ".diceware.ini"
     for string_in_conf, expected_parsed in (
             ('" "', " "), ("' '", " "), ('"\t\t"', "\t\t")):
         config_file.write("[diceware]\ndelimiter=%s \n" % string_in_conf)
         conf_dict = get_config_dict()
         assert conf_dict["delimiter"] == expected_parsed
示例#5
0
 def test_get_config_dict_arg_path_list(self, home_dir):
     # we can give the paths searched.
     config_file_default = home_dir / ".diceware.ini"
     config_file_default.write("[diceware]\nnum=4\n")
     config_file_custom = home_dir / "some-new-file"
     config_file_custom.write("[diceware]\nnum=42\n")
     conf_dict = get_config_dict(
         path_list=[str(config_file_custom), ])
     assert conf_dict['num'] == 42
示例#6
0
def handle_options(args):
    """Handle commandline options.
    """
    random_sources = get_random_sources().keys()
    wordlist_names = get_wordlist_names()
    defaults = get_config_dict()
    parser = argparse.ArgumentParser(
        description="Create a passphrase",
        epilog="Wordlists are stored in %s" % WORDLISTS_DIR
        )
    parser.add_argument(
        '-n', '--num', default=6, type=int,
        help='number of words to concatenate. Default: 6')
    cap_group = parser.add_mutually_exclusive_group()
    cap_group.add_argument(
        '-c', '--caps', action='store_true',
        help='Capitalize words. This is the default.')
    cap_group.add_argument(
        '--no-caps', action='store_false', dest='caps',
        help='Turn off capitalization.')
    parser.add_argument(
        '-s', '--specials', default=0, type=int, metavar='NUM',
        help="Insert NUM special chars into generated word.")
    parser.add_argument(
        '-d', '--delimiter', default='',
        help="Separate words by DELIMITER. Empty string by default.")
    parser.add_argument(
        '-r', '--randomsource', default='system', choices=random_sources,
        metavar="SOURCE",
        help=(
            "Get randomness from this source. Possible values: `%s'. "
            "Default: system" % "', `".join(sorted(random_sources))))
    parser.add_argument(
        '-w', '--wordlist', default='en_securedrop', choices=wordlist_names,
        metavar="NAME",
        help=(
            "Use words from this wordlist. Possible values: `%s'. "
            "Wordlists are stored in the folder displayed below. "
            "Default: en_securedrop" % "', `".join(wordlist_names)))
    parser.add_argument(
        'infile', nargs='?', metavar='INFILE', default=None,
        type=argparse.FileType('r'),
        help="Input wordlist. `-' will read from stdin.",
        )
    parser.add_argument(
        '--version', action='store_true',
        help='output version information and exit.',
        )
    parser.set_defaults(**defaults)
    args = parser.parse_args(args)
    return args
示例#7
0
 def test_get_config_dict_arg_section(self, home_dir):
     # we can set the section name to look for in config files.
     config_file = home_dir / ".diceware.ini"
     config_file.write("[diceware]\nnum=4\n[foo]\nnum=5\n[bar]\nnum=6\n")
     conf_dict = get_config_dict(section='foo')
     assert conf_dict['num'] == 5
示例#8
0
 def test_get_config_dict_arg_defaults_dict(self, home_dir):
     # we can change the dict of defaults used.
     custom_defaults = dict(num=42)
     conf_dict = get_config_dict(defaults_dict=custom_defaults)
     assert conf_dict == dict(num=42)
     assert conf_dict is not custom_defaults
示例#9
0
 def test_get_config_dict_no_diceware_section(self, home_dir):
     # we cope with config files, if they do not contain a diceware config
     config_file = home_dir / ".diceware.ini"
     config_file.write("\n".join(["[not-diceware]", "num = 3", ""]))
     conf_dict = get_config_dict()
     assert conf_dict == OPTIONS_DEFAULTS
示例#10
0
 def test_get_config_dict_no_config_file(self, home_dir):
     # we get config values even without a config file.
     conf_dict = get_config_dict()
     assert conf_dict == OPTIONS_DEFAULTS
     assert conf_dict is not OPTIONS_DEFAULTS
示例#11
0
 def test_get_config_dict_string_empty(self, home_dir):
     # we can set empty string values
     config_file = home_dir / ".diceware.ini"
     config_file.write("\n".join(["[diceware]", "delimiter=", ""]))
     conf_dict = get_config_dict()
     assert conf_dict["delimiter"] == ""
示例#12
0
 def test_get_config_dict_string(self, home_dir):
     # string values are interpolated correctly
     config_file = home_dir / ".diceware.ini"
     config_file.write("\n".join(["[diceware]", "delimiter=!", ""]))
     conf_dict = get_config_dict()
     assert conf_dict["delimiter"] == "!"
示例#13
0
 def test_get_config_dict_ignore_irrelevant(self, home_dir):
     # values that have no default are ignored
     config_file = home_dir / ".diceware.ini"
     config_file.write("\n".join(["[diceware]", "foo = bar", ""]))
     conf_dict = get_config_dict()
     assert "foo" not in conf_dict.keys()
示例#14
0
def handle_options(args):
    """Handle commandline options.
    """
    plugins = get_random_sources()
    random_sources = plugins.keys()
    wordlist_names = get_wordlist_names()
    defaults = get_config_dict()
    parser = argparse.ArgumentParser(
        description="Create a passphrase",
        epilog="Wordlists are stored in %s" % WORDLISTS_DIR
        )
    parser.add_argument(
        '-n', '--num', default=6, type=int,
        help='number of words to concatenate. Default: 6')
    cap_group = parser.add_mutually_exclusive_group()
    cap_group.add_argument(
        '-c', '--caps', action='store_true',
        help='Capitalize words. This is the default.')
    cap_group.add_argument(
        '--no-caps', action='store_false', dest='caps',
        help='Turn off capitalization.')
    parser.add_argument(
        '-s', '--specials', default=0, type=int, metavar='NUM',
        help="Insert NUM special chars into generated word.")
    parser.add_argument(
        '-d', '--delimiter', default='',
        help="Separate words by DELIMITER. Empty string by default.")
    parser.add_argument(
        '-r', '--randomsource', default='system', choices=random_sources,
        metavar="SOURCE",
        help=(
            "Get randomness from this source. Possible values: `%s'. "
            "Default: system" % "', `".join(sorted(random_sources))))
    parser.add_argument(
        '-w', '--wordlist', default='en_eff', choices=wordlist_names,
        metavar="NAME",
        help=(
            "Use words from this wordlist. Possible values: `%s'. "
            "Wordlists are stored in the folder displayed below. "
            "Default: en_eff" % "', `".join(wordlist_names)))
    realdice_group = parser.add_argument_group(
        "Arguments related to `realdice' randomsource",
        )
    realdice_group.add_argument(
            '--dice-sides', default=6, type=int, metavar="N",
            help='Number of sides of dice. Default: 6'
        )
    parser.add_argument(
        'infile', nargs='?', metavar='INFILE', default=None,
        type=argparse.FileType('r'),
        help="Input wordlist. `-' will read from stdin.",
        )
    parser.add_argument(
        '-v', '--verbose', action='count',
        help='Be verbose. Use several times for increased verbosity.')
    parser.add_argument(
        '--version', action='store_true',
        help='output version information and exit.',
        )
    for plugin in plugins.values():
        if hasattr(plugin, "update_argparser"):
            parser = plugin.update_argparser(parser)
    parser.set_defaults(**defaults)
    args = parser.parse_args(args)
    return args
示例#15
0
def handle_options(args):
    """Handle commandline options.
    """
    plugins = get_random_sources()
    random_sources = plugins.keys()
    wordlist_names = get_wordlist_names()
    defaults = get_config_dict()
    parser = argparse.ArgumentParser(
        description="Create a passphrase",
        epilog="Wordlists are stored in %s" % get_wordlists_dir()
        )
    parser.add_argument(
        '-n', '--num', default=6, type=int,
        help='number of words to concatenate. Default: 6')
    cap_group = parser.add_mutually_exclusive_group()
    cap_group.add_argument(
        '-c', '--caps', action='store_true',
        help='Capitalize words. This is the default.')
    cap_group.add_argument(
        '--no-caps', action='store_false', dest='caps',
        help='Turn off capitalization.')
    parser.add_argument(
        '-s', '--specials', default=0, type=int, metavar='NUM',
        help="Insert NUM special chars into generated word.")
    parser.add_argument(
        '-d', '--delimiter', default='',
        help="Separate words by DELIMITER. Empty string by default.")
    parser.add_argument(
        '-r', '--randomsource', default='system', choices=random_sources,
        metavar="SOURCE",
        help=(
            "Get randomness from this source. Possible values: `%s'. "
            "Default: system" % "', `".join(sorted(random_sources))))
    parser.add_argument(
        '-w', '--wordlist', default='en_eff', choices=wordlist_names,
        metavar="NAME",
        help=(
            "Use words from this wordlist. Possible values: `%s'. "
            "Wordlists are stored in the folder displayed below. "
            "Default: en_eff" % "', `".join(wordlist_names)))
    realdice_group = parser.add_argument_group(
        "Arguments related to `realdice' randomsource",
        )
    realdice_group.add_argument(
            '--dice-sides', default=6, type=int, metavar="N",
            help='Number of sides of dice. Default: 6'
        )
    parser.add_argument(
        'infile', nargs='?', metavar='INFILE', default=None,
        help="Input wordlist. `-' will read from stdin.",
        )
    parser.add_argument(
        '-v', '--verbose', action='count',
        help='Be verbose. Use several times for increased verbosity.')
    parser.add_argument(
        '--version', action='store_true',
        help='output version information and exit.',
        )
    for plugin in plugins.values():
        if hasattr(plugin, "update_argparser"):
            parser = plugin.update_argparser(parser)
    parser.set_defaults(**defaults)
    args = parser.parse_args(args)
    return args
示例#16
0
 def test_get_config_dict_returns_wordlists_as_list(self, home_dir):
     # wordlist settings are returned as lists
     config_file = home_dir / ".diceware.ini"
     config_file.write("\n".join(["[diceware]", "wordlist=en_eff", ""]))
     config_dict = get_config_dict()
     assert config_dict["wordlist"] == ["en_eff"]