Generiert pytest-Stubs fuer Zahlungs-Flows: Stripe Webhooks, PayPal IPN, SEPA Export, Spenden-Processing mit korrekten Mock-Patterns
Generiert pytest-Testfaelle fuer die ungetesteten Zahlungs-Flows der MOe-Plattform.
| Service | Datei | Tests fehlen fuer |
|---|---|---|
| Stripe | apps/api/app/services/stripe_service.py | Webhook-Handling, Subscription, Refund |
| PayPal | apps/api/app/services/paypal_service.py | IPN-Verifizierung, Capture, Payout |
| SEPA | apps/api/app/services/sepa_service.py | Lastschrift-Export, Mandatsvalidierung |
| Spenden | apps/api/app/services/donation_service.py | Processing-Flow, Quittung, CRM-Sync |
| Rechnungen | apps/api/app/services/invoice_service.py | Erstellung, Versand, Stornierung |
from unittest.mock import patch, MagicMock
@patch("app.services.stripe_service.stripe.Webhook.construct_event")
def test_stripe_webhook_payment_succeeded(mock_construct):
mock_construct.return_value = {
"type": "payment_intent.succeeded",
"data": {"object": {"id": "pi_test_123", "amount": 5000}}
}
# ...
@patch("app.services.paypal_service.requests.post")
def test_paypal_ipn_verified(mock_post):
mock_post.return_value = MagicMock(text="VERIFIED", status_code=200)
# ...
def test_sepa_xml_generation():
"""SEPA-XML (pain.008) muss Schema-valide sein."""
# ...
Jeder generierte Test folgt diesem Muster:
"""Tests for {service_name} — {beschreibung}."""
import pytest
from unittest.mock import patch, MagicMock
from fastapi.testclient import TestClient
from app.main import app
client = TestClient(app)
class TestStripeWebhook:
"""Stripe Webhook Handler Tests."""
def test_valid_payment_succeeded(self):
"""Successful payment triggers CRM update and receipt."""
...
def test_invalid_signature_rejected(self):
"""Invalid webhook signature returns 400."""
...
def test_duplicate_event_idempotent(self):
"""Duplicate event IDs are handled idempotently."""
...
sk_test_*, pk_test_*whsec_test_123