Files
sentinel/tests/sentry/api/endpoints/test_user_subscriptions.py
2024-02-15 17:01:50 +00:00

62 lines
2.3 KiB
Python

import pytest
from django.conf import settings
from sentry import newsletter
from sentry.models.useremail import UserEmail
from sentry.testutils.cases import APITestCase
from sentry.testutils.silo import control_silo_test
@pytest.mark.skipif(
settings.SENTRY_NEWSLETTER != "sentry.newsletter.dummy.DummyNewsletter",
reason="Requires DummyNewsletter.",
)
@control_silo_test
class UserSubscriptionsNewsletterTest(APITestCase):
endpoint = "sentry-api-0-user-subscriptions"
method = "put"
def setUp(self):
self.user = self.create_user(email="[email protected]")
self.login_as(self.user)
def disable_newsletter():
newsletter.backend.disable()
self.addCleanup(disable_newsletter)
newsletter.backend.enable()
def test_get_subscriptions(self):
self.get_success_response(self.user.id, method="get")
def test_subscribe(self):
self.get_success_response(self.user.id, listId="123", subscribed=True, status_code=204)
results = newsletter.backend.get_subscriptions(self.user)["subscriptions"]
assert len(results) == 1
assert results[0].list_id == 123
assert results[0].subscribed
assert results[0].verified
def test_requires_subscribed(self):
self.get_error_response(self.user.id, listId="123", status_code=400)
def test_unverified_emails(self):
UserEmail.objects.get(email=self.user.email).update(is_verified=False)
self.get_success_response(self.user.id, listId="123", subscribed=True, status_code=204)
def test_unsubscribe(self):
self.get_success_response(self.user.id, listId="123", subscribed=False, status_code=204)
results = newsletter.backend.get_subscriptions(self.user)["subscriptions"]
assert len(results) == 1
assert results[0].list_id == 123
assert not results[0].subscribed
assert results[0].verified
def test_default_subscription(self):
self.get_success_response(self.user.id, method="post", subscribed=True, status_code=204)
results = newsletter.backend.get_subscriptions(self.user)["subscriptions"]
assert len(results) == 1
assert results[0].list_id == newsletter.backend.get_default_list_id()
assert results[0].subscribed
assert results[0].verified