Remnawave_python-sdk/tests/test_utils.py

97 lines
No EOL
3.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pytest
from remnawave import RemnawaveSDK
# Пример корректных данных из вебхука
VALID_SIGNATURE = "8c630175963bae8f413e6e01a1fa42631cd5c499ea4c7128292aeb7fe74d23de"
VALID_BODY = {
"event": "user.modified",
"timestamp": "2025-07-08T23:53:41.617Z",
"data": {
"uuid": "c85c240f-c6e1-4e41-ae65-a1b16100b9b3",
"subscriptionUuid": "10c4af55-18b1-4d83-bcb4-3f317ef93574",
"shortUuid": "3P9nwj_cqo--naNE",
"username": "399365366",
"status": "ACTIVE",
"usedTrafficBytes": "0",
"lifetimeUsedTrafficBytes": "0",
"trafficLimitBytes": "0",
"trafficLimitStrategy": "NO_RESET",
"subLastUserAgent": None,
"subLastOpenedAt": None,
"expireAt": "2025-08-08T23:53:32.000Z",
"subRevokedAt": None,
"lastTrafficResetAt": None,
"trojanPassword": "Z0T-_G9mco40uAd7TgKLQbvtPHauuH",
"vlessUuid": "7b44e483-82c5-4445-806e-fb1e8e58985a",
"ssPassword": "mM_wZgb7QhDajEkcC3LLqp2_3Wk6CQPR",
"description": None,
"tag": None,
"telegramId": "399365366",
"email": None,
"hwidDeviceLimit": None,
"firstConnectedAt": None,
"lastTriggeredThreshold": 0,
"onlineAt": None,
"lastConnectedNodeUuid": None,
"createdAt": "2025-07-08T21:03:44.463Z",
"updatedAt": "2025-07-08T23:53:41.611Z",
"activeUserInbounds": [
{
"uuid": "a573b408-a452-4409-850f-9b66a06434b2",
"tag": "eu",
"type": "vless",
"network": "raw",
"security": "reality"
},
{
"uuid": "578ef17e-ef67-4c3a-9f35-9f33a0aab7a6",
"tag": "ru",
"type": "vless",
"network": "raw",
"security": "reality"
},
{
"uuid": "3acf6d7a-4903-4a4b-bf49-7baed581aded",
"tag": "tr",
"type": "vless",
"network": "raw",
"security": "reality"
}
]
}
}
# Секрет для валидации вебхука
WEBHOOK_SECRET = (
"0cfbd6e60f79f80eb5065ce715f2398a2bb342e62dfce3f6f66083b05abd9ef805ed88b7c6ed9564d50e32a42192d5eaa9971d4c072927bbffa52e364a067817"
)
@pytest.mark.asyncio
async def test_webhook_utility_valid(remnawave):
# Инициализируем SDK (base_url и token заданы для теста)
sdk = RemnawaveSDK(base_url="your_base_url", token="your_api_key")
# Вызовем метод валидации с корректными данными
is_valid = sdk.webhook_utility.validate_webhook(
body=VALID_BODY,
signature=VALID_SIGNATURE,
webhook_secret=WEBHOOK_SECRET
)
# Если валидация пройдена, метод должен вернуть True
assert is_valid is True, "Webhook validation failed with valid data"
@pytest.mark.asyncio
async def test_webhook_utility_invalid(remnawave):
sdk = RemnawaveSDK(base_url="your_base_url", token="your_api_key")
# Используем невалидную подпись
invalid_signature = "invalidsignature"
is_valid = sdk.webhook_utility.validate_webhook(
body=VALID_BODY,
signature=invalid_signature,
webhook_secret=WEBHOOK_SECRET
)
# Ожидаем, что валидация не пройдется
assert is_valid is False, "Webhook validation passed with invalid signature"