| import os | |
| import sys | |
| import unittest | |
| # Add the project root and backend directory to path | |
| current_file_path = os.path.abspath(__file__) | |
| security_dir = os.path.dirname(current_file_path) | |
| tests_dir = os.path.dirname(security_dir) | |
| backend_dir = os.path.dirname(tests_dir) | |
| project_root = os.path.dirname(backend_dir) | |
| sys.path.insert(0, backend_dir) | |
| sys.path.insert(0, project_root) | |
| class TestMiddlewareSecurity(unittest.TestCase): | |
| def test_secure_hash_delegation(self): | |
| """Ensure middleware.security.hash_password now uses the secure core.auth implementation""" | |
| from middleware.security import hash_password | |
| # This will now use bcrypt if BCRYPT_AVAILABLE is True in core.auth | |
| # Which we enforced in the previous steps. | |
| password = "test_password" | |
| h1 = hash_password(password) | |
| # In the old code, this was a sha256 hex string (64 chars) | |
| # In the new code, it's a bcrypt hash (usually starting with $2b$) | |
| self.assertTrue(h1.startswith("$2b$") or h1.startswith("$2a$")) | |
| # Verify it's not SHA256 (SHA256 of "test_password" is 15e697... but checking length is easier) | |
| self.assertNotEqual(len(h1), 64) | |
| if __name__ == "__main__": | |
| unittest.main() | |