def main(): parser = argparse.ArgumentParser( description="Generate a passphrase using the Diceware algorithm.", formatter_class=argparse.RawDescriptionHelpFormatter, ) parser.add_argument( '--version', action='version', version=version_message.format(version=__version__), ) parser.add_argument( '-n', '--wordcount', metavar='N', type=int, default=6, help="the number of words to build the passphrase from", ) parser.add_argument( '-l', '--language', metavar='LANG', default='en', choices=list(get_languages()), help="the language to use for the words of the passphrase", ) parser.add_argument( '-s', '--separator', metavar='SEP', default=' ', help='the separator to use between the words', ) args = parser.parse_args() passphrase = generate_passphrase( args.wordcount, language=args.language, separator=args.separator ) print(passphrase)
def test_default_language(self): passphrase = generate_passphrase(2).split() password_choices = get_word_dict('en').values() self.assertTrue(all(pw in password_choices for pw in passphrase))
def test_en_beale(self): passphrase = generate_passphrase(2, language='en-beale').split() password_choices = get_word_dict('en-beale').values() self.assertTrue(all(pw in password_choices for pw in passphrase))
def test_unsupported_language(self): with self.assertRaisesRegex(ValueError, "unsupported language 'foo'"): generate_passphrase(1, language='foo')
def test_custom_separator(self): passphrase = generate_passphrase(2, separator='\t') self.assertGreater(len(passphrase), 0) self.assertEqual(passphrase.count('\t'), 1)
def test_two_words(self): passphrase = generate_passphrase(2) self.assertGreater(len(passphrase), 0) self.assertEqual(passphrase.count(' '), 1)
def test_one_word(self): passphrase = generate_passphrase(1) self.assertGreater(len(passphrase), 0) self.assertEqual(passphrase.count(' '), 0)
def test_zero_words(self): self.assertEqual(generate_passphrase(0), '')