Skip to content
Open
Show file tree
Hide file tree
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
8 changes: 6 additions & 2 deletions Adyen/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,8 +322,12 @@ def _set_url_version(self, service, endpoint):
"capital": self.api_capital_version,
}

new_version = f"v{version_lookup[service]}"
endpoint = re.sub(r"\.com/v\d{1,2}", f".com/{new_version}", endpoint)
override_version = version_lookup.get(service)
if override_version is None:
return endpoint

new_version = f"v{override_version}"
endpoint = re.sub(r"/v\d{1,2}(/|$)", f"/{new_version}\\1", endpoint)
return endpoint

def call_adyen_api(
Expand Down
10 changes: 10 additions & 0 deletions test/BalancePlatformTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -481,3 +481,13 @@ def test_get_tax_form_summary(self):
json=None,
xapikey="YourXapikey",
)

def test_base_url_test_environment(self):
url = self.adyen.client._determine_api_url("test", self.balance_platform_url)
self.assertEqual(url, self.balance_platform_url)
self.assertTrue(url.startswith("https://balanceplatform-api-test.adyen.com/"))

def test_base_url_live_environment(self):
url = self.adyen.client._determine_api_url("live", self.balance_platform_url)
self.assertTrue(url.startswith("https://balanceplatform-api-live.adyen.com/"))

32 changes: 32 additions & 0 deletions test/BinLookupTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,38 @@ def test_get_cost_estimate_error_mocked(self):
self.assertEqual("Invalid card number", result.message["message"])
self.assertEqual("validation", result.message["errorType"])

def test_base_url_test_environment(self):
binlookup_url = self.ady.binlookup.bin_lookup_api.baseUrl
url = self.ady.client._determine_api_url("test", binlookup_url)
self.assertEqual(url, binlookup_url)
self.assertTrue(url.startswith("https://pal-test.adyen.com/pal/servlet/BinLookup/"))

def test_base_url_live_environment(self):
self.ady.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo"
try:
binlookup_url = self.ady.binlookup.bin_lookup_api.baseUrl
binlookup_version = binlookup_url.split("/")[-1]
url = self.ady.client._determine_api_url("live", binlookup_url)
self.assertEqual(
url,
f"https://1797a841fbb37ca7-AdyenDemo-pal-live.adyenpayments.com"
f"/pal/servlet/BinLookup/{binlookup_version}",
)
finally:
self.ady.client.live_endpoint_prefix = None

def test_base_url_live_environment_no_prefix_raises(self):
self.ady.client.live_endpoint_prefix = None
binlookup_url = self.ady.binlookup.bin_lookup_api.baseUrl
from Adyen.exceptions import AdyenEndpointInvalidFormat
self.assertRaises(
AdyenEndpointInvalidFormat,
self.ady.client._determine_api_url,
"live",
binlookup_url,
)



TestBinLookup.client.http_force = "requests"
suite = unittest.TestLoader().loadTestsFromTestCase(TestBinLookup)
Expand Down
12 changes: 12 additions & 0 deletions test/CapitalTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,15 @@ def test_create_static_offer_from_dynamic_offer(self):
)
self.assertEqual("GO00000000000000000000002", result.message["id"])
self.assertEqual("cashAdvance", result.message["contractType"])

def test_base_url_test_environment(self):
capital_url = self.adyen.capital.grants_api.baseUrl
url = self.adyen.client._determine_api_url("test", capital_url)
self.assertEqual(url, capital_url)
self.assertTrue(url.startswith("https://balanceplatform-api-test.adyen.com/capital/"))

def test_base_url_live_environment(self):
capital_url = self.adyen.capital.grants_api.baseUrl
url = self.adyen.client._determine_api_url("live", capital_url)
self.assertTrue(url.startswith("https://balanceplatform-api-live.adyen.com/capital/"))

