diff --git a/easy_my_coop_api/__manifest__.py b/easy_my_coop_api/__manifest__.py index 54b4f4f..3c051aa 100644 --- a/easy_my_coop_api/__manifest__.py +++ b/easy_my_coop_api/__manifest__.py @@ -5,7 +5,10 @@ { "name": "Easy My Coop API", "version": "12.0.0.0.1", - "depends": ["base_rest", "easy_my_coop"], + "depends": [ + "base_rest", + "easy_my_coop", + ], # auth_api_key + running_env = dev "author": "Coop IT Easy SCRLfs", "category": "Cooperative management", "website": "www.coopiteasy.be", diff --git a/easy_my_coop_api/controllers/controllers.py b/easy_my_coop_api/controllers/controllers.py index 58b7dba..3c97de4 100644 --- a/easy_my_coop_api/controllers/controllers.py +++ b/easy_my_coop_api/controllers/controllers.py @@ -10,7 +10,7 @@ from odoo.http import route class UserController(main.RestController): _root_path = "/api/" _collection_name = "emc.services" - _default_auth = "user" + _default_auth = "api_key" @route( _root_path + "/test", diff --git a/easy_my_coop_api/tests/common.py b/easy_my_coop_api/tests/common.py index 188e018..c07f066 100644 --- a/easy_my_coop_api/tests/common.py +++ b/easy_my_coop_api/tests/common.py @@ -15,6 +15,15 @@ PORT = odoo.tools.config["http_port"] class BaseEMCRestCase(BaseRestCase): + @classmethod + def setUpClass(cls, *args, **kwargs): + super().setUpClass(*args, **kwargs) + cls.AuthApiKey = cls.env["auth.api.key"] + emc_manager = cls.env.ref("easy_my_coop.res_users_manager_emc_demo") + cls.api_key_test = cls.AuthApiKey.create( + {"name": "test-key", "key": "api-key", "user_id": emc_manager.id} + ) + def setUp(self): super().setUp() self.session = requests.Session() @@ -40,13 +49,19 @@ class BaseEMCRestCase(BaseRestCase): "lang": "en_US", } - def http_get(self, url): + def http_get(self, url, headers=None): + key_dict = {"API-KEY": "api-key"} + if headers: + headers.update(key_dict) + else: + headers = key_dict + if url.startswith("/"): url = "http://%s:%s%s" % (HOST, PORT, url) - return self.session.get(url) + return self.session.get(url, headers=headers) - def http_get_content(self, route): - response = self.http_get(route) + def http_get_content(self, route, headers=None): + response = self.http_get(route, headers=headers) self.assertEquals(response.status_code, 200) return json.loads(response.content) diff --git a/easy_my_coop_api/tests/test_ping.py b/easy_my_coop_api/tests/test_ping.py index 0638e8c..36c9433 100644 --- a/easy_my_coop_api/tests/test_ping.py +++ b/easy_my_coop_api/tests/test_ping.py @@ -4,11 +4,12 @@ import json +import requests from odoo.addons.base_rest.controllers.main import _PseudoCollection from odoo.addons.component.core import WorkContext -from .common import BaseEMCRestCase +from .common import BaseEMCRestCase, HOST, PORT class TestPing(BaseEMCRestCase): @@ -24,14 +25,15 @@ class TestPing(BaseEMCRestCase): self.assertTrue("message" in result) def test_ping_route(self): - response = self.http_get("/api/ping/test") + # public route + path = "/api/ping/test" + url = "http://%s:%s%s" % (HOST, PORT, path) + response = requests.get(url) self.assertEquals(response.status_code, 200) - content = json.loads(response.content) self.assertTrue("message" in content) def test_search_route(self): - self.login("manager-emc", "demo") response = self.http_get("/api/ping") self.assertEquals(response.status_code, 200) diff --git a/easy_my_coop_api/tests/test_subscription_requests.py b/easy_my_coop_api/tests/test_subscription_requests.py index 9e92565..a161b98 100644 --- a/easy_my_coop_api/tests/test_subscription_requests.py +++ b/easy_my_coop_api/tests/test_subscription_requests.py @@ -3,8 +3,6 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -import json - from datetime import date, timedelta import odoo from odoo.fields import Date @@ -42,7 +40,6 @@ class TestSRController(BaseEMCRestCase): self.assertTrue(date_sr) def test_route_get(self): - self.login("manager-emc", "demo") id_ = self.demo_request_1.id route = "/api/subscription_request/%s" % id_ content = self.http_get_content(route) @@ -50,25 +47,21 @@ class TestSRController(BaseEMCRestCase): @odoo.tools.mute_logger("odoo.addons.base_rest.http") def test_route_get_returns_not_found(self): - self.login("manager-emc", "demo") route = "/api/subscription_request/%s" % "99999" response = self.http_get(route) self.assertEquals(response.status_code, 404) def test_route_get_string_returns_method_not_allowed(self): - self.login("manager-emc", "demo") route = "/api/subscription_request/%s" % "abc" response = self.http_get(route) self.assertEquals(response.status_code, 405) def test_route_search_all(self): - self.login("manager-emc", "demo") route = "/api/subscription_request" content = self.http_get_content(route) self.assertIn(self.demo_request_1_dict, content["rows"]) def test_route_search_by_date(self): - self.login("manager-emc", "demo") sr_date = self.demo_request_1.date date_from = Date.to_string(sr_date - timedelta(days=1)) date_to = Date.to_string(sr_date + timedelta(days=1)) @@ -98,7 +91,8 @@ class TestSRController(BaseEMCRestCase): @odoo.tools.mute_logger("odoo.addons.base_rest.http") def test_route_search_acd_date_returns_bad_request(self): - self.login("manager-emc", "demo") route = "/api/subscription_request?date_from=%s" % "20200101" response = self.http_get(route) self.assertEquals(response.status_code, 400) + + # def test_route_create(self):