From f52dff611cff2fb9e90340b4787eda50ab2d40c6 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka <storchaka@gmail.com> Date: Tue, 24 Oct 2017 23:11:42 +0300 Subject: bpo-25287: Backport new tests for crypt and skip test_crypt on OpenBSD. (#4111) --- Lib/test/test_crypt.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/Lib/test/test_crypt.py b/Lib/test/test_crypt.py index e4f5897..44a3ad4 100644 --- a/Lib/test/test_crypt.py +++ b/Lib/test/test_crypt.py @@ -1,33 +1,45 @@ +import sys from test import support import unittest crypt = support.import_module('crypt') +if sys.platform.startswith('openbsd'): + raise unittest.SkipTest('The only supported method on OpenBSD is Blowfish') + class CryptTestCase(unittest.TestCase): def test_crypt(self): - c = crypt.crypt('mypassword', 'ab') - if support.verbose: - print('Test encryption: ', c) + cr = crypt.crypt('mypassword') + cr2 = crypt.crypt('mypassword', cr) + self.assertEqual(cr2, cr) + cr = crypt.crypt('mypassword', 'ab') + if cr is not None: + cr2 = crypt.crypt('mypassword', cr) + self.assertEqual(cr2, cr) def test_salt(self): self.assertEqual(len(crypt._saltchars), 64) for method in crypt.methods: salt = crypt.mksalt(method) - self.assertEqual(len(salt), - method.salt_chars + (3 if method.ident else 0)) + self.assertIn(len(salt) - method.salt_chars, {0, 1, 3, 4, 6, 7}) + if method.ident: + self.assertIn(method.ident, salt[:len(salt)-method.salt_chars]) def test_saltedcrypt(self): for method in crypt.methods: - pw = crypt.crypt('assword', method) - self.assertEqual(len(pw), method.total_size) - pw = crypt.crypt('assword', crypt.mksalt(method)) - self.assertEqual(len(pw), method.total_size) + cr = crypt.crypt('assword', method) + self.assertEqual(len(cr), method.total_size) + cr2 = crypt.crypt('assword', cr) + self.assertEqual(cr2, cr) + cr = crypt.crypt('assword', crypt.mksalt(method)) + self.assertEqual(len(cr), method.total_size) def test_methods(self): # Guarantee that METHOD_CRYPT is the last method in crypt.methods. self.assertTrue(len(crypt.methods) >= 1) self.assertEqual(crypt.METHOD_CRYPT, crypt.methods[-1]) + if __name__ == "__main__": unittest.main() -- cgit v0.12