|
4 | 4 | import logging |
5 | 5 | import os |
6 | 6 | from subprocess import call, Popen, PIPE |
| 7 | +import tempfile |
7 | 8 | import quopri |
8 | 9 |
|
9 | 10 | from ssm.crypto import check_cert_key, \ |
@@ -59,24 +60,35 @@ def tearDown(self): |
59 | 60 | os.remove(self.ca_certpath) |
60 | 61 |
|
61 | 62 | def test_check_cert_key(self): |
62 | | - ''' |
63 | | - This will print an error log message for the tests that are |
64 | | - supposed to fail; you can ignore it. |
65 | | - ''' |
66 | | - |
67 | | - # One version of the method would have passed this, because of the |
68 | | - # way it checked for validity. |
69 | | - try: |
70 | | - if check_cert_key('hello', 'hello'): |
71 | | - self.fail('Accepted non-existent cert and key.') |
72 | | - except CryptoException: |
73 | | - pass |
74 | | - |
75 | | - if check_cert_key(TEST_CERT_FILE, TEST_CERT_FILE): |
76 | | - self.fail('Accepted certificate as key.') |
77 | | - |
78 | | - if not check_cert_key(TEST_CERT_FILE, TEST_KEY_FILE): |
79 | | - self.fail('Cert and key match but function failed.') |
| 63 | + """Check that valid cert and key works.""" |
| 64 | + self.assertTrue(check_cert_key(TEST_CERT_FILE, TEST_KEY_FILE), |
| 65 | + 'Cert and key match but function failed.') |
| 66 | + |
| 67 | + def test_check_cert_key_invalid_paths(self): |
| 68 | + """Check invalid file paths don't return True.""" |
| 69 | + self.assertFalse(check_cert_key('hello', 'hello'), |
| 70 | + 'Accepted invalid file paths.') |
| 71 | + self.assertFalse(check_cert_key(TEST_CERT_FILE, 'k'), |
| 72 | + 'Accepted invalid key path.') |
| 73 | + self.assertFalse(check_cert_key('c', TEST_KEY_FILE), |
| 74 | + 'Accepted invalid cert path.') |
| 75 | + |
| 76 | + def test_check_cert_key_arg_order(self): |
| 77 | + """Check incorrect order of cert and key path args doesn't succeed.""" |
| 78 | + self.assertFalse(check_cert_key(TEST_CERT_FILE, TEST_CERT_FILE), |
| 79 | + 'Accepted certificate as key.') |
| 80 | + self.assertFalse(check_cert_key(TEST_KEY_FILE, TEST_KEY_FILE), |
| 81 | + 'Accepted key as cert.') |
| 82 | + self.assertFalse(check_cert_key(TEST_KEY_FILE, TEST_CERT_FILE), |
| 83 | + 'Accepted key and cert wrong way round.') |
| 84 | + |
| 85 | + def test_check_cert_key_invalid_files(self): |
| 86 | + """Check behaviour with an invalid cert or key file.""" |
| 87 | + with tempfile.NamedTemporaryFile() as tmp: |
| 88 | + self.assertFalse(check_cert_key(tmp.name, TEST_KEY_FILE), |
| 89 | + 'Accepted invalid cert file.') |
| 90 | + self.assertFalse(check_cert_key(TEST_CERT_FILE, tmp.name), |
| 91 | + 'Accepted invalid key file.') |
80 | 92 |
|
81 | 93 | def test_sign(self): |
82 | 94 | ''' |
|
0 commit comments