rewrite v3
This commit is contained in:
@@ -53,10 +53,6 @@ class _StubRemnawaveClient:
|
||||
self.users_by_telegram_id = users_by_telegram_id or {}
|
||||
|
||||
async def get_user_by_uuid(self, user_uuid: str):
|
||||
for users in self.users_by_telegram_id.values():
|
||||
for user in users:
|
||||
if str(user.uuid) == user_uuid:
|
||||
return user
|
||||
raise RemnawaveApiError(status_code=404, message="not found")
|
||||
|
||||
async def get_user_by_username(self, username: str):
|
||||
@@ -414,50 +410,6 @@ async def test_create_order_generates_unique_provision_username(session_factory)
|
||||
assert second_order.extends_existing_access is False
|
||||
|
||||
|
||||
async def test_create_order_transliterates_russian_first_name_without_username(
|
||||
session_factory,
|
||||
) -> None:
|
||||
service = PaymentService(
|
||||
settings=Settings.model_construct(
|
||||
bot_admin_ids_raw="",
|
||||
payment_plans_raw="30:250",
|
||||
payment_transfer_text="Реквизиты",
|
||||
payment_internal_squad_uuids_raw="11111111-1111-1111-1111-111111111111",
|
||||
payment_user_tag="BOT",
|
||||
payment_external_squad_uuid="",
|
||||
payment_username_prefix="Oreol",
|
||||
payment_plan_traffic_limit_gb=0,
|
||||
payment_plan_traffic_reset_period="NO_RESET",
|
||||
referral_discount_percent=5,
|
||||
referral_bonus_days=7,
|
||||
),
|
||||
session_factory=session_factory,
|
||||
remnawave_client=_StubRemnawaveClient(
|
||||
created_user=make_remote_user(
|
||||
user_uuid="99999999-9999-9999-9999-999999999999",
|
||||
user_id=9,
|
||||
short_uuid="buyer999",
|
||||
username="oreol-user",
|
||||
telegram_id=1001,
|
||||
)
|
||||
),
|
||||
sync_service=_StubSyncService(),
|
||||
)
|
||||
|
||||
order = await service.create_order(
|
||||
telegram_id=1001,
|
||||
username=None,
|
||||
first_name="\u0410\u043b\u0435\u043a\u0441\u0435\u0439",
|
||||
last_name=None,
|
||||
language_code="ru",
|
||||
plan_code="30d",
|
||||
)
|
||||
|
||||
assert order.provision_username.startswith("Oreol-1001-")
|
||||
assert order.provision_username.endswith("-Aleksey")
|
||||
assert order.provision_username.isascii()
|
||||
|
||||
|
||||
async def test_create_order_marks_existing_access_as_renewal(session_factory) -> None:
|
||||
service = PaymentService(
|
||||
settings=Settings.model_construct(
|
||||
@@ -499,68 +451,6 @@ async def test_create_order_marks_existing_access_as_renewal(session_factory) ->
|
||||
assert "продлит текущую подписку" in service.build_transfer_text(order=order)
|
||||
|
||||
|
||||
async def test_create_order_targets_external_subscription_linked_by_telegram_id(
|
||||
session_factory,
|
||||
) -> None:
|
||||
existing_remote_user = make_remote_user(
|
||||
user_uuid="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
|
||||
user_id=10,
|
||||
short_uuid="external10",
|
||||
username="custom-external",
|
||||
telegram_id=1001,
|
||||
)
|
||||
remnawave_client = _StubRemnawaveClient(
|
||||
created_user=existing_remote_user,
|
||||
users_by_telegram_id={1001: [existing_remote_user]},
|
||||
)
|
||||
service = PaymentService(
|
||||
settings=Settings.model_construct(
|
||||
bot_admin_ids_raw="",
|
||||
payment_plans_raw="30:250",
|
||||
payment_transfer_text="Реквизиты",
|
||||
payment_internal_squad_uuids_raw="11111111-1111-1111-1111-111111111111",
|
||||
payment_user_tag="BOT",
|
||||
payment_external_squad_uuid="",
|
||||
payment_username_prefix="Oreol",
|
||||
payment_plan_traffic_limit_gb=0,
|
||||
payment_plan_traffic_reset_period="NO_RESET",
|
||||
referral_discount_percent=5,
|
||||
referral_bonus_days=7,
|
||||
),
|
||||
session_factory=session_factory,
|
||||
remnawave_client=remnawave_client,
|
||||
sync_service=_StubSyncService(),
|
||||
)
|
||||
|
||||
order = await service.create_order(
|
||||
telegram_id=1001,
|
||||
username="buyer",
|
||||
first_name="Buyer",
|
||||
last_name=None,
|
||||
language_code="ru",
|
||||
plan_code="30d",
|
||||
)
|
||||
|
||||
assert order.extends_existing_access is True
|
||||
assert order.provision_username == "custom-external"
|
||||
|
||||
async with session_factory() as session:
|
||||
stored_order = await session.scalar(
|
||||
select(PaymentOrder).where(PaymentOrder.order_uuid == order.order_uuid)
|
||||
)
|
||||
|
||||
assert stored_order is not None
|
||||
assert stored_order.remnawave_user_uuid == str(existing_remote_user.uuid)
|
||||
|
||||
await service.mark_order_under_review(order_uuid=order.order_uuid, telegram_id=1001)
|
||||
access = await service.approve_order(order_uuid=order.order_uuid)
|
||||
|
||||
assert access.is_renewal is True
|
||||
assert access.username == "custom-external"
|
||||
assert remnawave_client.created_bodies == []
|
||||
assert remnawave_client.updated_bodies[-1]["username"] == "custom-external"
|
||||
|
||||
|
||||
async def test_approve_order_extends_existing_user_found_by_telegram_id(session_factory) -> None:
|
||||
existing_remote_user = make_remote_user(
|
||||
user_uuid="88888888-8888-8888-8888-888888888888",
|
||||
|
||||
Reference in New Issue
Block a user