29 changes: 29 additions & 0 deletions test/CheckoutTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -542,3 +542,32 @@ def test_service_name_validation(self):
self.assertTrue(
payment_base_url.startswith("https://pal-test.adyen.com/pal/servlet/Payment/")
)

def test_base_url_test_environment(self):
url = self.adyen.client._determine_api_url("test", self.baseUrl)
self.assertEqual(url, self.baseUrl)
self.assertTrue(url.startswith("https://checkout-test.adyen.com/"))

def test_base_url_live_environment(self):
self.adyen.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo"
try:
checkout_version = self.baseUrl.split("/")[-1]
url = self.adyen.client._determine_api_url("live", self.baseUrl)
self.assertEqual(
url,
f"https://1797a841fbb37ca7-AdyenDemo-checkout-live.adyenpayments.com"
f"/checkout/{checkout_version}",
)
finally:
self.adyen.client.live_endpoint_prefix = None

def test_base_url_live_environment_no_prefix_raises(self):
self.adyen.client.live_endpoint_prefix = None
from Adyen.exceptions import AdyenEndpointInvalidFormat
self.assertRaises(
AdyenEndpointInvalidFormat,
self.adyen.client._determine_api_url,
"live",
self.baseUrl,
)

30 changes: 27 additions & 3 deletions test/CheckoutUtilityTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,34 @@ def test_origin_keys_success_mocked(self):
result.message["originKeys"]["https://www.your-domain2.com"],
)

def test_checkout_utility_api_url_custom(self):
url = self.ady.client._determine_api_url("test", self.checkout_url + "/originKeys")
def test_base_url_test_environment(self):
url = self.ady.client._determine_api_url("test", self.checkout_url)
self.assertEqual(url, self.checkout_url)
self.assertTrue(url.startswith("https://checkout-test.adyen.com/"))

def test_base_url_live_environment(self):
self.ady.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo"
try:
checkout_version = self.checkout_url.split("/")[-1]
url = self.ady.client._determine_api_url("live", self.checkout_url)
self.assertEqual(
url,
f"https://1797a841fbb37ca7-AdyenDemo-checkout-live.adyenpayments.com"
f"/checkout/{checkout_version}",
)
finally:
self.ady.client.live_endpoint_prefix = None

def test_base_url_live_environment_no_prefix_raises(self):
self.ady.client.live_endpoint_prefix = None
from Adyen.exceptions import AdyenEndpointInvalidFormat
self.assertRaises(
AdyenEndpointInvalidFormat,
self.ady.client._determine_api_url,
"live",
self.checkout_url,
)

self.assertEqual(url, f"{self.checkout_url}/originKeys")

def test_applePay_session(self):
request = {
Expand Down
10 changes: 10 additions & 0 deletions test/DataProtectionTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,13 @@ def test_data_erasure(self):
json=request,
)
self.assertEqual("SUCCESS", result.message["result"])

def test_base_url_test_environment(self):
url = self.adyen.client._determine_api_url("test", self.data_protection_url)
self.assertEqual(url, self.data_protection_url)
self.assertTrue(url.startswith("https://ca-test.adyen.com/ca/services/DataProtectionService/"))

def test_base_url_live_environment(self):
url = self.adyen.client._determine_api_url("live", self.data_protection_url)
self.assertTrue(url.startswith("https://ca-live.adyen.com/ca/services/DataProtectionService/"))

4 changes: 4 additions & 0 deletions test/DetermineEndpointTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ class TestDetermineUrl(unittest.TestCase):
capital_url = adyen.capital.grants_api.baseUrl
capital_version = capital_url.split("/")[-1]

def tearDown(self):
self.client.live_endpoint_prefix = None
self.client.platform = "test"

def test_checkout_api_url_custom(self):
self.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo"
url = self.adyen.client._determine_api_url("live", self.checkout_url + "/payments")
Expand Down
10 changes: 10 additions & 0 deletions test/DisputesTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,3 +175,13 @@ def test_supply_defense_document(self):
json=request,
xapikey="YourXapikey",
)

