feat: show payment provider webhook urls
This commit is contained in:
@@ -68,3 +68,13 @@ def test_subscription_purchase_description_settings_i18n_keys_exist():
|
||||
assert field["section"] == "pricing"
|
||||
assert field["i18n_label_key"] in messages
|
||||
assert field["i18n_description_key"] in messages
|
||||
|
||||
|
||||
def test_payment_provider_settings_include_webhook_metadata():
|
||||
manifest = _manifest_by_key()
|
||||
|
||||
assert manifest["FREEKASSA_ENABLED"]["webhook_path"] == "/webhook/freekassa"
|
||||
assert manifest["FREEKASSA_ENABLED"]["provider_id"] == "freekassa"
|
||||
assert manifest["PAYMENT_PLATEGA_CRYPTO_WEBAPP_LABEL_RU"]["webhook_path"] == "/webhook/platega"
|
||||
assert manifest["YOOKASSA_SHOP_ID"]["webhook_requires_base_url"] is True
|
||||
assert "webhook_path" not in manifest["PAYMENT_STARS_WEBAPP_LABEL_RU"]
|
||||
|
||||
@@ -722,6 +722,61 @@ class AdminSettingsSecurityTests(unittest.IsolatedAsyncioTestCase):
|
||||
self.assertTrue(secret_field["has_value"])
|
||||
self.assertNotIn("super-secret", response.text)
|
||||
|
||||
async def test_admin_settings_exposes_payment_webhook_urls(self):
|
||||
class AsyncSessionFactory:
|
||||
def __call__(self):
|
||||
return self
|
||||
|
||||
async def __aenter__(self):
|
||||
return object()
|
||||
|
||||
async def __aexit__(self, exc_type, exc, tb):
|
||||
return False
|
||||
|
||||
settings = Settings(
|
||||
_env_file=None,
|
||||
BOT_TOKEN="token",
|
||||
POSTGRES_USER="app_user",
|
||||
POSTGRES_PASSWORD="app_password",
|
||||
SHOP_NAME="Visible shop",
|
||||
WEBHOOK_BASE_URL="https://web.tnnl.cc/",
|
||||
)
|
||||
request = SimpleNamespace(
|
||||
app={"settings": settings, "async_session_factory": AsyncSessionFactory()},
|
||||
headers={},
|
||||
cookies={},
|
||||
admin_telegram_id=1,
|
||||
)
|
||||
request.get = lambda key, default=None: getattr(request, key, default)
|
||||
|
||||
with (
|
||||
patch.object(admin_settings_routes, "_require_admin_user_id", return_value=1),
|
||||
patch.object(
|
||||
admin_api.app_settings_dal,
|
||||
"get_overrides_with_meta",
|
||||
AsyncMock(return_value=[]),
|
||||
),
|
||||
):
|
||||
response = await admin_api.admin_settings_get_route(request)
|
||||
|
||||
payload = json.loads(response.text)
|
||||
fields = {
|
||||
field["key"]: field
|
||||
for section in payload["sections"]
|
||||
for field in section["fields"]
|
||||
}
|
||||
|
||||
self.assertEqual(
|
||||
fields["FREEKASSA_ENABLED"]["webhook_url"],
|
||||
"https://web.tnnl.cc/webhook/freekassa",
|
||||
)
|
||||
self.assertTrue(fields["FREEKASSA_ENABLED"]["webhook_base_url_configured"])
|
||||
self.assertEqual(
|
||||
fields["PAYMENT_PLATEGA_CRYPTO_WEBAPP_LABEL_RU"]["webhook_url"],
|
||||
"https://web.tnnl.cc/webhook/platega",
|
||||
)
|
||||
self.assertNotIn("webhook_url", fields["PAYMENT_STARS_WEBAPP_LABEL_RU"])
|
||||
|
||||
|
||||
class DatabaseLoggingSecurityTests(unittest.TestCase):
|
||||
def test_database_url_redaction_hides_password(self):
|
||||
|
||||
Reference in New Issue
Block a user