From e5c38902f3720ce22c31646def1ba93cbe82b645 Mon Sep 17 00:00:00 2001 From: Philipp Wullstein-Kammler Date: Thu, 29 Jan 2026 14:10:29 +0100 Subject: [PATCH] Changed default value of `verify_ssl` to `True` Changed the default behavior of the tool `lobster-codebeamer` to use SSL verification. The user can still disable it using the `verify_ssl` configuration parameter. Updated the error message in case of `RequestsConnectionError` to mention SSL as a possible source of the problem. All system tests disable SSL verification. --- CHANGELOG.md | 3 ++- lobster/tools/codebeamer/codebeamer.py | 6 ++++-- .../lobster_codebeamer/lobster_codebeamer_test_runner.py | 2 ++ .../lobster_codebeamer/test_extract_requirements.py | 1 + tests_system/lobster_codebeamer/test_lobster_codebeamer.py | 1 + tests_system/lobster_codebeamer/test_valid_flow.py | 1 + 6 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e43e571b..940a3afb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,8 @@ - Connection timeout errors now include the URL and suggest increasing timeout parameter - Connection errors provide actionable steps like checking internet connection and increasing retries - Network errors include clear failure reasons and suggested actions - - HTTP response errors now include status code and reason. + - HTTP response errors now include status code and reason + - Changed default value of `verify_ssl` to `True` * `lobster-python`: - Added system test infrastructure and Bazel targets under `tests_system/lobster_python`. diff --git a/lobster/tools/codebeamer/codebeamer.py b/lobster/tools/codebeamer/codebeamer.py index e14baeddc..6dc63f1a8 100755 --- a/lobster/tools/codebeamer/codebeamer.py +++ b/lobster/tools/codebeamer/codebeamer.py @@ -157,7 +157,9 @@ def query_cb_single(cb_config: Config, url: str): f"Reason: {ex}\n" "\nPossible actions:\n" "• Check internet connection\n" - "• Increase retries using 'num_request_retry'" + "• Increase retries using 'num_request_retry'\n" + "• Check SSL certificates or disable verification by setting " + f"'{SupportedConfigKeys.VERIFY_SSL.value}' to false" ) from ex except RequestException as ex: @@ -507,7 +509,7 @@ def parse_config_data(data: dict) -> Config: references=ensure_list(data.get(SupportedConfigKeys.REFS.value, [])), import_tagged=data.get(SupportedConfigKeys.IMPORT_TAGGED.value), import_query=data.get(SupportedConfigKeys.IMPORT_QUERY.value), - verify_ssl=data.get(SupportedConfigKeys.VERIFY_SSL.value, False), + verify_ssl=data.get(SupportedConfigKeys.VERIFY_SSL.value, True), page_size=data.get(SupportedConfigKeys.PAGE_SIZE.value, 100), schema=data.get(SupportedConfigKeys.SCHEMA.value, "Requirement"), timeout=data.get(SupportedConfigKeys.TIMEOUT.value, 30), diff --git a/tests_system/lobster_codebeamer/lobster_codebeamer_test_runner.py b/tests_system/lobster_codebeamer/lobster_codebeamer_test_runner.py index 703fc8e02..366324675 100644 --- a/tests_system/lobster_codebeamer/lobster_codebeamer_test_runner.py +++ b/tests_system/lobster_codebeamer/lobster_codebeamer_test_runner.py @@ -17,6 +17,7 @@ class ConfigFileData: page_size: Optional[int] = None num_request_retry: Optional[int] = None retry_error_codes: Optional[List[int]] = None + verify_ssl: Optional[bool] = None def set_default_root_token_out(self): self.root = f"https://localhost:{PORT}" @@ -38,6 +39,7 @@ def append_if_not_none(key, value): append_if_not_none("page_size", self.page_size) append_if_not_none("num_request_retry", self.num_request_retry) append_if_not_none("retry_error_codes", self.retry_error_codes) + append_if_not_none("verify_ssl", self.verify_ssl) with open(filename, mode='w', encoding="UTF-8") as file: yaml.dump(data, file) diff --git a/tests_system/lobster_codebeamer/test_extract_requirements.py b/tests_system/lobster_codebeamer/test_extract_requirements.py index d4efd6569..05a589ac6 100644 --- a/tests_system/lobster_codebeamer/test_extract_requirements.py +++ b/tests_system/lobster_codebeamer/test_extract_requirements.py @@ -20,6 +20,7 @@ def setUpClass(cls): def setUp(self): super().setUp() self._test_runner = self.create_test_runner() + self._test_runner.config_file_data.verify_ssl = False def extract_requirements(self, cfg: ConfigFileData, diff --git a/tests_system/lobster_codebeamer/test_lobster_codebeamer.py b/tests_system/lobster_codebeamer/test_lobster_codebeamer.py index ec893646a..2a7c27828 100644 --- a/tests_system/lobster_codebeamer/test_lobster_codebeamer.py +++ b/tests_system/lobster_codebeamer/test_lobster_codebeamer.py @@ -20,6 +20,7 @@ def setUp(self): super().setUp() self.codebeamer_flask.reset() self._test_runner = self.create_test_runner() + self._test_runner.config_file_data.verify_ssl = False def test_retry_if_configured(self): """Ensure the tool retries and exits after exhausting diff --git a/tests_system/lobster_codebeamer/test_valid_flow.py b/tests_system/lobster_codebeamer/test_valid_flow.py index d54ed85fc..4d12d5ee3 100644 --- a/tests_system/lobster_codebeamer/test_valid_flow.py +++ b/tests_system/lobster_codebeamer/test_valid_flow.py @@ -20,6 +20,7 @@ def setUp(self): super().setUp() self.codebeamer_flask.reset() self._test_runner = self.create_test_runner() + self._test_runner.config_file_data.verify_ssl = False def test_valid_query_id(self): # lobster-trace: codebeamer_req.Query_Id_Parameter