Before this commit, the lists of supported currencies by payment provider were hard-coded in the Python scripts, which made them unavailable to the users. With this commit, the implemented initial lists of supported currencies are displayed on the form view and are editable, because Odoo lists may not be up-to-date. Empty lists do not trigger any filtering on the payment providers to access payment methods. For Authorize.net and Asiapay payment providers, the specific `(authorize,asiapay)_currency_id` are removed and the generic payment provider field `available_currency_ids` is restricted to a single-item list when one of those providers is enabled. task-2926016 closes odoo/odoo#101018 Related: odoo/enterprise#34158 Related: odoo/documentation#2788 Related: odoo/upgrade#4069 Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
49 lines
2.0 KiB
Python
49 lines
2.0 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from unittest.mock import patch
|
|
|
|
from odoo.addons.payment import utils as payment_utils
|
|
from odoo.exceptions import UserError
|
|
from odoo.tests import tagged
|
|
from odoo.tools import mute_logger
|
|
|
|
from .common import AuthorizeCommon
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class AuthorizeTest(AuthorizeCommon):
|
|
|
|
def test_compatible_providers(self):
|
|
# Note: in the test common, 'USD' is specified as the currency linked to the user account.
|
|
unsupported_currency = self._prepare_currency('CHF')
|
|
providers = self.env['payment.provider']._get_compatible_providers(
|
|
self.company.id, self.partner.id, self.amount, currency_id=unsupported_currency.id
|
|
)
|
|
self.assertNotIn(self.authorize, providers)
|
|
providers = self.env['payment.provider']._get_compatible_providers(
|
|
self.company.id, self.partner.id, self.amount, currency_id=self.currency_usd.id
|
|
)
|
|
self.assertIn(self.authorize, providers)
|
|
|
|
def test_processing_values(self):
|
|
"""Test custom 'access_token' processing_values for authorize provider."""
|
|
tx = self._create_transaction(flow='direct')
|
|
with mute_logger('odoo.addons.payment.models.payment_transaction'), \
|
|
patch(
|
|
'odoo.addons.payment.utils.generate_access_token',
|
|
new=self._generate_test_access_token
|
|
):
|
|
processing_values = tx._get_processing_values()
|
|
|
|
with patch(
|
|
'odoo.addons.payment.utils.generate_access_token', new=self._generate_test_access_token
|
|
):
|
|
self.assertTrue(payment_utils.check_access_token(
|
|
processing_values['access_token'], self.reference, self.partner.id,
|
|
))
|
|
|
|
def test_validation(self):
|
|
self.assertEqual(self.authorize.available_currency_ids[0], self.currency_usd)
|
|
self.assertEqual(self.authorize._get_validation_amount(), 0.01)
|
|
self.assertEqual(self.authorize._get_validation_currency(), self.currency_usd)
|