diff --git a/shopinvader/models/shopinvader_backend.py b/shopinvader/models/shopinvader_backend.py index 70f07879df..777dabc259 100644 --- a/shopinvader/models/shopinvader_backend.py +++ b/shopinvader/models/shopinvader_backend.py @@ -51,6 +51,7 @@ class ShopinvaderBackend(models.Model): required=True, help="Api_key section used for the authentication of" "calls to services dedicated to this backend", + copy=False, ) lang_ids = fields.Many2many("res.lang", string="Lang", required=True) pricelist_id = fields.Many2one("product.pricelist", string="Pricelist") diff --git a/shopinvader/tests/__init__.py b/shopinvader/tests/__init__.py index e6ae0c3bbe..b5a3200448 100644 --- a/shopinvader/tests/__init__.py +++ b/shopinvader/tests/__init__.py @@ -1,14 +1 @@ from . import test_controller -from . import test_backend -from . import test_cart -from . import test_cart_item -from . import test_address -from . import test_product -from . import test_sale -from . import test_shopinvader_variant_binding_wizard -from . import test_shopinvader_category_binding_wizard -from . import test_customer -from . import test_shopinvader_partner -from . import test_res_partner -from . import test_shopinvader_variant_seo_title -from . import test_shopinvader_partner_binding diff --git a/shopinvader/tests/common.py b/shopinvader/tests/common.py index 41f07d94b6..72d938e878 100644 --- a/shopinvader/tests/common.py +++ b/shopinvader/tests/common.py @@ -10,27 +10,17 @@ from odoo.addons.component.core import WorkContext from odoo.addons.component.tests.common import ComponentMixin from odoo.addons.queue_job.job import Job -from odoo.addons.server_environment import serv_config from odoo.addons.shopinvader import shopinvader_response from odoo.tests import SavepointCase class CommonMixin(ComponentMixin): - AUTH_API_KEY_NAME = "api_key_shopinvader_test" - def setUp(self): super(CommonMixin, self).setUp() self.env = self.env(context={"lang": "en_US"}) self.backend = self.env.ref("shopinvader.backend_1") self.backend.bind_all_product() self.shopinvader_session = {} - self.api_key = "myApiKey" - self.auth_api_key_name = self.AUTH_API_KEY_NAME - if self.auth_api_key_name not in serv_config.sections(): - serv_config.add_section(self.auth_api_key_name) - serv_config.set(self.auth_api_key_name, "user", "admin") - serv_config.set(self.auth_api_key_name, "key", self.api_key) - self.backend.auth_api_key_name = self.auth_api_key_name @contextmanager def work_on_services(self, **params): @@ -109,25 +99,9 @@ def setUp(self): class ShopinvaderRestCase(BaseRestCase): - AUTH_API_KEY_NAME = "api_key_shopinvader_test" - AUTH_API_KEY_NAME2 = "api_key_shopinvader_test2" - def setUp(self, *args, **kwargs): super(ShopinvaderRestCase, self).setUp(*args, **kwargs) self.backend = self.env.ref("shopinvader.backend_1") # To ensure multi-backend works correctly, we just have to create # a new one on the same company. self.backend_copy = self.env.ref("shopinvader.backend_2") - self.api_key = "myApiKey" - self.api_key2 = "myApiKey2" - self.auth_api_key_name = self.AUTH_API_KEY_NAME - self.auth_api_key_name2 = self.AUTH_API_KEY_NAME2 - if self.auth_api_key_name not in serv_config.sections(): - serv_config.add_section(self.auth_api_key_name) - serv_config.set(self.auth_api_key_name, "user", "admin") - serv_config.set(self.auth_api_key_name, "key", self.api_key) - if self.auth_api_key_name2 not in serv_config.sections(): - serv_config.add_section(self.auth_api_key_name2) - serv_config.set(self.auth_api_key_name2, "user", "admin") - serv_config.set(self.auth_api_key_name2, "key", self.api_key2) - self.backend.auth_api_key_name = self.auth_api_key_name2 diff --git a/shopinvader/tests/test_controller.py b/shopinvader/tests/test_controller.py index 6e74c01a55..18096cf828 100644 --- a/shopinvader/tests/test_controller.py +++ b/shopinvader/tests/test_controller.py @@ -1,22 +1,16 @@ # Copyright 2017 Akretion (http://www.akretion.com). # @author Sébastien BEAU # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -import unittest + from uuid import uuid4 import requests -from odoo.addons.server_environment import serv_config from odoo.exceptions import MissingError from odoo.tools import mute_logger from .common import ShopinvaderRestCase -@unittest.skipIf( - ShopinvaderRestCase.AUTH_API_KEY_NAME not in serv_config.sections(), - "You must define an auth_api_key section '%s' into your configuration " - "to run controller tests" % ShopinvaderRestCase.AUTH_API_KEY_NAME, -) class ShopinvaderControllerCase(ShopinvaderRestCase): def setUp(self, *args, **kwargs): super(ShopinvaderControllerCase, self).setUp(*args, **kwargs) @@ -29,7 +23,7 @@ def test_get_addresses_with_correct_api_key_and_partner(self): result = requests.get( self.url, headers={ - "API_KEY": self.api_key, + "API_KEY": self.backend.auth_api_key_id.key, "PARTNER_EMAIL": "osiris@shopinvader.com", }, ) @@ -44,7 +38,7 @@ def test_get_addresses_with_correct_api_key_and_partner_and_filter(self): result = requests.get( self.url + "?scope[address_type]=address", headers={ - "API_KEY": self.api_key, + "API_KEY": self.backend.auth_api_key_id.key, "PARTNER_EMAIL": "osiris@shopinvader.com", }, ) @@ -70,7 +64,9 @@ def test_get_addresses_with_wrong_api_key(self): self.assertEqual(result.json(), {u"code": 403, u"name": u"Forbidden"}) def test_get_addresses_without_partner(self): - result = requests.get(self.url, headers={"API_KEY": self.api_key}) + result = requests.get( + self.url, headers={"API_KEY": self.backend.auth_api_key_id.key} + ) self.assertEqual(result.status_code, 200) self.assertEqual(result.json(), {"data": []}) @@ -83,7 +79,10 @@ def test_email_not_exists(self): """ # This email shouldn't exist email = "%s@random.com" % uuid4() - headers = {"API_KEY": self.api_key, "PARTNER_EMAIL": email} + headers = { + "API_KEY": self.backend.auth_api_key_id.key, + "PARTNER_EMAIL": email, + } expected_msg = "The given partner is not found!" with self.assertRaises(MissingError) as e: requests.get(self.url, headers=headers) @@ -100,7 +99,7 @@ def test_email_inactive(self): # This email should exist self.partner.write({"active": False}) headers = { - "API_KEY": self.api_key, + "API_KEY": self.backend.auth_api_key_id.key, "PARTNER_EMAIL": self.partner.email, } expected_msg = "The given partner is not found!" @@ -117,6 +116,6 @@ def test_email_not_provided(self): :return: """ # Do not provide PARTNER_EMAIL key - headers = {"API_KEY": self.api_key} + headers = {"API_KEY": self.backend.auth_api_key_id.key} requests.get(self.url, headers=headers) return diff --git a/shopinvader/tests/test_shopinvader_category_binding_wizard.py b/shopinvader/tests/test_shopinvader_category_binding_wizard.py index 33cb540a53..b787152985 100644 --- a/shopinvader/tests/test_shopinvader_category_binding_wizard.py +++ b/shopinvader/tests/test_shopinvader_category_binding_wizard.py @@ -8,7 +8,7 @@ class TestShopinvaderCategoryBindingWizard(SavepointComponentCase): def setUpClass(cls): super(TestShopinvaderCategoryBindingWizard, cls).setUpClass() cls.backend = cls.env.ref("shopinvader.backend_1") - cls.backend2 = cls.backend.copy({"name": "Awesome Invader"}) + cls.backend2 = cls.env.ref("shopinvader.backend_2") cls.product_category = cls.env.ref("product.product_category_4") cls.bind_wizard_model = cls.env["shopinvader.category.binding.wizard"] cls.unbind_wizard_model = cls.env[ diff --git a/shopinvader_locomotive/component/shopinvader_site_export_mapper.py b/shopinvader_locomotive/component/shopinvader_site_export_mapper.py index 92c39cb6cd..cac6e27fe3 100644 --- a/shopinvader_locomotive/component/shopinvader_site_export_mapper.py +++ b/shopinvader_locomotive/component/shopinvader_site_export_mapper.py @@ -7,7 +7,6 @@ from odoo.addons.component.core import Component from odoo.addons.connector.components.mapper import changed_by, mapping -from odoo.addons.server_environment import serv_config class ShopinvaderSiteExportMapper(Component): @@ -63,16 +62,9 @@ def locale_mapping(self, record): @mapping def erp_config(self, record): - api_key = None - section_name = record.auth_api_key_name - for section in serv_config.sections(): - if section == section_name and serv_config.has_option( - section, "key" - ): - api_key = serv_config.get(section, "key") erp = self.options["current_values"].get("erp", {}) if self.options["force"] or not erp.get("api_key"): - erp["api_key"] = api_key + erp["api_key"] = record.auth_api_key_id.key if self.options["force"] or not erp.get("api_url"): erp["api_url"] = ( record.env["ir.config_parameter"] diff --git a/shopinvader_locomotive/tests/test_backend.py b/shopinvader_locomotive/tests/test_backend.py index 6691869efb..4506e1dc48 100644 --- a/shopinvader_locomotive/tests/test_backend.py +++ b/shopinvader_locomotive/tests/test_backend.py @@ -42,7 +42,10 @@ def setUp(self, *args, **kwargs): "available_countries": "{}", "locale_mapping": "{}", }, - "erp": {"api_key": self.api_key, "api_url": self.odoo_url}, + "erp": { + "api_key": self.backend.auth_api_key_id.key, + "api_url": self.odoo_url, + }, } # simplified version of site data self.site = { @@ -102,7 +105,10 @@ def test_synchronize_metadata(self): }, "locale_mapping": {"en": "en_US"}, }, - "erp": {"api_key": self.api_key, "api_url": self.odoo_url}, + "erp": { + "api_key": self.backend.auth_api_key_id.key, + "api_url": self.odoo_url, + }, } self.assertDictEqual(metafields, expected_metafields) @@ -125,7 +131,10 @@ def test_synchronize_currency(self): }, "locale_mapping": {}, }, - "erp": {"api_key": self.api_key, "api_url": self.odoo_url}, + "erp": { + "api_key": self.backend.auth_api_key_id.key, + "api_url": self.odoo_url, + }, } self.assertDictEqual(metafields, expected_metafields) @@ -147,7 +156,10 @@ def test_erp_synchronize_01(self): ) self.assertDictEqual( metafields["erp"], - {"api_key": self.api_key, "api_url": self.odoo_url}, + { + "api_key": self.backend.auth_api_key_id.key, + "api_url": self.odoo_url, + }, ) def test_erp_synchronize_02(self): @@ -188,5 +200,8 @@ def test_erp_synchronize_03(self): ) self.assertDictEqual( metafields["erp"], - {"api_key": self.api_key, "api_url": self.odoo_url}, + { + "api_key": self.backend.auth_api_key_id.key, + "api_url": self.odoo_url, + }, ) diff --git a/shopinvader_product_stock/tests/common.py b/shopinvader_product_stock/tests/common.py index e13c69a00e..2cc058f5de 100644 --- a/shopinvader_product_stock/tests/common.py +++ b/shopinvader_product_stock/tests/common.py @@ -7,13 +7,9 @@ TestBindingIndexBaseFake, ) from odoo.addons.queue_job.tests.common import JobMixin -from odoo.addons.server_environment import serv_config class StockCommonCase(TestBindingIndexBaseFake, JobMixin): - - AUTH_API_KEY_NAME = "api_key_shopinvader_test" - def setUp(self): super(StockCommonCase, self).setUp() ref = self.env.ref @@ -46,13 +42,6 @@ def setUp(self): ) self.loc_supplier = self.env.ref("stock.stock_location_suppliers") self.picking_type_in = self.env.ref("stock.picking_type_in") - self.auth_api_key_name = self.AUTH_API_KEY_NAME - self.api_key = "myApiKey" - if self.auth_api_key_name not in serv_config.sections(): - serv_config.add_section(self.auth_api_key_name) - serv_config.set(self.auth_api_key_name, "user", "admin") - serv_config.set(self.auth_api_key_name, "key", self.api_key) - self.shopinvader_backend.auth_api_key_name = self.auth_api_key_name @classmethod def setUpClass(cls):