Exemplo n.º 1
0
 def test_main_option_coin(self, mock_print_stderr):
     arg = [
         '--coin',
     ]
     self.assertEqual(main(arg), 0)
     result = sys.stdout.getvalue()[:-1]  # remove newline
     self.assertIn(result, ('Heads', 'Tails'))
     arg = ['--coin', '--verbose']
     self.assertEqual(main(arg), 0)
     mock_print_stderr.assert_any_call('Throwing a coin')
Exemplo n.º 2
0
 def test_main_option_uuid4(self, mock_print_stderr):
     arg = [
         '--uuid4',
     ]
     self.assertEqual(main(arg), 0)
     result = sys.stdout.getvalue()[:-1]  # remove newline
     self.assertRegex(
         result, r'[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-'
         r'[0-9a-f]{12}')
     arg = ['--uuid4', '--verbose']
     self.assertEqual(main(arg), 0)
     mock_print_stderr.assert_any_call('Generating UUID v4')
Exemplo n.º 3
0
 def test_main_option_password_use_punctuation(self):
     arg = ['--password', '--use-punctuation']
     self.assertEqual(main(arg), 0)
     result = sys.stdout.getvalue()[:-1]  # remove newline
     self.assertRegex(
         result, r'[\!\"\#\$\%\&\\\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\]\^\_'
         r'\`\{\|\}\~]+')
Exemplo n.º 4
0
 def test_main_option_version(self):
     arg = [
         '--version',
     ]
     self.assertEqual(main(arg), 0)
     result = sys.stdout.getvalue()
     self.assertEqual(result, main_version_string + '\n')
Exemplo n.º 5
0
 def test_main_option_insecure(self, mock_system_entropy,
                               mock_print_stderr):
     mock_system_entropy.return_value = 1
     self.assertEqual(main([]), 1)
     mock_print_stderr.assert_any_call(
         'Warning: the system has too few entropy: 1 bits; randomness '
         'quality could be poor')
     mock_print_stderr.assert_any_call(
         'Error: system entropy too low: 1 < 128')
     arg = [
         '--insecure',
     ]
     self.assertEqual(main(arg), 0)
     mock_print_stderr.assert_any_call(
         'Warning: the system has too few entropy: 1 bits; randomness '
         'quality could be poor')
Exemplo n.º 6
0
 def test_main_option_input(self, mock_print_stderr, mock_import_file):
     args = [['--input', '/somedir/somefile'], ['-i', '/somedir/somefile']]
     mock_import_file.side_effect = IOError()
     for arg in args:
         self.assertEqual(main(arg), 1)
         mock_print_stderr.assert_called_with(
             "Error: input file /somedir/somefile is empty or it can't be "
             "opened or read")
Exemplo n.º 7
0
 def test_main_option_password(self, mock_print_stderr):
     args = (['--password'], ['-p'], ['--password', '0'], ['-p', '0'])
     for arg in args:
         self.assertEqual(main(arg), 0)
         result = sys.stdout.getvalue()[:-1]  # remove newline
         self.assertRegex(
             result,
             r'[a-zA-Z\d\!\"\#\$\%\&\\\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\]'
             r'\^\_\`\{\|\}\~]+')
         sys.stdout = StringIO()  # reset
     arg = ['--password', '8', '--verbose']
     self.assertEqual(main(arg), 0)
     mock_print_stderr.assert_any_call(
         'Warning: insecure password length chosen! Should be bigger than '
         'or equal to 12')
     mock_print_stderr.assert_any_call(
         'Generating password of 8 characters long using uppercase '
         'characters, lowercase characters, digits, punctuation characters')
Exemplo n.º 8
0
 def test_main_option_entropy_bits(self, mock_print_stderr):
     args = [['--entropy', '1'], ['-e', '1']]
     for arg in args:
         self.assertEqual(main(arg), 0)
         mock_print_stderr.assert_any_call(
             'Warning: insecure number of bits for entropy calculations '
             'chosen! Should be bigger than 77')
         mock_print_stderr.assert_any_call(
             'Warning: the passphrase is too short!')
