Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion testit-adapter-behave/setup.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from setuptools import find_packages, setup

VERSION = "3.10.4"
VERSION = "3.10.5"

setup(
name='testit-adapter-behave',
Expand Down
2 changes: 1 addition & 1 deletion testit-adapter-nose/setup.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from setuptools import setup, find_packages

VERSION = "3.10.4"
VERSION = "3.10.5"

setup(
name='testit-adapter-nose',
Expand Down
2 changes: 1 addition & 1 deletion testit-adapter-pytest/setup.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from setuptools import find_packages, setup

VERSION = "3.10.4"
VERSION = "3.10.5"

setup(
name='testit-adapter-pytest',
Expand Down
2 changes: 1 addition & 1 deletion testit-adapter-robotframework/setup.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from setuptools import find_packages, setup

VERSION = "3.10.4"
VERSION = "3.10.5"

setup(
name='testit-adapter-robotframework',
Expand Down
2 changes: 1 addition & 1 deletion testit-python-commons/setup.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from setuptools import find_packages, setup

VERSION = "3.10.4"
VERSION = "3.10.5"

setup(
name='testit-python-commons',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@
from testit_python_commons.models.test_result import TestResult
from testit_python_commons.services.logger import adapter_logger
from testit_python_commons.services.retry import retry
from testit_python_commons.utils.html_escape_utils import HtmlEscapeUtils
from typing import List, Any
from typing import List


class ApiClientWorker:
Expand Down Expand Up @@ -61,11 +60,6 @@ def __get_api_client(api_client_config: Configuration, token: str) -> ApiClient:
header_name='Authorization',
header_value='PrivateToken ' + token)

@staticmethod
def _escape_html_in_model(model: Any) -> Any:
"""Apply HTML escaping to all models before sending to API"""
return HtmlEscapeUtils.escape_html_in_object(model)

@adapter_logger
def create_test_run(self, test_run_name: str = None) -> str:
test_run_name = f'TestRun_{datetime.today().strftime("%Y-%m-%dT%H:%M:%S")}' if \
Expand All @@ -74,7 +68,6 @@ def create_test_run(self, test_run_name: str = None) -> str:
self.__config.get_project_id(),
test_run_name
)
model = self._escape_html_in_model(model)

response = self.__test_run_api.create_empty(create_empty_request=model)

Expand All @@ -95,7 +88,6 @@ def get_test_run(self, test_run_id: str) -> TestRunV2ApiResult:
def update_test_run(self, test_run: TestRunV2ApiResult) -> None:
"""Function updates test run."""
model = Converter.build_update_empty_request(test_run)
model = HtmlEscapeUtils.escape_html_in_object(model)
logging.debug(f"Updating test run with model: {model}")

self.__test_run_api.update_empty(update_empty_request=model)
Expand Down Expand Up @@ -321,7 +313,6 @@ def __create_test(self, test_result: TestResult) -> str:
test_result,
self.__config.get_project_id(),
work_item_ids_for_link_with_auto_test)
model = self._escape_html_in_model(model)

autotest_response = self.__autotest_api.create_auto_test(create_auto_test_request=model)

Expand All @@ -333,7 +324,6 @@ def __create_test(self, test_result: TestResult) -> str:
def __create_tests(self, autotests_for_create: List[AutoTestPostModel]) -> None:
logging.debug(f'Creating autotests: "{autotests_for_create}')

autotests_for_create = self._escape_html_in_model(autotests_for_create)
self.__autotest_api.create_multiple(auto_test_post_model=autotests_for_create)

logging.debug(f'Autotests were created')
Expand All @@ -343,7 +333,6 @@ def __update_test(self, test_result: TestResult, autotest: AutoTestApiResult) ->
logging.debug(f'Autotest "{test_result.get_autotest_name()}" was found')

model = Converter.prepare_to_update_autotest(test_result, autotest, self.__config.get_project_id())
model = self._escape_html_in_model(model)

try:
self.__autotest_api.update_auto_test(update_auto_test_request=model)
Expand All @@ -356,7 +345,6 @@ def __update_test(self, test_result: TestResult, autotest: AutoTestApiResult) ->
def __update_tests(self, autotests_for_update: List[AutoTestPutModel]) -> None:
logging.debug(f'Updating autotests: {autotests_for_update}')

autotests_for_update = self._escape_html_in_model(autotests_for_update)
self.__autotest_api.update_multiple(auto_test_put_model=autotests_for_update)

logging.debug(f'Autotests were updated')
Expand Down Expand Up @@ -384,7 +372,6 @@ def __load_test_result(self, test_result: TestResult) -> str:
model = Converter.test_result_to_testrun_result_post_model(
test_result,
self.__config.get_configuration_id())
model = self._escape_html_in_model(model)

response = self.__test_run_api.set_auto_test_results_for_test_run(
id=self.__config.get_test_run_id(),
Expand Down Expand Up @@ -412,8 +399,6 @@ def update_test_results(self, fixtures_containers: dict, test_result_ids: dict)
test_result.get_setup_results())
model.teardown_results = Converter.step_results_to_auto_test_step_result_update_request(
test_result.get_teardown_results())

model = self._escape_html_in_model(model)

try:
self.__test_results_api.api_v2_test_results_id_put(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from testit_python_commons.models.link_type import LinkType
from testit_python_commons.services.logger import adapter_logger
from testit_python_commons.utils import HtmlEscapeUtils


class Link:
Expand All @@ -20,7 +21,7 @@ def get_url(self) -> str:

@adapter_logger
def set_title(self, title: str):
self.__title = title
self.__title = HtmlEscapeUtils.escape_html_tags(title)

return self

Expand All @@ -40,7 +41,7 @@ def get_link_type(self) -> LinkType:

@adapter_logger
def set_description(self, description: str):
self.__description = description
self.__description = HtmlEscapeUtils.escape_html_tags(description)

return self

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
from testit_python_commons.utils.html_escape_utils import HtmlEscapeUtils


class StepResult:
__title: str = None
__outcome: str = None
Expand All @@ -15,23 +18,23 @@ def __init__(self):
self.__parameters = {}

def set_title(self, title: str):
self.__title = title
self.__title = HtmlEscapeUtils.escape_html_tags(title)

return self

def get_title(self) -> str:
return self.__title

def set_outcome(self, outcome: str):
self.__outcome = outcome
self.__outcome = HtmlEscapeUtils.escape_html_tags(outcome)

return self

def get_outcome(self) -> str:
return self.__outcome

def set_description(self, description: str):
self.__description = description
self.__description = HtmlEscapeUtils.escape_html_tags(description)

return self

Expand Down Expand Up @@ -79,7 +82,7 @@ def get_attachments(self) -> list:
return self.__attachments

def set_parameters(self, parameters: dict):
self.__parameters = parameters
self.__parameters = HtmlEscapeUtils.escape_html_in_object(parameters)

return self

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from testit_python_commons.models.link import Link
from testit_python_commons.models.step_result import StepResult
from testit_python_commons.services.logger import adapter_logger
from testit_python_commons.utils import HtmlEscapeUtils


class TestResult:
Expand Down Expand Up @@ -33,7 +34,7 @@ class TestResult:

@adapter_logger
def set_external_id(self, external_id: str):
self.__external_id = external_id
self.__external_id = HtmlEscapeUtils.escape_html_tags(external_id)

return self

Expand All @@ -43,7 +44,7 @@ def get_external_id(self) -> str:

@adapter_logger
def set_autotest_name(self, autotest_name: str):
self.__autotest_name = autotest_name
self.__autotest_name = HtmlEscapeUtils.escape_html_tags(autotest_name)

return self

Expand All @@ -53,7 +54,7 @@ def get_autotest_name(self) -> str:

@adapter_logger
def set_outcome(self, outcome: str):
self.__outcome = outcome
self.__outcome = HtmlEscapeUtils.escape_html_tags(outcome)

return self

Expand All @@ -63,7 +64,7 @@ def get_outcome(self) -> str:

@adapter_logger
def set_title(self, title: str):
self.__title = title
self.__title = HtmlEscapeUtils.escape_html_tags(title)

return self

Expand All @@ -73,7 +74,7 @@ def get_title(self) -> str:

@adapter_logger
def set_description(self, description: str):
self.__description = description
self.__description = HtmlEscapeUtils.escape_html_tags(description)

return self

Expand Down Expand Up @@ -113,7 +114,7 @@ def get_completed_on(self) -> str:

@adapter_logger
def set_namespace(self, namespace: str):
self.__namespace = namespace
self.__namespace = HtmlEscapeUtils.escape_html_tags(namespace)

return self

Expand All @@ -123,7 +124,7 @@ def get_namespace(self) -> str:

@adapter_logger
def set_classname(self, classname: str):
self.__classname = classname
self.__classname = HtmlEscapeUtils.escape_html_tags(classname)

return self

Expand All @@ -133,7 +134,7 @@ def get_classname(self) -> str:

@adapter_logger
def set_message(self, message: str):
self.__message = message
self.__message = HtmlEscapeUtils.escape_html_tags(message)

return self

Expand All @@ -143,7 +144,7 @@ def get_message(self) -> str:

@adapter_logger
def set_traces(self, traces: str):
self.__traces = traces
self.__traces = HtmlEscapeUtils.escape_html_tags(traces)

return self

Expand Down Expand Up @@ -213,7 +214,7 @@ def get_attachments(self) -> list:

@adapter_logger
def set_labels(self, labels: list):
self.__labels = labels
self.__labels = HtmlEscapeUtils.escape_html_in_object(labels)

return self

Expand All @@ -233,7 +234,7 @@ def get_work_item_ids(self) -> list:

@adapter_logger
def set_parameters(self, parameters: dict):
self.__parameters = parameters
self.__parameters = HtmlEscapeUtils.escape_html_in_object(parameters)

return self

Expand All @@ -243,7 +244,7 @@ def get_parameters(self) -> dict:

@adapter_logger
def set_properties(self, properties: dict):
self.__properties = properties
self.__properties = HtmlEscapeUtils.escape_html_in_object(properties)

return self

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from testit_python_commons.models.step_result import StepResult
from typing import List


class TestResultWithAllFixtureStepResults:
def __init__(self, test_result_id: str):
self.__test_result_id = test_result_id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ class HtmlEscapeUtils:

# Regex patterns to escape only non-escaped characters
# Using negative lookbehind to avoid double escaping
_LESS_THAN_PATTERN = re.compile(r'(?<!\\)<')
_GREATER_THAN_PATTERN = re.compile(r'(?<!\\)>')
_LESS_THAN_PATTERN = re.compile('<')
_GREATER_THAN_PATTERN = re.compile('>')

@staticmethod
def escape_html_tags(text: Optional[str]) -> Optional[str]:
Expand Down Expand Up @@ -52,8 +52,8 @@ def escape_html_tags(text: Optional[str]) -> Optional[str]:
return text # No HTML tags found, return original string

# Use regex with negative lookbehind to escape only non-escaped characters
result = HtmlEscapeUtils._LESS_THAN_PATTERN.sub(r'\\<', text)
result = HtmlEscapeUtils._GREATER_THAN_PATTERN.sub(r'\\>', result)
result = HtmlEscapeUtils._LESS_THAN_PATTERN.sub('&lt;', text)
result = HtmlEscapeUtils._GREATER_THAN_PATTERN.sub('&gt;', result)

return result

Expand Down
Loading