from django.test import TestCase from users.models import PaymentMethod, User from store.utils import Encryptor class PaymentEncryptionTest(TestCase): def test_encryption_decryption(self): user = User.objects.create_user(username='testuser', password='password') pm = PaymentMethod(user=user, brand='Visa', exp_month=12, exp_year=2030) # Test setter pm.card_number = '1234567890123456' pm.cvv = '123' # Verify it's encrypted self.assertIsNotNone(pm.card_number_encrypted) self.assertNotEqual(pm.card_number_encrypted, b'1234567890123456') # Verify getter self.assertEqual(pm.card_number, '1234567890123456') self.assertEqual(pm.cvv, '123') # Save and retrieval pm.save() pm_fetched = PaymentMethod.objects.get(id=pm.id) self.assertEqual(pm_fetched.card_number, '1234567890123456') self.assertEqual(pm_fetched.cvv, '123') self.assertEqual(pm_fetched.last4, '3456')