Log account delete and subscription changes in UserAuthEvent
Add account_deleted, subscription_started, and subscription_updated event types. Soft-delete, Checkout/Backer assign, and Stripe portal lifecycle webhooks write audit rows visible on the user admin.
This commit is contained in:
@@ -8,6 +8,7 @@ from rest_framework import status
|
||||
from rest_framework.test import APITestCase
|
||||
|
||||
from chat_backend.tests.factories import make_company, make_user
|
||||
from chat_backend.models import UserAuthEvent
|
||||
from finance.models import Invoice, Payment, UserSubscription
|
||||
from finance.services.plans import assign_plan_from_stripe, seed_subscription_plans
|
||||
from finance.services.webhooks import (
|
||||
@@ -123,10 +124,15 @@ class WebhookHandlerUnitTestCase(APITestCase):
|
||||
"currency": "usd",
|
||||
}
|
||||
handle_checkout_session_completed(session)
|
||||
sub = self.user.subscription
|
||||
sub = UserSubscription.objects.get(user=self.user)
|
||||
self.assertEqual(sub.plan.slug, "founders")
|
||||
self.assertEqual(sub.source, UserSubscription.Source.STRIPE)
|
||||
self.assertEqual(sub.status, UserSubscription.Status.ACTIVE)
|
||||
started = UserAuthEvent.objects.get(
|
||||
user=self.user,
|
||||
event_type=UserAuthEvent.EventType.SUBSCRIPTION_STARTED,
|
||||
)
|
||||
self.assertIn("founders", started.detail)
|
||||
|
||||
def test_subscription_updated_sets_cancel_at_period_end(self):
|
||||
seed_subscription_plans(update_existing=False)
|
||||
@@ -149,6 +155,11 @@ class WebhookHandlerUnitTestCase(APITestCase):
|
||||
self.assertTrue(sub.cancel_at_period_end)
|
||||
self.assertEqual(sub.status, UserSubscription.Status.ACTIVE)
|
||||
self.assertIsNotNone(sub.current_period_end)
|
||||
updated = UserAuthEvent.objects.filter(
|
||||
user=self.user,
|
||||
event_type=UserAuthEvent.EventType.SUBSCRIPTION_UPDATED,
|
||||
).latest("created")
|
||||
self.assertIn("cancel_at_period_end=True", updated.detail)
|
||||
|
||||
def test_subscription_deleted_marks_canceled(self):
|
||||
seed_subscription_plans(update_existing=False)
|
||||
@@ -169,6 +180,11 @@ class WebhookHandlerUnitTestCase(APITestCase):
|
||||
sub = UserSubscription.objects.get(user=self.user)
|
||||
self.assertEqual(sub.status, UserSubscription.Status.CANCELED)
|
||||
self.assertFalse(sub.cancel_at_period_end)
|
||||
updated = UserAuthEvent.objects.filter(
|
||||
user=self.user,
|
||||
event_type=UserAuthEvent.EventType.SUBSCRIPTION_UPDATED,
|
||||
).latest("created")
|
||||
self.assertIn("status=canceled", updated.detail)
|
||||
|
||||
|
||||
class StripeWebhookViewTestCase(APITestCase):
|
||||
|
||||
Reference in New Issue
Block a user