diff --git a/django_aws_ses/settings.py b/django_aws_ses/settings.py index 231b9a2..f121245 100644 --- a/django_aws_ses/settings.py +++ b/django_aws_ses/settings.py @@ -110,18 +110,22 @@ if not BASE_DIR: aws_ses_settings = get_aws_ses_settings() # AWS Credentials -ACCESS_KEY = aws_ses_settings.access_key if aws_ses_settings else getattr( - django_settings, 'AWS_SES_ACCESS_KEY_ID', getattr(django_settings, 'AWS_ACCESS_KEY_ID', None) -) -SECRET_KEY = aws_ses_settings.secret_key if aws_ses_settings else getattr( - django_settings, 'AWS_SES_SECRET_ACCESS_KEY', getattr(django_settings, 'AWS_SECRET_ACCESS_KEY', None) -) - -if not (ACCESS_KEY and SECRET_KEY): - raise ImproperlyConfigured( - "AWS SES credentials (AWS_SES_ACCESS_KEY_ID and AWS_SES_SECRET_ACCESS_KEY) must be provided " - "via AwsSesSettings or Django settings." +if getattr(django_settings, 'TESTING', False): + ACCESS_KEY = 'test-key' + SECRET_KEY = 'test-secret' +else: + ACCESS_KEY = aws_ses_settings.access_key if aws_ses_settings else getattr( + django_settings, 'AWS_SES_ACCESS_KEY_ID', getattr(django_settings, 'AWS_ACCESS_KEY_ID', None) ) + SECRET_KEY = aws_ses_settings.secret_key if aws_ses_settings else getattr( + django_settings, 'AWS_SES_SECRET_ACCESS_KEY', getattr(django_settings, 'AWS_SECRET_ACCESS_KEY', None) + ) + + if not (ACCESS_KEY and SECRET_KEY): + raise ImproperlyConfigured( + "AWS SES credentials (AWS_SES_ACCESS_KEY_ID and AWS_SES_SECRET_ACCESS_KEY) must be provided " + "via AwsSesSettings or Django settings." + ) # AWS SES Configuration AWS_SES_REGION_NAME = aws_ses_settings.region_name if aws_ses_settings else getattr( diff --git a/django_aws_ses/tests.py b/django_aws_ses/tests.py index 4a1ea64..7a1faa2 100644 --- a/django_aws_ses/tests.py +++ b/django_aws_ses/tests.py @@ -1,6 +1,7 @@ from django.test import TestCase, RequestFactory, override_settings from django.core.mail import EmailMessage from django.contrib.auth import get_user_model +from django.contrib.sites.models import Site from django.urls import reverse from django.utils.http import urlsafe_base64_encode from django.utils.encoding import force_bytes @@ -10,7 +11,7 @@ import json from .backends import SESBackend from .views import handle_bounce, HandleUnsubscribe from .utils import filter_recipients -from .models import BounceRecord, ComplaintRecord, AwsSesUserAddon +from .models import BounceRecord, ComplaintRecord, AwsSesUserAddon, AwsSesSettings User = get_user_model() @@ -21,10 +22,22 @@ User = get_user_model() AWS_SES_REGION_ENDPOINT='email.us-east-1.amazonaws.com', EMAIL_BACKEND='django_aws_ses.backends.SESBackend', SES_BOUNCE_LIMIT=1, + TESTING=True, ) class DjangoAwsSesTests(TestCase): def setUp(self): self.factory = RequestFactory() + # Create a Site instance + self.site = Site.objects.create(id=1, domain='example.com', name='example.com') + # Create AwsSesSettings for the Site + AwsSesSettings.objects.create( + site=self.site, + access_key='test-key', + secret_key='test-secret', + region_name='us-east-1', + region_endpoint='email.us-east-1.amazonaws.com' + ) + # Create test user self.user = User.objects.create_user( username='testuser', email='test@example.com', password='testpass' )