Exemplo n.º 9
0
 def test_main_option_output(self, mock_makedirs, mock_dirname, mock_open,
                             mock_print_stderr):
     args = [['--output', '/somedir/somefile'], ['-o', '/somedir/somefile']]
     mock_dirname.return_value = '/somedir'
     mock_makedirs.side_effect = PermissionError()
     for arg in args:
         self.assertEqual(main(arg), 1)
         mock_dirname.assert_called_with('/somedir/somefile')
         mock_makedirs.assert_called_with('/somedir', exist_ok=True)
         mock_print_stderr.assert_called_with(
             'Error: permission denied to create directory /somedir')
     mock_makedirs.side_effect = None
     mock_open.side_effect = IOError()
     for arg in args:
         self.assertEqual(main(arg), 1)
         mock_dirname.assert_called_with('/somedir/somefile')
         mock_makedirs.assert_called_with('/somedir', exist_ok=True)
         mock_print_stderr.assert_called_with(
             "Error: file /somedir/somefile can't be opened or written")
Exemplo n.º 10
0
 def test_main_defaults(self):
     arg = []
     self.assertEqual(main(arg), 0)
     # ends with newline
     self.assertEqual(sys.stdout.getvalue()[-1:], '\n')
     # remove newline
     result = sys.stdout.getvalue()[:-1]
     # has only letters, and are lowercase
     self.assertTrue(all([c.islower() for c in result.split()]))
     # has 6 words
     self.assertEqual(len(result.split()), 6)
Exemplo n.º 11
0
 def test_main_option_output(self, mock_makedirs, mock_dirname, mock_open):
     args = [['--output', '/somedir/somefile'], ['-o', '/somedir/somefile']]
     mock_dirname.return_value = '/somedir'
     mock_makedirs.return_value = True
     for arg in args:
         self.assertEqual(main(arg), 0)
         mock_dirname.assert_called_with('/somedir/somefile')
         mock_makedirs.assert_called_with('/somedir', exist_ok=True)
         mock_open.assert_called_with('/somedir/somefile',
                                      mode='wt',
                                      encoding='utf-8')
Exemplo n.º 12
0
 def test_main_option_words(self, mock_print_stderr):
     args = (['--words', '2'], ['-w', '2'])
     for arg in args:
         self.assertEqual(main(arg), 0)
         mock_print_stderr.assert_any_call(
             'Warning: insecure amount of words chosen! Should be bigger '
             'than or equal to 6')
         mock_print_stderr.assert_any_call(
             'Warning: the passphrase is too short!')
         result = sys.stdout.getvalue()[:-1]  # remove newline
         self.assertRegex(result, r'^([a-z\-]+[ ])+[a-z\-]+$')
         sys.stdout = StringIO()  # reset
Exemplo n.º 13
0
 def test_main_option_verbose(self, mock_print_stderr):
     args = ([
         '--verbose',
     ], [
         '-v',
     ])
     for arg in args:
         self.assertEqual(main(arg), 0)
         mock_print_stderr.assert_any_call(main_version_string)
         mock_print_stderr.assert_any_call(
             'Using 77 bits of entropy for calculations (if any). '
             'The minimum recommended is 77')
         mock_print_stderr.assert_any_call(
             'Generating a passphrase of 6 words and 0 numbers using '
             'internal wordlist')
         mock_print_stderr.assert_any_call(
             'The entropy of this passphrase is 77.55 bits')
Exemplo n.º 14
0
 def test_main_option_no_newline(self):
     arg = ['--no-newline']
     self.assertEqual(main(arg), 0)
     result = sys.stdout.getvalue()
     self.assertNotEqual(result[-1:], '\n')
Exemplo n.º 15
0
 def test_main_option_password_use_lowercase(self):
     arg = ['--password', '--use-lowercase']
     self.assertEqual(main(arg), 0)
     result = sys.stdout.getvalue()[:-1]  # remove newline
     self.assertRegex(result, r'[a-z\-]+')
Exemplo n.º 16
0
 def test_main_option_password_use_digits(self):
     arg = ['--password', '--use-digits']
     self.assertEqual(main(arg), 0)
     result = sys.stdout.getvalue()[:-1]  # remove newline
     self.assertRegex(result, r'[\d]+')
Exemplo n.º 17
0
 def test_main_option_password_use_alphanumeric(self):
     arg = ['--password', '--use-alphanumeric']
     self.assertEqual(main(arg), 0)
     result = sys.stdout.getvalue()[:-1]  # remove newline
     self.assertRegex(result, r'[a-zA-Z\d\-]+')