def test_base_url_test_environment(self):
url = self.adyen.client._determine_api_url("test", self.disputes_url)
self.assertEqual(url, self.disputes_url)
self.assertTrue(url.startswith("https://ca-test.adyen.com/ca/services/DisputeService/"))

def test_base_url_live_environment(self):
url = self.adyen.client._determine_api_url("live", self.disputes_url)
self.assertTrue(url.startswith("https://ca-live.adyen.com/ca/services/DisputeService/"))

10 changes: 10 additions & 0 deletions test/LegalEntityManagementTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,13 @@ def test_accept_terms_of_service(self):
json=request,
xapikey="YourXapikey",
)

def test_base_url_test_environment(self):
url = self.adyen.client._determine_api_url("test", self.lem_url)
self.assertEqual(url, self.lem_url)
self.assertTrue(url.startswith("https://kyc-test.adyen.com/lem/"))

def test_base_url_live_environment(self):
url = self.adyen.client._determine_api_url("live", self.lem_url)
self.assertTrue(url.startswith("https://kyc-live.adyen.com/lem/"))

10 changes: 10 additions & 0 deletions test/ManagementTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,3 +183,13 @@ def test_query_parameters(self):
json=None,
xapikey="YourXapikey",
)

def test_base_url_test_environment(self):
url = self.adyen.client._determine_api_url("test", self.management_url)
self.assertEqual(url, self.management_url)
self.assertTrue(url.startswith("https://management-test.adyen.com/"))

def test_base_url_live_environment(self):
url = self.adyen.client._determine_api_url("live", self.management_url)
self.assertTrue(url.startswith("https://management-live.adyen.com/"))

64 changes: 64 additions & 0 deletions test/PaymentTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,38 @@ def test_error_401_mocked(self):
request,
)

def test_base_url_test_environment(self):
payment_url = self.adyen.payment.payments_api.baseUrl
url = self.adyen.client._determine_api_url("test", payment_url)
self.assertEqual(url, payment_url)
self.assertTrue(url.startswith("https://pal-test.adyen.com/pal/servlet/Payment/"))

def test_base_url_live_environment(self):
self.adyen.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo"
try:
payment_url = self.adyen.payment.payments_api.baseUrl
payment_version = payment_url.split("/")[-1]
url = self.adyen.client._determine_api_url("live", payment_url)
self.assertEqual(
url,
f"https://1797a841fbb37ca7-AdyenDemo-pal-live.adyenpayments.com"
f"/pal/servlet/Payment/{payment_version}",
)
finally:
self.adyen.client.live_endpoint_prefix = None

def test_base_url_live_environment_no_prefix_raises(self):
self.adyen.client.live_endpoint_prefix = None
payment_url = self.adyen.payment.payments_api.baseUrl
from Adyen.exceptions import AdyenEndpointInvalidFormat
self.assertRaises(
AdyenEndpointInvalidFormat,
self.adyen.client._determine_api_url,
"live",
payment_url,
)



class TestPaymentsWithXapiKey(unittest.TestCase):
adyen = Adyen.Adyen()
Expand Down Expand Up @@ -336,3 +368,35 @@ def test_error_401_mocked(self):
self.adyen.payment.payments_api.authorise,
request,
)

def test_base_url_test_environment(self):
payment_url = self.adyen.payment.payments_api.baseUrl
url = self.adyen.client._determine_api_url("test", payment_url)
self.assertEqual(url, payment_url)
self.assertTrue(url.startswith("https://pal-test.adyen.com/pal/servlet/Payment/"))

def test_base_url_live_environment(self):
self.adyen.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo"
try:
payment_url = self.adyen.payment.payments_api.baseUrl
payment_version = payment_url.split("/")[-1]
url = self.adyen.client._determine_api_url("live", payment_url)
self.assertEqual(
url,
f"https://1797a841fbb37ca7-AdyenDemo-pal-live.adyenpayments.com"
f"/pal/servlet/Payment/{payment_version}",
)
finally:
self.adyen.client.live_endpoint_prefix = None

