Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 19 additions & 23 deletions tests/multisafepay/e2e/examples/recurring_manager/test_recurring.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@

import os
import time
from typing import Optional

import pytest
from dotenv import load_dotenv
Expand Down Expand Up @@ -128,30 +127,27 @@ def test_recurring(sdk: Sdk):

recurring_manager = sdk.get_recurring_manager()

def _get_token_from_list() -> Optional[Token]:
response = recurring_manager.get_list(reference)
assert isinstance(response, CustomApiResponse)
token_list = response.get_data()
assert isinstance(token_list, list)
for token in token_list:
if getattr(token, "token", None) == recurring_id:
assert isinstance(token, Token)
return token
return None

# Token creation can be eventually consistent; poll briefly.
deadline = time.monotonic() + 15
token: Optional[Token] = None
while token is None and time.monotonic() < deadline:
token = _get_token_from_list()
if token is None:
time.sleep(1)

assert token is not None, (
"Recurring token not found in list after creating order. "
f"reference={reference!r}, recurring_id={recurring_id!r}"
response = recurring_manager.get_list(reference)

assert isinstance(response, CustomApiResponse)
token_list = response.get_data()

assert isinstance(token_list, list)
assert len(token_list) > 0

index = next(
(
i
for i, token in enumerate(token_list)
if token.token == order.payment_details.recurring_id
),
-1,
)

assert index is not -1
assert isinstance(token_list[index], Token)
token = token_list[index]

response = recurring_manager.get(token.token, reference)

assert isinstance(response, CustomApiResponse)
Expand Down