Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_acrostic(self):
word = "face"
result = xkcd_password.generate_xkcdpassword(
self.wordlist_small,
acrostic=word)
self.assertEqual("".join(map(lambda x: x[0], result.split())), word)
def test_set_case(self):
words = "this is only a test".lower().split()
words_before = set(words)
results = {}
results["lower"] = xkcd_password.set_case(words, method="lower")
results["upper"] = xkcd_password.set_case(words, method="upper")
results["alternating"] = xkcd_password.set_case(words, method="alternating")
results["random"] = xkcd_password.set_case(words, method="random", testing=True)
results["first"] = xkcd_password.set_case(words, method="first")
words_after = set(word.lower() for group in list(results.values()) for word in group)
# Test that no words have been fundamentally mutated by any of the methods
self.assertTrue(words_before == words_after)
# Test that the words have been uppered or lowered respectively.
self.assertTrue(all(word.islower() for word in results["lower"]))
self.assertTrue(all(word.isupper() for word in results["upper"]))
self.assertTrue(all(word.istitle() for word in results["first"]))
# Test that the words have been correctly uppered randomly.
expected_random_result_1_py3 = ['THIS', 'IS', 'ONLY', 'a', 'test']
expected_random_result_2_py3 = ['THIS', 'IS', 'a', 'test', 'ALSO']
expected_random_result_1_py2 = ['this', 'is', 'only', 'a', 'TEST']
expected_random_result_2_py2 = ['this', 'is', 'a', 'TEST', 'also']
# Test that no words have been fundamentally mutated by any of the methods
self.assertTrue(words_before == words_after)
# Test that the words have been uppered or lowered respectively.
self.assertTrue(all(word.islower() for word in results["lower"]))
self.assertTrue(all(word.isupper() for word in results["upper"]))
self.assertTrue(all(word.istitle() for word in results["first"]))
# Test that the words have been correctly uppered randomly.
expected_random_result_1_py3 = ['THIS', 'IS', 'ONLY', 'a', 'test']
expected_random_result_2_py3 = ['THIS', 'IS', 'a', 'test', 'ALSO']
expected_random_result_1_py2 = ['this', 'is', 'only', 'a', 'TEST']
expected_random_result_2_py2 = ['this', 'is', 'a', 'TEST', 'also']
words_extra = "this is a test also".lower().split()
observed_random_result_1 = results["random"]
observed_random_result_2 = xkcd_password.set_case(
words_extra,
method="random",
testing=True
)
self.assertIn(observed_random_result_1, (expected_random_result_1_py2, expected_random_result_1_py3))
self.assertIn(observed_random_result_2, (expected_random_result_2_py2, expected_random_result_2_py3))
def test_set_case(self):
words = "this is only a test".lower().split()
words_before = set(words)
results = {}
results["lower"] = xkcd_password.set_case(words, method="lower")
results["upper"] = xkcd_password.set_case(words, method="upper")
results["alternating"] = xkcd_password.set_case(words, method="alternating")
results["random"] = xkcd_password.set_case(words, method="random", testing=True)
results["first"] = xkcd_password.set_case(words, method="first")
words_after = set(word.lower() for group in list(results.values()) for word in group)
# Test that no words have been fundamentally mutated by any of the methods
self.assertTrue(words_before == words_after)
# Test that the words have been uppered or lowered respectively.
self.assertTrue(all(word.islower() for word in results["lower"]))
self.assertTrue(all(word.isupper() for word in results["upper"]))
self.assertTrue(all(word.istitle() for word in results["first"]))
# Test that the words have been correctly uppered randomly.
expected_random_result_1_py3 = ['THIS', 'IS', 'ONLY', 'a', 'test']
expected_random_result_2_py3 = ['THIS', 'IS', 'a', 'test', 'ALSO']
def test_set_case(self):
words = "this is only a test".lower().split()
words_before = set(words)
results = {}
results["lower"] = xkcd_password.set_case(words, method="lower")
results["upper"] = xkcd_password.set_case(words, method="upper")
results["alternating"] = xkcd_password.set_case(words, method="alternating")
results["random"] = xkcd_password.set_case(words, method="random", testing=True)
results["first"] = xkcd_password.set_case(words, method="first")
words_after = set(word.lower() for group in list(results.values()) for word in group)
# Test that no words have been fundamentally mutated by any of the methods
self.assertTrue(words_before == words_after)
# Test that the words have been uppered or lowered respectively.
self.assertTrue(all(word.islower() for word in results["lower"]))
self.assertTrue(all(word.isupper() for word in results["upper"]))
self.assertTrue(all(word.istitle() for word in results["first"]))
# Test that the words have been correctly uppered randomly.
expected_random_result_1_py3 = ['THIS', 'IS', 'ONLY', 'a', 'test']
expected_random_result_2_py3 = ['THIS', 'IS', 'a', 'test', 'ALSO']
expected_random_result_1_py2 = ['this', 'is', 'only', 'a', 'TEST']
def setUp(self):
""" Set up fixtures for this test case. """
self.wordlist_small = xkcd_password.generate_wordlist(
wordfile='tests/test_list.txt',
valid_chars='[a-z]')
self.options = argparse.Namespace(
interactive=False,
numwords=6,
count=1,
acrostic=False,
delimiter=" ",
separator=u"\n",
case='lower',
)
self.stdout_patcher = mock.patch.object(
sys, 'stdout', new_callable=io.StringIO)
def test_delim(self):
tdelim = "_"
result = xkcd_password.generate_xkcdpassword(
self.wordlist_small,
delimiter=tdelim)
self.assertIsNotNone(re.match('([a-z]+(_|$))+', result))
def test_emits_no_separator_when_specified_separator_empty(self):
""" Should emit no separator when empty separator specified. """
self.options.count = 1
self.options.separator = u""
with self.stdout_patcher as mock_stdout:
xkcd_password.emit_passwords(
wordlist=self.wordlist_small,
options=self.options)
output = mock_stdout.getvalue()
unwanted_separator = "\n"
self.assertEqual(output.find(unwanted_separator), -1)
def test_emits_specified_separator_between_passwords(self):
""" Should emit specified separator text between each password. """
self.options.count = 3
self.options.separator = u"!@#$%"
with self.stdout_patcher as mock_stdout:
xkcd_password.emit_passwords(
wordlist=self.wordlist_small,
options=self.options)
output = mock_stdout.getvalue()
expected_separator = self.options.separator
expected_separator_count = self.options.count
self.assertEqual(
output.count(expected_separator), expected_separator_count)
def test_emits_specified_count_of_passwords(self):
""" Should emit passwords numbering specified `count`. """
self.options.count = 6
with self.stdout_patcher as mock_stdout:
xkcd_password.emit_passwords(
wordlist=self.wordlist_small,
options=self.options)
output = mock_stdout.getvalue()
expected_separator = self.options.separator
expected_separator_count = self.options.count
self.assertEqual(
output.count(expected_separator), expected_separator_count)