Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
lmignon committed Sep 29, 2019
1 parent 0d042ab commit 88f422f
Show file tree
Hide file tree
Showing 8 changed files with 35 additions and 78 deletions.
1 change: 1 addition & 0 deletions shopinvader/models/shopinvader_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
13 changes: 0 additions & 13 deletions shopinvader/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -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
26 changes: 0 additions & 26 deletions shopinvader/tests/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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
25 changes: 12 additions & 13 deletions shopinvader/tests/test_controller.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
# Copyright 2017 Akretion (http://www.akretion.com).
# @author Sébastien BEAU <[email protected]>
# 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)
Expand All @@ -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": "[email protected]",
},
)
Expand All @@ -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": "[email protected]",
},
)
Expand All @@ -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": []})

Expand All @@ -83,7 +79,10 @@ def test_email_not_exists(self):
"""
# This email shouldn't exist
email = "%[email protected]" % 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)
Expand All @@ -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!"
Expand All @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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"]
Expand Down
25 changes: 20 additions & 5 deletions shopinvader_locomotive/tests/test_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down Expand Up @@ -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)

Expand All @@ -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)

Expand All @@ -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):
Expand Down Expand Up @@ -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,
},
)
11 changes: 0 additions & 11 deletions shopinvader_product_stock/tests/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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):
Expand Down

0 comments on commit 88f422f

Please sign in to comment.