def test_base_url_live_environment_no_prefix_raises(self):
self.adyen.client.live_endpoint_prefix = None
payment_url = self.adyen.payment.payments_api.baseUrl
from Adyen.exceptions import AdyenEndpointInvalidFormat
self.assertRaises(
AdyenEndpointInvalidFormat,
self.adyen.client._determine_api_url,
"live",
payment_url,
)

32 changes: 32 additions & 0 deletions test/PosMobileTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,35 @@ def test_create_communication_session(self):
result = self.adyen.posMobile.pos_mobile_api.create_communication_session(request)
self.assertEqual("CS00000000000000000000001", result.message["id"])
self.assertEqual("session_data_example", result.message["sessionData"])

def test_base_url_test_environment(self):
pos_mobile_url = self.adyen.posMobile.pos_mobile_api.baseUrl
url = self.adyen.client._determine_api_url("test", pos_mobile_url)
self.assertEqual(url, pos_mobile_url)
self.assertTrue(url.startswith("https://checkout-test.adyen.com/checkout/possdk/"))

def test_base_url_live_environment(self):
self.adyen.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo"
try:
pos_mobile_url = self.adyen.posMobile.pos_mobile_api.baseUrl
pos_mobile_version = pos_mobile_url.split("/")[-1]
url = self.adyen.client._determine_api_url("live", pos_mobile_url)
self.assertEqual(
url,
f"https://1797a841fbb37ca7-AdyenDemo-checkout-live.adyenpayments.com"
f"/checkout/possdk/{pos_mobile_version}",
)
finally:
self.adyen.client.live_endpoint_prefix = None

def test_base_url_live_environment_no_prefix_raises(self):
self.adyen.client.live_endpoint_prefix = None
pos_mobile_url = self.adyen.posMobile.pos_mobile_api.baseUrl
from Adyen.exceptions import AdyenEndpointInvalidFormat
self.assertRaises(
AdyenEndpointInvalidFormat,
self.adyen.client._determine_api_url,
"live",
pos_mobile_url,
)

18 changes: 10 additions & 8 deletions test/RecurringTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,16 @@ def test_base_url_test_environment(self):

def test_base_url_live_environment(self):
self.adyen.client.live_endpoint_prefix = "1797a841fbb37ca7-AdyenDemo"
recurring_version = self.baseUrl.split("/")[-1]
url = self.adyen.client._determine_api_url("live", self.baseUrl)
self.assertEqual(
url,
f"https://1797a841fbb37ca7-AdyenDemo-pal-live.adyenpayments.com"
f"/pal/servlet/Recurring/{recurring_version}",
)
self.adyen.client.live_endpoint_prefix = None
try:
recurring_version = self.baseUrl.split("/")[-1]
url = self.adyen.client._determine_api_url("live", self.baseUrl)
self.assertEqual(
url,
f"https://1797a841fbb37ca7-AdyenDemo-pal-live.adyenpayments.com"
f"/pal/servlet/Recurring/{recurring_version}",
)
finally:
self.adyen.client.live_endpoint_prefix = None

def test_base_url_live_environment_no_prefix_raises(self):
self.adyen.client.live_endpoint_prefix = None
Expand Down
10 changes: 10 additions & 0 deletions test/SessionAuthenticationTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,13 @@ def test_create_session_token(self):
json=request,
xapikey="YourXapikey",
)

def test_base_url_test_environment(self):
url = self.adyen.client._determine_api_url("test", self.session_url)
self.assertEqual(url, self.session_url)
self.assertTrue(url.startswith("https://test.adyen.com/authe/api/"))

def test_base_url_live_environment(self):
url = self.adyen.client._determine_api_url("live", self.session_url)
self.assertTrue(url.startswith("https://authe-live.adyen.com/authe/api/"))

Loading