updated tests.py again

This commit is contained in:
Raymond Jessop 2025-04-18 19:26:36 -05:00
parent df3c123236
commit 900a8e412f
1 changed files with 19 additions and 4 deletions

View File

@ -7,6 +7,7 @@ from django.utils.http import urlsafe_base64_encode
from django.utils.encoding import force_bytes from django.utils.encoding import force_bytes
from unittest.mock import patch, Mock from unittest.mock import patch, Mock
import json import json
import uuid
from .backends import SESBackend from .backends import SESBackend
from .views import handle_bounce, HandleUnsubscribe from .views import handle_bounce, HandleUnsubscribe
@ -43,6 +44,7 @@ class DjangoAwsSesTests(TestCase):
) )
# Ensure AwsSesSettings exists # Ensure AwsSesSettings exists
if not AwsSesSettings.objects.filter(site=self.site).exists(): if not AwsSesSettings.objects.filter(site=self.site).exists():
print(f"Creating AwsSesSettings for site {self.site.id}")
AwsSesSettings.objects.create( AwsSesSettings.objects.create(
site=self.site, site=self.site,
access_key='test-key', access_key='test-key',
@ -50,6 +52,12 @@ class DjangoAwsSesTests(TestCase):
region_name='us-east-1', region_name='us-east-1',
region_endpoint='email.us-east-1.amazonaws.com' region_endpoint='email.us-east-1.amazonaws.com'
) )
# Verify AwsSesSettings creation
try:
settings_obj = AwsSesSettings.objects.get(site=self.site)
print(f"AwsSesSettings created: {settings_obj}")
except AwsSesSettings.DoesNotExist:
print("Failed to verify AwsSesSettings creation")
# Create test user # Create test user
self.user = User.objects.create_user( self.user = User.objects.create_user(
username='testuser', email='test@example.com', password='testpass' username='testuser', email='test@example.com', password='testpass'
@ -65,6 +73,11 @@ class DjangoAwsSesTests(TestCase):
'MessageId': 'test-id', 'MessageId': 'test-id',
'ResponseMetadata': {'RequestId': 'test-request-id'} 'ResponseMetadata': {'RequestId': 'test-request-id'}
} }
mock_ses.get_send_quota.return_value = {
'MaxSendRate': 10.0,
'Max24HourSend': 20000.0,
'SentLast24Hours': 1000.0
}
mock_boto_client.return_value = mock_ses mock_boto_client.return_value = mock_ses
backend = SESBackend() backend = SESBackend()
@ -124,9 +137,10 @@ class DjangoAwsSesTests(TestCase):
def test_unsubscribe_confirmation(self): def test_unsubscribe_confirmation(self):
"""Test unsubscribe confirmation page and action.""" """Test unsubscribe confirmation page and action."""
uuid = urlsafe_base64_encode(force_bytes(str(self.user.pk))) user_uuid = str(uuid.uuid1())
uuid_b64 = urlsafe_base64_encode(user_uuid.encode())
hash_value = self.ses_addon.unsubscribe_hash_generator() hash_value = self.ses_addon.unsubscribe_hash_generator()
url = reverse('django_aws_ses:aws_ses_unsubscribe', kwargs={'uuid': uuid, 'hash': hash_value}) url = reverse('django_aws_ses:aws_ses_unsubscribe', kwargs={'uuid': user_uuid, 'hash': hash_value})
# Test GET (confirmation page) # Test GET (confirmation page)
response = self.client.get(url) response = self.client.get(url)
@ -145,9 +159,10 @@ class DjangoAwsSesTests(TestCase):
"""Test re-subscribe confirmation action.""" """Test re-subscribe confirmation action."""
self.ses_addon.unsubscribe = True self.ses_addon.unsubscribe = True
self.ses_addon.save() self.ses_addon.save()
uuid = urlsafe_base64_encode(force_bytes(str(self.user.pk))) user_uuid = str(uuid.uuid1())
uuid_b64 = urlsafe_base64_encode(user_uuid.encode())
hash_value = self.ses_addon.unsubscribe_hash_generator() hash_value = self.ses_addon.unsubscribe_hash_generator()
url = reverse('django_aws_ses:aws_ses_unsubscribe', kwargs={'uuid': uuid, 'hash': hash_value}) url = reverse('django_aws_ses:aws_ses_unsubscribe', kwargs={'uuid': user_uuid, 'hash': hash_value})
response = self.client.post(url, {'action': 'resubscribe'}) response = self.client.post(url, {'action': 'resubscribe'})
self.ses_addon.refresh_from_db() self.ses_addon.refresh_from_db()