From 616446a4db8d4fd7671abf2070c357bbb0280245 Mon Sep 17 00:00:00 2001 From: Hamed Khosrawi Date: Wed, 27 Sep 2023 21:56:30 +0330 Subject: [PATCH 01/10] persian language added. --- .../DocumentationDatabaseService.java | 108 +++++++++++++++++- 1 file changed, 107 insertions(+), 1 deletion(-) diff --git a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java index 575175bb2..e7699ebc1 100644 --- a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java +++ b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java @@ -3145,223 +3145,329 @@ public ArrayList getSqlDocumentation() { b.append(",('page_test','button_delete','','fr','Supprimer le Dossier de Test','',NULL)"); b.append(",('page_test','delete','','en','Dlt','Select this checkbox and then save changes in order to delete the row.',NULL)"); b.append(",('page_test','message_delete','','en','Do you want to delete Test Folder \\'%ENTRY%\\' ?
WARNING : All corresponding Test Cases will be removed as well !!!','',NULL)"); + b.append(",('page_test','message_delete','','fa','آیا می خواهید پوشه آزمون \\'%ENTRY%\\' را حذف کنید؟
احتیاط : تمام موارد آزمون مربوطه نیز حذف خواهند شد !!!','',NULL)"); b.append(",('page_test','message_delete','','fr','Confirmez vous la suppression du Dossier de Test \\'%ENTRY%\\' ?
ATTENTION : Tous les Cas de Test associés seront également supprimés !!!','',NULL)"); b.append(",('page_test','table_testlist','','en','Folder Test List',NULL,NULL)"); + b.append(",('page_test','table_testlist','','fa','فهرست پوشه آزمون',NULL,NULL)"); b.append(",('page_test','table_testlist','','fr','Liste des Dossiers de Test',NULL,NULL)"); b.append(",('page_testbattery','addtestbattery_field','','en','Add Battery','',NULL)"); + b.append(",('page_testbattery','addtestbattery_field','','fa','افزودن باتری','',NULL)"); b.append(",('page_testbattery','addtestbattery_field','','fr','Ajouter la Batterie','',NULL)"); b.append(",('page_testbattery','addtestcase_tab','','en','Add Test Case','',NULL)"); + b.append(",('page_testbattery','addtestcase_tab','','fa','افزودن مورد آزمون','',NULL)"); b.append(",('page_testbattery','addtestcase_tab','','fr','Ajouter un cas de test','',NULL)"); b.append(",('page_testbattery','add_btn','','en','Add','',NULL)"); + b.append(",('page_testbattery','add_btn','','fa','افزودن','',NULL)"); b.append(",('page_testbattery','add_btn','','fr','Ajouter','',NULL)"); b.append(",('page_testbattery','allTestbatterys','','en','Test Battery','',NULL)"); + b.append(",('page_testbattery','allTestbatterys','','fa','باتری آزمون','',NULL)"); b.append(",('page_testbattery','allTestbatterys','','fr','Batterie de Test','',NULL)"); b.append(",('page_testbattery','back_btn','','en','Back','',NULL)"); + b.append(",('page_testbattery','back_btn','','fa','بازگشت','',NULL)"); b.append(",('page_testbattery','back_btn','','fr','Précédent','',NULL)"); b.append(",('page_testbattery','battery_field','','en','Battery','',NULL)"); + b.append(",('page_testbattery','battery_field','','fa','باتری','',NULL)"); b.append(",('page_testbattery','battery_field','','fr','Batterie','',NULL)"); b.append(",('page_testbattery','button_add','','en','Add Test Case','',NULL)"); + b.append(",('page_testbattery','button_add','','fa','افزودن مورد آزمون','',NULL)"); b.append(",('page_testbattery','button_add','','fr','Ajouter un Cas de Test','',NULL)"); b.append(",('page_testbattery','button_col','','en','Actions','',NULL)"); + b.append(",('page_testbattery','button_col','','fa','اقدام ها','',NULL)"); b.append(",('page_testbattery','button_col','','fr','Actions','',NULL)"); b.append(",('page_testbattery','button_create','','en','Create Battery','',NULL)"); + b.append(",('page_testbattery','button_create','','fa','ایجاد باتری','',NULL)"); b.append(",('page_testbattery','button_create','','fr','Créer une Batterie','',NULL)"); b.append(",('page_testbattery','button_edit','','en','Edit Battery','',NULL)"); + b.append(",('page_testbattery','button_edit','','fa','ویرایش باتری','',NULL)"); b.append(",('page_testbattery','button_edit','','fr','Editer la Batterie','',NULL)"); b.append(",('page_testbattery','button_remove','','en','Delete Battery','',NULL)"); + b.append(",('page_testbattery','button_remove','','fa','حذف باتری','',NULL)"); b.append(",('page_testbattery','button_remove','','fr','Supprimer la Batterie','',NULL)"); b.append(",('page_testbattery','close_btn','','en','Close','',NULL)"); + b.append(",('page_testbattery','close_btn','','fa','باتری','',NULL)"); b.append(",('page_testbattery','close_btn','','fr','Fermer','',NULL)"); b.append(",('page_testbattery','description_col','','en','Description','',NULL)"); + b.append(",('page_testbattery','description_col','','fa','توصیف','',NULL)"); b.append(",('page_testbattery','description_col','','ru','Описание','',NULL)"); b.append(",('page_testbattery','description_col','','fr','Description','',NULL)"); b.append(",('page_testbattery','description_field','','en','Description','',NULL)"); + b.append(",('page_testbattery','description_field','','fa','توصیف','',NULL)"); b.append(",('page_testbattery','description_field','','ru','Описание','',NULL)"); b.append(",('page_testbattery','description_field','','fr','Description','',NULL)"); b.append(",('page_testbattery','description_tab','','en','Description','',NULL)"); + b.append(",('page_testbattery','description_tab','','fa','توصیف','',NULL)"); b.append(",('page_testbattery','description_tab','','ru','Описание','',NULL)"); b.append(",('page_testbattery','description_tab','','fr','Description','',NULL)"); b.append(",('page_testbattery','edittestbattery_field','','en','Edit Battery','',NULL)"); + b.append(",('page_testbattery','edittestbattery_field','','fa','ویرایش باتری','',NULL)"); b.append(",('page_testbattery','edittestbattery_field','','fr','Modifier la Batterie','',NULL)"); b.append(",('page_testbattery','message_remove','','en','Are you sure to delete the battery ?','',NULL)"); + b.append(",('page_testbattery','message_remove','','fa','آیا اطمینان دارید که باتری را حذف می کنید؟','',NULL)"); b.append(",('page_testbattery','message_remove','','fr','Êtes-vous sûrs de supprimer la batterie ?','',NULL)"); b.append(",('page_testbattery','save_btn','','en','Save','',NULL)"); + b.append(",('page_testbattery','save_btn','','fa','ذخیره','',NULL)"); b.append(",('page_testbattery','save_btn','','fr','Sauvegarder','',NULL)"); - b.append(",('page_testbattery','table_testbattery','','en','Batterie de Test',NULL,NULL)"); + b.append(",('page_testbattery','table_testbattery','','en','Battery Test',NULL,NULL)"); + b.append(",('page_testbattery','table_testbattery','','fa','باتری آزمون',NULL,NULL)"); b.append(",('page_testbattery','table_testbattery','','fr','Batterie de Test',NULL,NULL)"); b.append(",('page_testbattery','testbattery_col','','en','Test Battery','',NULL)"); + b.append(",('page_testbattery','testbattery_col','','fa','باتری آزمون','',NULL)"); b.append(",('page_testbattery','testbattery_col','','fr','Batterie de test','',NULL)"); b.append(",('page_testbattery','testcampaign_col','','en','Test Battery','',NULL)"); + b.append(",('page_testbattery','testcampaign_col','','fa','باتری آزمون','',NULL)"); b.append(",('page_testbattery','testcampaign_col','','fr','Batterie de test','',NULL)"); b.append(",('page_testbattery','testcase_col','','en','Test Case ID','',NULL)"); + b.append(",('page_testbattery','testcase_col','','fa','شناسه مورد آزمون','',NULL)"); b.append(",('page_testbattery','testcase_col','','fr','ID du Cas de Test','',NULL)"); b.append(",('page_testbattery','testcase_tab','','en','Test Case','',NULL)"); + b.append(",('page_testbattery','testcase_tab','','fa','مورد آزمون','',NULL)"); b.append(",('page_testbattery','testcase_tab','','fr','Cas de test','',NULL)"); b.append(",('page_testbattery','test_col','','en','Test','',NULL)"); + b.append(",('page_testbattery','test_col','','fa','آزمون','',NULL)"); b.append(",('page_testbattery','test_col','','fr','Test','',NULL)"); b.append(",('page_testbattery','title_remove','','en','Delete Battery','',NULL)"); + b.append(",('page_testbattery','title_remove','','fa','حذف باتری','',NULL)"); b.append(",('page_testbattery','title_remove','','fr','Supprimer la Batterie','',NULL)"); b.append(",('page_testcampaign','title','','en','Test Campaign','',NULL)"); + b.append(",('page_testcampaign','title','','fa','کمپین آزمون','',NULL)"); b.append(",('page_testcampaign','title','','fr','Campagne de Test','',NULL)"); b.append(",('page_testcampaign','addtestcampaign_field','','en','Add Campaign','',NULL)"); + b.append(",('page_testcampaign','addtestcampaign_field','','fa','افزودن کمپین','',NULL)"); b.append(",('page_testcampaign','addtestcampaign_field','','fr','Ajouter la Campagne','',NULL)"); b.append(",('page_testcampaign','add_btn','','en','Add','',NULL)"); + b.append(",('page_testcampaign','add_btn','','fa','افزودن','',NULL)"); b.append(",('page_testcampaign','add_btn','','fr','Ajouter','',NULL)"); b.append(",('page_testcampaign','allTestcampaigns','','en','Test Campaigns','',NULL)"); + b.append(",('page_testcampaign','allTestcampaigns','','fa','کمپین های آزمون','',NULL)"); b.append(",('page_testcampaign','allTestcampaigns','','fr','Campagnes de Test','',NULL)"); b.append(",('page_testcampaign','battery_tab','','en','Battery','',NULL)"); + b.append(",('page_testcampaign','battery_tab','','fa','باتری','',NULL)"); b.append(",('page_testcampaign','battery_tab','','fr','Batterie','',NULL)"); b.append(",('page_testcampaign','button_col','','en','Actions','',NULL)"); + b.append(",('page_testcampaign','button_col','','fa','اقدام ها','',NULL)"); b.append(",('page_testcampaign','button_col','','fr','Actions','',NULL)"); b.append(",('page_testcampaign','button_create','','en','Create Campaign','',NULL)"); + b.append(",('page_testcampaign','button_create','','fa','ایجاد کمپین','',NULL)"); b.append(",('page_testcampaign','button_create','','fr','Créer une Campagne','',NULL)"); b.append(",('page_testcampaign','button_edit','','en','Edit Campaign','',NULL)"); + b.append(",('page_testcampaign','button_edit','','fa','ویرایش کمپین','',NULL)"); b.append(",('page_testcampaign','button_edit','','fr','Editer la Campagne','',NULL)"); b.append(",('page_testcampaign','button_remove','','en','Delete Campaign','',NULL)"); + b.append(",('page_testcampaign','button_remove','','fa','حذف کمپین','',NULL)"); b.append(",('page_testcampaign','button_remove','','fr','Supprimer la Campagne','',NULL)"); b.append(",('page_testcampaign','button_view','','en','View Campaign','',NULL)"); + b.append(",('page_testcampaign','button_view','','fa','مشاهده کمپین','',NULL)"); b.append(",('page_testcampaign','button_view','','fr','Voir la Campagne','',NULL)"); b.append(",('page_testcampaign','button_run','','en','Run Campaign','',NULL)"); + b.append(",('page_testcampaign','button_run','','fa','اجرا کمپین','',NULL)"); b.append(",('page_testcampaign','button_run','','fr','Executer la Campagne','',NULL)"); b.append(",('page_testcampaign','button_testcaselist','','en','View Testcase List','',NULL)"); + b.append(",('page_testcampaign','button_testcaselist','','fa','مشاهده فهرست مواردآزمون','',NULL)"); b.append(",('page_testcampaign','button_testcaselist','','fr','Voir la liste des cas de test','',NULL)"); b.append(",('page_testcampaign','button_taglist','','en','View Campaign execution List','',NULL)"); + b.append(",('page_testcampaign','button_taglist','','fa','مشاهده فهرست اجرای کمپین','',NULL)"); b.append(",('page_testcampaign','button_taglist','','fr','Voir la liste des executions de la campagne','',NULL)"); b.append(",('page_testcampaign','campaign_field','','en','Campaign','',NULL)"); + b.append(",('page_testcampaign','campaign_field','','fa','کمپین','',NULL)"); b.append(",('page_testcampaign','campaign_field','','fr','Campagne','',NULL)"); b.append(",('page_testcampaign','close_btn','','en','Close','',NULL)"); + b.append(",('page_testcampaign','close_btn','','fa','بستن','',NULL)"); b.append(",('page_testcampaign','close_btn','','fr','Fermer','',NULL)"); b.append(",('page_testcampaign','description_col','','en','Description','',NULL)"); + b.append(",('page_testcampaign','description_col','','fa','توصیف','',NULL)"); b.append(",('page_testcampaign','description_col','','ru','Описание','',NULL)"); b.append(",('page_testcampaign','description_col','','fr','Description','',NULL)"); b.append(",('page_testcampaign','description_field','','en','Description','',NULL)"); + b.append(",('page_testcampaign','description_field','','fa','توصیف','',NULL)"); b.append(",('page_testcampaign','description_field','','ru','Описание','',NULL)"); b.append(",('page_testcampaign','description_field','','fr','Description','',NULL)"); b.append(",('page_testcampaign','description_tab','','en','Description','',NULL)"); + b.append(",('page_testcampaign','description_tab','','fa','توصیف','',NULL)"); b.append(",('page_testcampaign','description_tab','','ru','Описание','',NULL)"); b.append(",('page_testcampaign','description_tab','','fr','Description','',NULL)"); b.append(",('page_testcampaign','edittestcampaign_field','','en','Edit Campaign','',NULL)"); + b.append(",('page_testcampaign','edittestcampaign_field','','fa','ویرایش کمپین','',NULL)"); b.append(",('page_testcampaign','edittestcampaign_field','','fr','Modifier la Campagne','',NULL)"); b.append(",('page_testcampaign','message_remove','','en','Are you sure you want to remove the campaign \\'%NAME%\\' ?','',NULL)"); + b.append(",('page_testcampaign','message_remove','','fa','آیا اطمینان دارید که می خواهید کمپین را \\'%NAME%\\' حذف کنید؟','',NULL)"); b.append(",('page_testcampaign','message_remove','','fr','Êtes-vous sûrs de supprimer la campagne \\'%NAME%\\'?','',NULL)"); b.append(",('page_testcampaign','parameter_col','','en','Parameter','',NULL)"); + b.append(",('page_testcampaign','parameter_col','','fa','پارامتر','',NULL)"); b.append(",('page_testcampaign','parameter_col','','fr','Paramètre','',NULL)"); b.append(",('page_testcampaign','parameter_tab','','en','Execution Settings','',NULL)"); + b.append(",('page_testcampaign','parameter_tab','','fa','تنظیمات اجرا','',NULL)"); b.append(",('page_testcampaign','parameter_tab','','fr','Paramètres d\\'execution','',NULL)"); b.append(",('page_testcampaign','save_btn','','en','Save','',NULL)"); + b.append(",('page_testcampaign','save_btn','','fa','ذخیره','',NULL)"); b.append(",('page_testcampaign','save_btn','','fr','Sauvegarder','',NULL)"); b.append(",('page_testcampaign','table_testcampaign','','en','Test Campaigns',NULL,NULL)"); + b.append(",('page_testcampaign','table_testcampaign','','fa','کمپین های آزمون',NULL,NULL)"); b.append(",('page_testcampaign','table_testcampaign','','fr','Campagnes de Test',NULL,NULL)"); b.append(",('page_testcampaign','testbattery_col','','en','Test Battery','',NULL)"); + b.append(",('page_testcampaign','testbattery_col','','fa','باتری آزمون','',NULL)"); b.append(",('page_testcampaign','testbattery_col','','fr','Batterie de test','',NULL)"); b.append(",('page_testcampaign','testcampaign_col','','en','Test Campaign','',NULL)"); + b.append(",('page_testcampaign','testcampaign_col','','fa','کمپین آزمون','',NULL)"); b.append(",('page_testcampaign','testcampaign_col','','fr','Campagne de test','',NULL)"); b.append(",('page_testcampaign','testcase_col','','en','Test Case','',NULL)"); + b.append(",('page_testcampaign','testcase_col','','fa','مورد آزمون','',NULL)"); b.append(",('page_testcampaign','testcase_col','','fr','Cas de Test','',NULL)"); b.append(",('page_testcampaign','test_col','','en','Test','',NULL)"); + b.append(",('page_testcampaign','test_col','','fa','آزمون','',NULL)"); b.append(",('page_testcampaign','test_col','','fr','Test','',NULL)"); b.append(",('page_testcampaign','title_remove','','en','Delete Campaign','',NULL)"); + b.append(",('page_testcampaign','title_remove','','fa','حذف کمپین','',NULL)"); b.append(",('page_testcampaign','title_remove','','fr','Supprimer la Campagne','',NULL)"); b.append(",('page_testcampaign','value_col','','en','Value','',NULL)"); + b.append(",('page_testcampaign','value_col','','fa','مقدار','',NULL)"); b.append(",('page_testcampaign','value_col','','ru','Значение','',NULL)"); b.append(",('page_testcampaign','value_col','','fr','Valeur','',NULL)"); b.append(",('page_testcampaign','viewtestcampaign_field','','en','List of testcases for Campaign','',NULL)"); + b.append(",('page_testcampaign','viewtestcampaign_field','','fa','فهرست موردآزمون های کمپین','',NULL)"); b.append(",('page_testcampaign','viewtestcampaign_field','','fr','Liste des cas de test pour la Campagne','',NULL)"); b.append(",('page_testcampaign','viewstatcampaign_field','','en','List of Executions for Campaign','',NULL)"); + b.append(",('page_testcampaign','viewstatcampaign_field','','fa','فهرست اجراهای کمپین','',NULL)"); b.append(",('page_testcampaign','viewstatcampaign_field','','fr','Liste des executions pour la Campagne','',NULL)"); b.append(",('page_testcase','BugsLink','','en','Link','',NULL)"); + b.append(",('page_testcase','BugsLink','','fa','لینک','',NULL)"); b.append(",('page_testcase','BugsLink','','fr','Lien',NULL,NULL)"); b.append(",('page_testcase','delete','','en','Dlt','Select this checkbox and then save changes in order to delete the row.',NULL)"); + b.append(",('page_testcase','delete','','fa','حذف','این کادر را انتخاب کنید و سپس تغییرات را ذخیره کنید تا ردیف حذف شود.',NULL)"); b.append(",('page_testcase','delete','','fr','Sup','',NULL)"); b.append(",('page_testcase','message_delete_all','','en','Are you sure you want to delete all testcases below?','Select this checkbox and then save changes in order to delete the row.',NULL)"); + b.append(",('page_testcase','message_delete_all','','fa','آیا مطمئن هستید که می خواهید همه موارد آزمون زیر را حذف کنید؟','این کادر را انتخاب کنید و سپس تغییرات را ذخیره کنید تا ردیف حذف شود.',NULL)"); b.append(",('page_testcase','message_delete_all','','fr','Etes vous sur de vouloir supprimer tous les cas de tests ci-dessous ?','',NULL)"); b.append(",('page_testcase','dpd_choose_step','','en','-- Choose Step --','',NULL)"); + b.append(",('page_testcase','dpd_choose_step','','fa','-- انتخاب گام --','',NULL)"); b.append(",('page_testcase','dpd_choose_step','','fr','-- Choisissez une Etape --',NULL,NULL)"); b.append(",('page_testcase','dpd_choose_test','','en','-- Choose Test --','',NULL)"); + b.append(",('page_testcase','dpd_choose_test','','fa','-- انتخاب آزمون --','',NULL)"); b.append(",('page_testcase','dpd_choose_test','','fr','-- Choisissez une Test --',NULL,NULL)"); b.append(",('page_testcase','dpd_choose_testcase','','en','-- Choose Test Case --','',NULL)"); + b.append(",('page_testcase','dpd_choose_testcase','','fa','-- انتخاب مورد آزمون --','',NULL)"); b.append(",('page_testcase','dpd_choose_testcase','','fr','-- Choisissez un cas de test --',NULL,NULL)"); b.append(",('page_testcase','laststatus','','en','Last Execution Status','',NULL)"); + b.append(",('page_testcase','laststatus','','fa','آخرین وضعیت اجرا','',NULL)"); b.append(",('page_testcase','laststatus','','fr','Dernier statut d\\'éxecution',NULL,NULL)"); b.append(",('page_testcase','lbl_copied_from','','en','Copied from:','',NULL)"); + b.append(",('page_testcase','lbl_copied_from','','fa','رونوشت از:','',NULL)"); b.append(",('page_testcase','lbl_copied_from','','fr','Copié depuis:',NULL,NULL)"); b.append(",('page_testcase','link_edit_step','','en','Edit Used Step','',NULL)"); + b.append(",('page_testcase','link_edit_step','','fa','ویرایش گام استفاده شده','',NULL)"); b.append(",('page_testcase','link_edit_step','','fr','Editer l\\'étape importée',NULL,NULL)"); b.append(",('page_testcase','message_delete','','en','Do you want to delete Test Case \\'%ENTRY%\\' ?','',NULL)"); + b.append(",('page_testcase','message_delete','','fa','آیا می خواهید مورد آزمون \\'%ENTRY%\\' را حذف کنید؟','',NULL)"); b.append(",('page_testcase','message_delete','','fr','Confirmez vous la suppression du Cas de Test \\'%ENTRY%\\' ?','',NULL)"); b.append(",('page_testcase','tooltip_addAction','','en','Add Action','',NULL)"); + b.append(",('page_testcase','tooltip_addAction','','fa','افزودن اقدام','',NULL)"); b.append(",('page_testcase','tooltip_addAction','','fr','Ajouter une Action',NULL,NULL)"); b.append(",('page_testcase','tooltip_addControl','','en','Add Control','',NULL)"); + b.append(",('page_testcase','tooltip_addControl','','fa','افزودن کنترل','',NULL)"); b.append(",('page_testcase','tooltip_addControl','','fr','Ajouter un contrôle',NULL,NULL)"); b.append(",('page_testcase','tooltip_clicktocreate','','en','Property %P% is missing! Click to create a property!','',NULL)"); + b.append(",('page_testcase','tooltip_clicktocreate','','fa','مولفه %P% وجود ندارد! برای ایجاد مولفه کلیک کنید','',NULL)"); b.append(",('page_testcase','tooltip_clicktocreate','','fr','Propriété %P% est manquante. Cliquer pour créer cette propriété',NULL,NULL)"); b.append(",('page_testcase','tooltip_clicktooverride','','en','Property %P% is defined in the test: %T% - %TC% [step: %S%]. Click to override property!','',NULL)"); + b.append(",('page_testcase','tooltip_clicktooverride','','fa','مولفه %P% در آزمون تعریف شده است: %T% - %TC% [گام: %S%]. برای دوباره نویسی کلیک کنید!','',NULL)"); b.append(",('page_testcase','tooltip_clicktooverride','','fr','Propriété %P% est définie dans le Test: %T% - %TC% [étape: %S%]. Cliquer pour réécrire cette propriété!',NULL,NULL)"); b.append(",('page_testcase','tooltip_infooverriden','','en','Property %P% was overridden in the current Test Case. Original test case: %T% - %TC% [step: %S%]','',NULL)"); + b.append(",('page_testcase','tooltip_infooverriden','','fa','مولفه %P% در مورد آزمون دوباره نویسی شده است. مورد آزمون اصلی: %T% - %TC% [گام: %S%]','',NULL)"); b.append(",('page_testcase','tooltip_infooverriden','','fr','La propriété %P% a été réécrite dans ce cas de test. Cas de test original: %T% - %TC% [étape: %S%]',NULL,NULL)"); b.append(",('page_testcase','tooltip_is_useStep','','en','This step can not be used as library, because it uses another step!','',NULL)"); + b.append(",('page_testcase','tooltip_is_useStep','','fa','این مرحله نمی تواند به عنوان کتابخانه استفاده شود، زیرا از مرحله دیگری استفاده می کند!','',NULL)"); b.append(",('page_testcase','tooltip_is_useStep','','fr','Cette étape ne peut être utilisée en tant que librairie, parce qu\\'elle est utilisée par une autre étape',NULL,NULL)"); b.append(",('page_testcase','tooltip_select_entry','','en','Select an entry from library','',NULL)"); + b.append(",('page_testcase','tooltip_select_entry','','fa','مدخلی را از کتابخانه انتخاب کنید','',NULL)"); b.append(",('page_testcase','tooltip_select_entry','','fr','Selectionner une entrée depuis la librairie',NULL,NULL)"); b.append(",('page_testcase','tooltip_step_used','','en','This step is being used by another step(s)!','',NULL)"); + b.append(",('page_testcase','tooltip_step_used','','fa','این مرحله توسط گام(های) دیگری استفاده می شود!','',NULL)"); b.append(",('page_testcase','tooltip_step_used','','fr','Cette étape est utilisée par une étape',NULL,NULL)"); b.append(",('page_testcase','txt_property_not_defined','','en','** Property not defined **','',NULL)"); + b.append(",('page_testcase','txt_property_not_defined','','fa','** مولفه تعریف نشده است **','',NULL)"); b.append(",('page_testcase','txt_property_not_defined','','fr','** Propriété non définie **',NULL,NULL)"); b.append(",('page_testcase','undefined_error_message','','en','There are undefined properties! Please check them before proceed.','',NULL)"); + b.append(",('page_testcase','undefined_error_message','','fa','ویژگی های تعریف نشده ای وجود دارد! لطفاً قبل از ادامه آنها را بررسی کنید.','',NULL)"); b.append(",('page_testcase','undefined_error_message','','fr','Il y a des propriétés indéfinies, veuillez les vérifier avant de procéder',NULL,NULL)"); b.append(",('page_testcasecreate','applicationApkHost','','en','URL address to download the APK file','',NULL)"); + b.append(",('page_testcasecreate','applicationApkHost','','fa','آدرس URL فایل APK برای دانلود','',NULL)"); b.append(",('page_testcasecreate','applicationApkHost','','fr','URL de téléchargement de l\\'APK','',NULL)"); b.append(",('page_testcasecreate','applicationFatHost','','en','Application command to launch','',NULL)"); + b.append(",('page_testcasecreate','applicationFatHost','','fa','دستور برنامه برای راه اندازی','',NULL)"); b.append(",('page_testcasecreate','applicationFatHost','','fr','Commande de l\\'application à lancer','',NULL)"); b.append(",('page_testcasecreate','applicationGuiHost','','en','URL address of the web site','',NULL)"); + b.append(",('page_testcasecreate','applicationGuiHost','','fa','آدرس URL وب سایت','',NULL)"); b.append(",('page_testcasecreate','applicationGuiHost','','fr','Adresse du site web','',NULL)"); b.append(",('page_testcasecreate','applicationIpaHost','','en','URL address to download the IPA file','',NULL)"); + b.append(",('page_testcasecreate','applicationIpaHost','','fa','آدرس URL برای دانلود فایل IPA','',NULL)"); b.append(",('page_testcasecreate','applicationIpaHost','','fr','URL de téléchargement de l\\'IPA','',NULL)"); b.append(",('page_testcasecreate','applicationSrvHost','','en','Host of the webservice','',NULL)"); + b.append(",('page_testcasecreate','applicationSrvHost','','fa','میزبان وب سرویس','',NULL)"); b.append(",('page_testcasecreate','applicationSrvHost','','fr','Host du service web','',NULL)"); b.append(",('page_testcasecreate','chooseOrCreateApplicationLabel','','en','Choose (or Create) the application that you gonna test','',NULL)"); + b.append(",('page_testcasecreate','chooseOrCreateApplicationLabel','','fa','برنامه‌ای را که می‌خواهید آزمون کنید، انتخاب کنید (یا ایجاد کنید).','',NULL)"); b.append(",('page_testcasecreate','chooseOrCreateApplicationLabel','','fr','Choisir (ou Créer) l\\'application à tester','',NULL)"); b.append(",('page_testcasecreate','chooseOrCreateFolderLabel','','en','Choose (or Create) a folder to store your TestCase','',NULL)"); + b.append(",('page_testcasecreate','chooseOrCreateFolderLabel','','fa','پوشه ای را برای ذخیره مورد آزمون خود انتخاب کنید (یا ایجاد کنید).','',NULL)"); b.append(",('page_testcasecreate','chooseOrCreateFolderLabel','','fr','Choisir (ou Créer) le dossier où ranger le Cas de Test','',NULL)"); b.append(",('page_testcasecreate','describeTestCaseLabel','','en','Describe succinctly what your TestCase is created for','',NULL)"); + b.append(",('page_testcasecreate','describeTestCaseLabel','','fa','به طور مختصر توضیح دهید که مورد آزمون شما برای چه چیزی ایجاد شده است','',NULL)"); b.append(",('page_testcasecreate','describeTestCaseLabel','','fr','Décrire succinctement le Cas de Test','',NULL)"); b.append(",('page_testcaseexecution','table_executionlist','','en','Executions List',NULL,NULL)"); + b.append(",('page_testcaseexecution','table_executionlist','','fa','فهرست اجرا',NULL,NULL)"); b.append(",('page_testcaseexecution','table_executionlist','','fr','Liste des executions',NULL,NULL)"); b.append(",('page_testcaseexecution','title','','en','Test Case Execution','',NULL)"); + b.append(",('page_testcaseexecution','title','','fa','اجرا مورد آزمون','',NULL)"); b.append(",('page_testcaseexecution','title','','fr','Execution des Cas de Test','',NULL)"); b.append(",('page_testcaseexecutionmodal','testToExecuteLabel','','en','Testcase to launch :','',NULL)"); + b.append(",('page_testcaseexecutionmodal','testToExecuteLabel','','fa','موردآزمون برای راه اندازی:','',NULL)"); b.append(",('page_testcaseexecutionmodal','testToExecuteLabel','','fr','Cas de Test à lancer :','',NULL)"); b.append(",('page_testcaseexecutionmodal','chooseEnvLabel','','en','Choose environment','',NULL)"); + b.append(",('page_testcaseexecutionmodal','chooseEnvLabel','','fa','انتخاب محیط','',NULL)"); b.append(",('page_testcaseexecutionmodal','chooseEnvLabel','','fr','Choisir l\\'environnement','',NULL)"); b.append(",('page_testcaseexecutionmodal','chooseRobotLabel','','en','Choose robot','',NULL)"); + b.append(",('page_testcaseexecutionmodal','chooseRobotLabel','','fa','انتخاب ربات','',NULL)"); b.append(",('page_testcaseexecutionmodal','chooseRobotLabel','','fr','Choisir le robot','',NULL)"); b.append(",('page_testcaseexecutionmodal','customizeExecutionSettings','','en','Customize execution settings','',NULL)"); + b.append(",('page_testcaseexecutionmodal','customizeExecutionSettings','','fa','تنظیمات اجرای سفارشی','',NULL)"); b.append(",('page_testcaseexecutionmodal','customizeExecutionSettings','','fr','Définir les paramètres d\\'execution','',NULL)"); b.append(",('page_testcaseexecutionqueue','title','','en','Executions in Queue','',NULL)"); + b.append(",('page_testcaseexecutionqueue','title','','fa','اجراهای در صف','',NULL)"); b.append(",('page_testcaseexecutionqueue','title','','fr','File d\\'exécutions','',NULL)"); b.append(",('page_testcaseexecutionqueue','allExecution','','en','Executions in queue','',NULL)"); + b.append(",('page_testcaseexecutionqueue','allExecution','','fa','اجراهای در صف','',NULL)"); b.append(",('page_testcaseexecutionqueue','allExecution','','fr','File d\\'exécutions','',NULL)"); b.append(",('page_testcaseexecutionqueue','browserVersion_col','','en','Browser version','',NULL)"); + b.append(",('page_testcaseexecutionqueue','browserVersion_col','','fa','نسخه مرورگر','',NULL)"); b.append(",('page_testcaseexecutionqueue','browserVersion_col','','fr','Version du navigateur','',NULL)"); b.append(",('page_testcaseexecutionqueue','browser_col','','en','Browser','',NULL)"); + b.append(",('page_testcaseexecutionqueue','browser_col','','fa','مرورگر','',NULL)"); b.append(",('page_testcaseexecutionqueue','browser_col','','fr','Navigateur','',NULL)"); b.append(",('page_testcaseexecutionqueue','button_filterExecuting','','en','Filter Executing',NULL,NULL)"); + b.append(",('page_testcaseexecutionqueue','button_filterExecuting','','fa','فیلتر در حال اجرا',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','button_filterExecuting','','fr','Filtrer En Execution',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','button_filterPendingWithDep','','en','Filter Pending (With Dep)',NULL,NULL)"); + b.append(",('page_testcaseexecutionqueue','button_filterPendingWithDep','','fa','فیلتر در انتظار (با Dep)',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','button_filterPendingWithDep','','fr','Filtrer En Attente (Avec Dep)',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','button_filterPending','','en','Filter Pending',NULL,NULL)"); + b.append(",('page_testcaseexecutionqueue','button_filterPending','','fa','فیلتر در انتظار',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','button_filterPending','','fr','Filtrer En Attente',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','comment_col','','en','Comment','',NULL)"); + b.append(",('page_testcaseexecutionqueue','comment_col','','fa','نظر','',NULL)"); b.append(",('page_testcaseexecutionqueue','comment_col','','fr','Commentaire','',NULL)"); b.append(",('page_testcaseexecutionqueue','constrain','','en','Constrain',NULL,NULL)"); + b.append(",('page_testcaseexecutionqueue','constrain','','fa','محدودیت',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','constrain','','fr','Contrainte',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','country_col','','en','Country','',NULL)"); + b.append(",('page_testcaseexecutionqueue','country_col','','fa','کشور','',NULL)"); b.append(",('page_testcaseexecutionqueue','country_col','','fr','Pays','',NULL)"); b.append(",('page_testcaseexecutionqueue','environment_col','','en','Environment','',NULL)"); + b.append(",('page_testcaseexecutionqueue','environment_col','','fa','محیط','',NULL)"); b.append(",('page_testcaseexecutionqueue','environment_col','','fr','Environnement','',NULL)"); b.append(",('page_testcaseexecutionqueue','exeId','','en','Execution ID','',NULL)"); + b.append(",('page_testcaseexecutionqueue','exeId','','fa','شناسه اجرا','',NULL)"); b.append(",('page_testcaseexecutionqueue','exeId','','fr','ID de l\\'éxécution','',NULL)"); b.append(",('page_testcaseexecutionqueue','id_col','','en','ID','',NULL)"); + b.append(",('page_testcaseexecutionqueue','id_col','','fa','ID','',NULL)"); b.append(",('page_testcaseexecutionqueue','id_col','','fr','ID','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualContextRoot_col','','en','Manual execution context root','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualContextRoot_col','','fr','Contexte racine de l\\'execution manuelle','',NULL)"); From 2b310a8c2476057a0ce2f9840cea1e84b6f64960 Mon Sep 17 00:00:00 2001 From: Hamed Khosrawi Date: Wed, 27 Sep 2023 23:21:43 +0330 Subject: [PATCH 02/10] persian language added. --- .../DocumentationDatabaseService.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java index e7699ebc1..3ccd50b62 100644 --- a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java +++ b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java @@ -3467,70 +3467,101 @@ public ArrayList getSqlDocumentation() { b.append(",('page_testcaseexecutionqueue','exeId','','fa','شناسه اجرا','',NULL)"); b.append(",('page_testcaseexecutionqueue','exeId','','fr','ID de l\\'éxécution','',NULL)"); b.append(",('page_testcaseexecutionqueue','id_col','','en','ID','',NULL)"); - b.append(",('page_testcaseexecutionqueue','id_col','','fa','ID','',NULL)"); + b.append(",('page_testcaseexecutionqueue','id_col','','fa','شناسه','',NULL)"); b.append(",('page_testcaseexecutionqueue','id_col','','fr','ID','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualContextRoot_col','','en','Manual execution context root','',NULL)"); + b.append(",('page_testcaseexecutionqueue','manualContextRoot_col','','fa','ریشه زمینه اجرای دستی','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualContextRoot_col','','fr','Contexte racine de l\\'execution manuelle','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualEnvData_col','','en','Manual execution environment data','',NULL)"); + b.append(",('page_testcaseexecutionqueue','manualEnvData_col','','fa','داده های محیط اجرای دستی','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualEnvData_col','','fr','Données d\\'environnement de l\\'execution manuelle','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualExecution_col','','en','Manual execution','',NULL)"); + b.append(",('page_testcaseexecutionqueue','manualExecution_col','','fa','اجرای دستی','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualExecution_col','','fr','Execution manuelle','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualHost_col','','en','Manual execution host','',NULL)"); + b.append(",('page_testcaseexecutionqueue','manualHost_col','','fa','میزبان اجرای دستی','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualHost_col','','fr','Domaine de l\\'execution manuelle','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualLoginRelativeURL_col','','en','Manual execution login relative URL','',NULL)"); + b.append(",('page_testcaseexecutionqueue','manualLoginRelativeURL_col','','fa','URL نسبی ورود به سیستم اجرای دستی','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualLoginRelativeURL_col','','fr','URL relative de connexion pour l\\'execution manuelle','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualURL_col','','en','Manual execution URL','',NULL)"); + b.append(",('page_testcaseexecutionqueue','manualURL_col','','fa','URL اجرای دستی','',NULL)"); b.append(",('page_testcaseexecutionqueue','manualURL_col','','fr','URL de l\\'execution manuelle','',NULL)"); b.append(",('page_testcaseexecutionqueue','nbInQueue','','en','Execution nb in the Queue',NULL,NULL)"); + b.append(",('page_testcaseexecutionqueue','nbInQueue','','fa','تعداد اجرا در صف',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','nbInQueue','','fr','Nb d\\'éxécutions en queue',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','nbPoolSize','','en','Max Pool Size',NULL,NULL)"); + b.append(",('page_testcaseexecutionqueue','nbPoolSize','','fa','حداکثر اندازه مخزن',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','nbPoolSize','','fr','Taille max du Pool',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','nbRunning','','en','Execution nb Running',NULL,NULL)"); + b.append(",('page_testcaseexecutionqueue','nbRunning','','fa','تعداد اجرای جاری',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','nbRunning','','fr','Nb d\\'éxécutions en cours',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','oversaturation','','en','Execution nb on saturated queue',NULL,NULL)"); + b.append(",('page_testcaseexecutionqueue','oversaturation','','fa','تعداد اجرا در صف اشباع',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','oversaturation','','fr','Nb d\\'éxécutions dans pool saturés',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','pageSource_col','','en','Page source','',NULL)"); + b.append(",('page_testcaseexecutionqueue','pageSource_col','','fa','منبع صفحه','',NULL)"); b.append(",('page_testcaseexecutionqueue','pageSource_col','','fr','Code source','',NULL)"); b.append(",('page_testcaseexecutionqueue','platform_col','','en','Platform','',NULL)"); + b.append(",('page_testcaseexecutionqueue','platform_col','','fa','سکو','',NULL)"); b.append(",('page_testcaseexecutionqueue','platform_col','','fr','Plateforme','',NULL)"); b.append(",('page_testcaseexecutionqueue','processed_col','','en','Proceeded','',NULL)"); + b.append(",('page_testcaseexecutionqueue','processed_col','','fa','اقدام شده','',NULL)"); b.append(",('page_testcaseexecutionqueue','processed_col','','fr','Traité','',NULL)"); b.append(",('page_testcaseexecutionqueue','requestDate_col','','en','Last State Date','',NULL)"); + b.append(",('page_testcaseexecutionqueue','requestDate_col','','fa','تاریخ آخرین وضعیت','',NULL)"); b.append(",('page_testcaseexecutionqueue','requestDate_col','','ru','Дата последнего состояния','',NULL)"); b.append(",('page_testcaseexecutionqueue','requestDate_col','','fr','Date du dernier Etat','',NULL)"); b.append(",('page_testcaseexecutionqueue','retries_col','','en','Retries','',NULL)"); + b.append(",('page_testcaseexecutionqueue','retries_col','','fa','تلاش های مجدد','',NULL)"); b.append(",('page_testcaseexecutionqueue','retries_col','','fr','Tentatives','',NULL)"); b.append(",('page_testcaseexecutionqueue','robotIP_col','','en','Robot host','',NULL)"); + b.append(",('page_testcaseexecutionqueue','robotIP_col','','fa','میزبان ربات','',NULL)"); b.append(",('page_testcaseexecutionqueue','robotIP_col','','fr','Domaine du Robot','',NULL)"); b.append(",('page_testcaseexecutionqueue','robotPort_col','','en','Robot port','',NULL)"); + b.append(",('page_testcaseexecutionqueue','robotPort_col','','fa','درگاه ربات','',NULL)"); b.append(",('page_testcaseexecutionqueue','robotPort_col','','fr','Port du Robot','',NULL)"); b.append(",('page_testcaseexecutionqueue','robot_col','','en','Robot','',NULL)"); + b.append(",('page_testcaseexecutionqueue','robot_col','','fa','ربات','',NULL)"); b.append(",('page_testcaseexecutionqueue','robot_col','','fr','Robot','',NULL)"); b.append(",('page_testcaseexecutionqueue','saturation','','en','Saturation %',NULL,NULL)"); + b.append(",('page_testcaseexecutionqueue','saturation','','fa','% اشباع',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','saturation','','fr','% de saturation',NULL,NULL)"); b.append(",('page_testcaseexecutionqueue','screenshot_col','','en','Screenshots','',NULL)"); + b.append(",('page_testcaseexecutionqueue','screenshot_col','','fa','اسکرین شات ها','',NULL)"); b.append(",('page_testcaseexecutionqueue','screenshot_col','','fr','Captures d\\'écrans','',NULL)"); b.append(",('page_testcaseexecutionqueue','seleniumLog_col','','en','Selenium logs','',NULL)"); + b.append(",('page_testcaseexecutionqueue','seleniumLog_col','','fa','لاگ سلنیوم','',NULL)"); b.append(",('page_testcaseexecutionqueue','seleniumLog_col','','fr','Journalisation Selenium','',NULL)"); b.append(",('page_testcaseexecutionqueue','state_col','','en','State','',NULL)"); + b.append(",('page_testcaseexecutionqueue','state_col','','fa','وضعیت','',NULL)"); b.append(",('page_testcaseexecutionqueue','state_col','','fr','Etat','',NULL)"); b.append(",('page_testcaseexecutionqueue','tag_col','','en','Tag','',NULL)"); + b.append(",('page_testcaseexecutionqueue','tag_col','','fa','برچسب','',NULL)"); b.append(",('page_testcaseexecutionqueue','tag_col','','fr','Tag','',NULL)"); b.append(",('page_testcaseexecutionqueue','testcase_col','','en','Test Case','',NULL)"); + b.append(",('page_testcaseexecutionqueue','testcase_col','','fa','موردآزمون','',NULL)"); b.append(",('page_testcaseexecutionqueue','testcase_col','','fr','Cas de Test','',NULL)"); b.append(",('page_testcaseexecutionqueue','test_col','','en','Test Folder','',NULL)"); + b.append(",('page_testcaseexecutionqueue','test_col','','fa','پوشه آزمون','',NULL)"); b.append(",('page_testcaseexecutionqueue','test_col','','fr','Dossier de Test','',NULL)"); b.append(",('page_testcaseexecutionqueue','timeout_col','','en','Timeout','',NULL)"); + b.append(",('page_testcaseexecutionqueue','timeout_col','','fa','پایان مهلت','',NULL)"); b.append(",('page_testcaseexecutionqueue','timeout_col','','fr','Dépassement de temps','',NULL)"); b.append(",('page_testcaseexecutionqueue','tooltip_dupentry','','en','Duplicate Queue entry','',NULL)"); + b.append(",('page_testcaseexecutionqueue','tooltip_dupentry','','fa','تکثیر مدخل صف','',NULL)"); b.append(",('page_testcaseexecutionqueue','tooltip_dupentry','','fr','Dupliquer l\\'éxécution en queue','',NULL)"); b.append(",('page_testcaseexecutionqueue','tooltip_editentry','','en','Edit Queue entry','',NULL)"); + b.append(",('page_testcaseexecutionqueue','tooltip_editentry','','fa','ویرایش مدخل صف','',NULL)"); b.append(",('page_testcaseexecutionqueue','tooltip_editentry','','fr','Editer l\\'exécution en queue','',NULL)"); b.append(",('page_testcaseexecutionqueue','tooltip_viewentry','','en','View Queue entry','',NULL)"); + b.append(",('page_testcaseexecutionqueue','tooltip_viewentry','','fa','مشاهده مدخل صف','',NULL)"); b.append(",('page_testcaseexecutionqueue','tooltip_viewentry','','fr','Voir l\\'exécution en queue','',NULL)"); b.append(",('page_testcaseexecutionqueue','verbose_col','','en','Verbose','',NULL)"); + b.append(",('page_testcaseexecutionqueue','verbose_col','','fa','درازگو','',NULL)"); b.append(",('page_testcaseexecutionqueue','verbose_col','','fr','Verbeux','',NULL)"); b.append(",('page_testcaseexecutionqueue','robothost','','en','Robot Host','',NULL)"); + b.append(",('page_testcaseexecutionqueue','robothost','','fa','میزبان ربات','',NULL)"); b.append(",('page_testcaseexecutionqueue','robothost','','fr','Robot Host','',NULL)"); b.append(",('page_testcaselist','title','','en','Test Cases','',NULL)"); b.append(",('page_testcaselist','title','','ru','Тестовый случай','',NULL)"); From 232a85fcff68a1e7ec0b5defe4a1d8d6472eadb2 Mon Sep 17 00:00:00 2001 From: Hamed Khosrawi Date: Thu, 28 Sep 2023 13:15:21 +0330 Subject: [PATCH 03/10] persian language added. --- .../DocumentationDatabaseService.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java index 3ccd50b62..98ca8f740 100644 --- a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java +++ b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java @@ -3564,165 +3564,231 @@ public ArrayList getSqlDocumentation() { b.append(",('page_testcaseexecutionqueue','robothost','','fa','میزبان ربات','',NULL)"); b.append(",('page_testcaseexecutionqueue','robothost','','fr','Robot Host','',NULL)"); b.append(",('page_testcaselist','title','','en','Test Cases','',NULL)"); + b.append(",('page_testcaselist','title','','fa','موارد آزمون','',NULL)"); b.append(",('page_testcaselist','title','','ru','Тестовый случай','',NULL)"); b.append(",('page_testcaselist','title','','fr','Cas de Tests','',NULL)"); b.append(",('page_testcaselist','activationCriteria','','en','Activation Criteria','',NULL)"); + b.append(",('page_testcaselist','activationCriteria','','fa','معیارهای فعالسازی','',NULL)"); b.append(",('page_testcaselist','activationCriteria','','ru','Условия активации','',NULL)"); b.append(",('page_testcaselist','activationCriteria','','fr','Critères d\\'activation','',NULL)"); b.append(",('page_testcaselist','btn_create','','en','Create Test Case',NULL,NULL)"); + b.append(",('page_testcaselist','btn_create','','fa','ایجاد مورد آزمون',NULL,NULL)"); b.append(",('page_testcaselist','btn_create','','ru','Создать тестовый случай',NULL,NULL)"); b.append(",('page_testcaselist','btn_create','','fr','Créer un Cas de Test',NULL,NULL)"); b.append(",('page_testcaselist','btn_import','','en','Import Test Cases',NULL,NULL)"); + b.append(",('page_testcaselist','btn_import','','fa','واردکردن موارد آزمون',NULL,NULL)"); b.append(",('page_testcaselist','btn_import','','ru','Импортировать тестовые случаи',NULL,NULL)"); b.append(",('page_testcaselist','btn_import','','fr','Importer les Cas de Tests',NULL,NULL)"); b.append(",('page_testcaselist','btn_import_ide','','en','Import Test Case From Selenium IDE',NULL,NULL)"); + b.append(",('page_testcaselist','btn_import_ide','','fa','واردکردن مورد آزمون از Selenium IDE',NULL,NULL)"); b.append(",('page_testcaselist','btn_import_ide','','ru','Импортировать тестовые случаи из Selenium IDE',NULL,NULL)"); b.append(",('page_testcaselist','btn_import_ide','','fr','Importer un Cas de Test de Selenium IDE',NULL,NULL)"); b.append(",('page_testcaselist','btn_export','','en','Export Test Cases',NULL,NULL)"); + b.append(",('page_testcaselist','btn_export','','fa','استخراج مواردآزمون',NULL,NULL)"); b.append(",('page_testcaselist','btn_export','','ru','Экспортировать тестовые случаи',NULL,NULL)"); b.append(",('page_testcaselist','btn_export','','fr','Exporter les Cas de Test',NULL,NULL)"); b.append(",('page_testcaselist','btn_export1file','','en','Export Test Cases (Single File)',NULL,NULL)"); + b.append(",('page_testcaselist','btn_export1file','','fa','استخراج مواردآزمون(تک فایل)',NULL,NULL)"); b.append(",('page_testcaselist','btn_export1file','','ru','Экспортировать тестовые случаи (Одним файлом)',NULL,NULL)"); b.append(",('page_testcaselist','btn_export1file','','fr','Exporter les Cas de Test (Fichier unique)',NULL,NULL)"); b.append(",('page_testcaselist','btn_delete','','en','Delete Test Case','',NULL)"); + b.append(",('page_testcaselist','btn_delete','','fa','حذف مورد آزمون','',NULL)"); b.append(",('page_testcaselist','btn_delete','','ru','Удалить тестовый случай','',NULL)"); b.append(",('page_testcaselist','btn_delete','','fr','Supprimer le Cas de Test','',NULL)"); b.append(",('page_testcaselist','btn_delete_all','','en','Delete all these Test Case : ','',NULL)"); + b.append(",('page_testcaselist','btn_delete_all','','fa','حذف همه این موارد آزمون: ','',NULL)"); b.append(",('page_testcaselist','btn_delete_all','','ru','Удалить все тестовые случаи : ','',NULL)"); b.append(",('page_testcaselist','btn_delete_all','','fr','Supprimer ces Cas de Test : ','',NULL)"); b.append(",('page_testcaselist','btn_duplicate','','en','Duplicate Test Case','',NULL)"); + b.append(",('page_testcaselist','btn_duplicate','','fa','تکثیر مورد آزمون','',NULL)"); b.append(",('page_testcaselist','btn_duplicate','','ru','Дублировать тестовый случай','',NULL)"); b.append(",('page_testcaselist','btn_duplicate','','fr','Dupliquer le Cas de Test','',NULL)"); b.append(",('page_testcaselist','btn_edit','','en','Edit Test Case Header','',NULL)"); + b.append(",('page_testcaselist','btn_edit','','fa','ویرایش سرآیند موردآزمون','',NULL)"); b.append(",('page_testcaselist','btn_edit','','ru','Править заголовок тестового случая','',NULL)"); b.append(",('page_testcaselist','btn_edit','','fr','Modifer l\\'Entete du Cas de Test','',NULL)"); b.append(",('page_testcaselist','btn_editLabel','','en','Edit Test Case labels','',NULL)"); + b.append(",('page_testcaselist','btn_editLabel','','fa','ویرایش برچسب های موردآزمون','',NULL)"); b.append(",('page_testcaselist','btn_editLabel','','ru','Править тэги тестового случая','',NULL)"); b.append(",('page_testcaselist','btn_editLabel','','fr','Modifier les étiquettes du Cas de Test','',NULL)"); b.append(",('page_testcaselist','btn_editScript','','en','Go to Test Case Script Page','',NULL)"); + b.append(",('page_testcaselist','btn_editScript','','fa','برو به صفحه اسکریپت موردآزمون','',NULL)"); b.append(",('page_testcaselist','btn_editScript','','ru','Перейти к сценарию тестового случая','',NULL)"); b.append(",('page_testcaselist','btn_editScript','','fr','Aller à la page du Script du Cas de Test','',NULL)"); b.append(",('page_testcaselist','btn_runTest','','en','Run Test Case','',NULL)"); + b.append(",('page_testcaselist','btn_runTest','','en','اجرای مورد آزمون','',NULL)"); b.append(",('page_testcaselist','btn_runTest','','ru','Запустить Тестовый случай','',NULL)"); b.append(",('page_testcaselist','btn_runTest','','fr','Exécuter le Cas de Test','',NULL)"); b.append(",('page_testcaselist','btn_view','','en','View Test Case','',NULL)"); + b.append(",('page_testcaselist','btn_view','','fa','اجرای موردآزمون','',NULL)"); b.append(",('page_testcaselist','btn_view','','ru','Посмотреть Тестовый случай','',NULL)"); b.append(",('page_testcaselist','btn_view','','fr','Voir Cas de Test','',NULL)"); b.append(",('page_testcaselist','filters','','en','Filters','Test filter',NULL)"); + b.append(",('page_testcaselist','filters','','fa','فیلترها','فیلترآزمون',NULL)"); b.append(",('page_testcaselist','filters','','ru','Фильтры','Test filter',NULL)"); b.append(",('page_testcaselist','filters','','fr','Filtres','Filtre des tests',NULL)"); b.append(",('page_testcaselist','import_testcase_msg','','en','Select testcase files to import','',NULL)"); + b.append(",('page_testcaselist','import_testcase_msg','','fa','انتخاب فایلهای موردآزمون برای واردکردن','',NULL)"); b.append(",('page_testcaselist','import_testcase_msg','','ru','Выбрать импортируемые файлы тестовых случаев','',NULL)"); b.append(",('page_testcaselist','import_testcase_msg','','fr','Selectionner des fichiers de cas de test à importer','',NULL)"); b.append(",('page_testcaselist','link','','en','Bug Link','',NULL)"); + b.append(",('page_testcaselist','link','','fa','لینک باگ','',NULL)"); b.append(",('page_testcaselist','link','','ru','Ссылка на ошибку','',NULL)"); b.append(",('page_testcaselist','link','','fr','Lien vers le Bug','',NULL)"); b.append(",('page_testcaselist','massAction','','en','Massively update the selected test cases','',NULL)"); + b.append(",('page_testcaselist','massAction','','fa','موارد آزمون انتخاب شده را به طور گسترده به روز کنید','',NULL)"); b.append(",('page_testcaselist','massAction','','ru','Массовое обновление выбранных тестовых случаев','',NULL)"); b.append(",('page_testcaselist','massAction','','fr','Mise à jour en masse les Cas de Test selectionnés','',NULL)"); b.append(",('page_testcaselist','tabLabel','','en','Label Management',NULL,NULL)"); + b.append(",('page_testcaselist','tabLabel','','fa','مدیریت برچسب',NULL,NULL)"); b.append(",('page_testcaselist','tabLabel','','ru','Управление тэгами',NULL,NULL)"); b.append(",('page_testcaselist','tabLabel','','fr','Gestion des Labels',NULL,NULL)"); b.append(",('page_testcaselist','tabUpdate','','en','Update',NULL,NULL)"); + b.append(",('page_testcaselist','tabUpdate','','fa','بروزرسانی',NULL,NULL)"); b.append(",('page_testcaselist','tabUpdate','','ru','Обновить',NULL,NULL)"); b.append(",('page_testcaselist','tabUpdate','','fr','Mise à jour',NULL,NULL)"); b.append(",('page_testcaselist','testCaseInfo','','en','Test Case Info','',NULL)"); + b.append(",('page_testcaselist','testCaseInfo','','fa','اطلاعات موردآزمون','',NULL)"); b.append(",('page_testcaselist','testCaseInfo','','ru','Информация о Тестовом случае','',NULL)"); b.append(",('page_testcaselist','testCaseInfo','','fr','Test Case Info','',NULL)"); b.append(",('page_testcaselist','testcaselist','','en','Test Case List','List of all the test case of the selected test',NULL)"); + b.append(",('page_testcaselist','testcaselist','','fa','فهرست موردآزمون','فهرست تمام مواردآزمون آزمون انتخابی',NULL)"); b.append(",('page_testcaselist','testcaselist','','ru','Список Тестовых случаев','Список всех тестовых случаев выбранного теста',NULL)"); b.append(",('page_testcaselist','testcaselist','','fr','Liste des Cas de Test','Liste de tout les cas de test du test selectionné',NULL)"); b.append(",('page_testcaselist','testCaseParameter','','en','Test Case Parameter','',NULL)"); + b.append(",('page_testcaselist','testCaseParameter','','fa','پارامتر موردآزمون','',NULL)"); b.append(",('page_testcaselist','testCaseParameter','','ru','Параметры тестового случая','',NULL)"); b.append(",('page_testcaselist','testCaseParameter','','fr','Parametres du Cas de Test','',NULL)"); b.append(",('page_testcaselist','testInfo','','en','Test Info','',NULL)"); + b.append(",('page_testcaselist','testInfo','','fa','اطلاعات آزمون','',NULL)"); b.append(",('page_testcaselist','testInfo','','ru','Информация о тесте','',NULL)"); b.append(",('page_testcaselist','testInfo','','fr','Test Info','',NULL)"); b.append(",('page_testcaselist','ask_edit_testcase','','en','Do you want to edit testcase script now ?','',NULL)"); + b.append(",('page_testcaselist','ask_edit_testcase','','fa','آیا اکنون می خواهید اسکریپت مورد آزمون را ویرایش کنید؟','',NULL)"); b.append(",('page_testcaselist','ask_edit_testcase','','ru','Вы хотите редактировать сценарий тестового случая сейчас ?','',NULL)"); b.append(",('page_testcaselist','ask_edit_testcase','','fr','Souhaitez-vous aller editer le cas de test maintenant ?','',NULL)"); b.append(",('page_testcasescript','action_field','','en','Action','',NULL)"); + b.append(",('page_testcasescript','action_field','','fa','اقدام','',NULL)"); b.append(",('page_testcasescript','action_field','','fr','Action','',NULL)"); b.append(",('page_testcasescript','add_action','','en','Add Action','',NULL)"); + b.append(",('page_testcasescript','add_action','','fa','افزودن اقدام','',NULL)"); b.append(",('page_testcasescript','add_action','','fr','Ajouter une Action','',NULL)"); b.append(",('page_testcasescript','add_step','','en','Add step','',NULL)"); + b.append(",('page_testcasescript','add_step','','fa','افزودن گام','',NULL)"); b.append(",('page_testcasescript','add_step','','fr','Ajouter une Etape','',NULL)"); b.append(",('page_testcasescript','cant_detach_library','','en','You can\\'t detach this library because it is used in these steps : ','',NULL)"); + b.append(",('page_testcasescript','cant_detach_library','','fa','شما نمی توانید این کتابخانه را جدا کنید زیرا در این مراحل استفاده می شود: ','',NULL)"); b.append(",('page_testcasescript','cant_detach_library','','fr','Vous ne pouvez pas détacher cette librairie car elle est utilisée dans ces étapes : ','',NULL)"); b.append(",('page_testcasescript','condition_operation_field','','en','Condition Operation','',NULL)"); + b.append(",('page_testcasescript','condition_operation_field','','fa','شرط عملیات','',NULL)"); b.append(",('page_testcasescript','condition_operation_field','','fr','Condition d execution','',NULL)"); b.append(",('page_testcasescript','condition_parameter_field','','en','Condition Parameter','',NULL)"); + b.append(",('page_testcasescript','condition_parameter_field','','fa','پارامتر شرط','',NULL)"); b.append(",('page_testcasescript','condition_parameter_field','','fr','Paramètre de la condition','',NULL)"); b.append(",('page_testcasescript','control_field','','en','Control','',NULL)"); + b.append(",('page_testcasescript','control_field','','fa','کنترل','',NULL)"); b.append(",('page_testcasescript','control_field','','fr','Control','',NULL)"); b.append(",('page_testcasescript','db_field','','en','Database','',NULL)"); + b.append(",('page_testcasescript','db_field','','fa','پایگاه داده','',NULL)"); b.append(",('page_testcasescript','db_field','','fr','Base de donnée','',NULL)"); b.append(",('page_testcasescript','delete','','en','Delete','Delete',NULL)"); + b.append(",('page_testcasescript','delete','','fa','حذف','حذف کردن',NULL)"); b.append(",('page_testcasescript','delete','','fr','Supprimer','Supprimer',NULL)"); b.append(",('page_testcasescript','describe_step','','en','Describe Step','',NULL)"); + b.append(",('page_testcasescript','describe_step','','fa','توصیف گام','',NULL)"); b.append(",('page_testcasescript','describe_step','','fr','Décrivez ce Step','',NULL)"); b.append(",('page_testcasescript','describe_action','','en','Describe Action','',NULL)"); + b.append(",('page_testcasescript','describe_action','','fa','توصیف اقدام','',NULL)"); b.append(",('page_testcasescript','describe_action','','fr','Décrivez cette action','',NULL)"); b.append(",('page_testcasescript','describe_control','','en','Describe Control','',NULL)"); + b.append(",('page_testcasescript','describe_control','','fa','توصیف کنترل','',NULL)"); b.append(",('page_testcasescript','describe_control','','fr','Décrivez ce controle','',NULL)"); b.append(",('page_testcasescript','description_field','','en','Description','',NULL)"); + b.append(",('page_testcasescript','description_field','','fa','توصیف','',NULL)"); b.append(",('page_testcasescript','description_field','','ru','Описание','',NULL)"); b.append(",('page_testcasescript','description_field','','fr','Description','',NULL)"); b.append(",('page_testcasescript','edit_testcase','','en','Header','Edit TestCase Header',NULL)"); + b.append(",('page_testcasescript','edit_testcase','','fa','سرآیند','ویرایش سرآیند موردآزمون',NULL)"); b.append(",('page_testcasescript','edit_testcase','','fr','Header','Modifier l\\'Entete du TestCase',NULL)"); b.append(",('page_testcasescript','fatal_field','','en','Fatal','',NULL)"); + b.append(",('page_testcasescript','fatal_field','','fa','مهلک','',NULL)"); b.append(",('page_testcasescript','fatal_field','','fr','Fatal','',NULL)"); b.append(",('page_testcasescript','feed_propertydescription','','en','Feed Property Description','',NULL)"); + b.append(",('page_testcasescript','feed_propertydescription','','fa','توصیف تغذیه مولفه','',NULL)"); b.append(",('page_testcasescript','feed_propertydescription','','ru','Описание источника подачи','',NULL)"); b.append(",('page_testcasescript','feed_propertydescription','','fr','Remplissez la description','',NULL)"); b.append(",('page_testcasescript','feed_propertyname','','en','Feed Property name','',NULL)"); + b.append(",('page_testcasescript','feed_propertyname','','fa','نام تغذیه مولفه','',NULL)"); b.append(",('page_testcasescript','feed_propertyname','','fr','Remplissez le nom de la propriété','',NULL)"); b.append(",('page_testcasescript','force_execution_field','','en','Fatal','',NULL)"); + b.append(",('page_testcasescript','force_execution_field','','fa','مهلک','',NULL)"); b.append(",('page_testcasescript','force_execution_field','','fr','Fatal','',NULL)"); b.append(",('page_testcasescript','goto','','en','Go To','',NULL)"); + b.append(",('page_testcasescript','goto','','fa','برو به','',NULL)"); b.append(",('page_testcasescript','goto','','fr','Aller','',NULL)"); b.append(",('page_testcasescript','imported_from','','en','Imported from','',NULL)"); + b.append(",('page_testcasescript','imported_from','','fa','وارد شده از','',NULL)"); b.append(",('page_testcasescript','imported_from','','fr','Importé depuis','',NULL)"); b.append(",('page_testcasescript','index','','en','Index','',NULL)"); + b.append(",('page_testcasescript','index','','fa','فهرست','',NULL)"); b.append(",('page_testcasescript','index','','fr','Index','',NULL)"); b.append(",('page_testcasescript','length','','en','Length','',NULL)"); + b.append(",('page_testcasescript','length','','fa','طول','',NULL)"); b.append(",('page_testcasescript','length','','fr','Taille','',NULL)"); b.append(",('page_testcasescript','length_field','','en','Length','',NULL)"); + b.append(",('page_testcasescript','length_field','','fa','طول','',NULL)"); b.append(",('page_testcasescript','length_field','','fr','Taille','',NULL)"); b.append(",('page_testcasescript','manage_prop','','en','Manage Properties','',NULL)"); + b.append(",('page_testcasescript','manage_prop','','fa','مدیریت خصوصیت ها','',NULL)"); b.append(",('page_testcasescript','manage_prop','','fr','Gestion des Propriétés','',NULL)"); b.append(",('page_testcasescript','more_actions','','en','More Actions','More Actions',NULL)"); + b.append(",('page_testcasescript','more_actions','','fa','اقدامات بیشتر','اقدامات بیشتر',NULL)"); b.append(",('page_testcasescript','more_actions','','fr','Autres Actions','Autres Actions',NULL)"); b.append(",('page_testcasescript','nature_field','','en','Nature','',NULL)"); + b.append(",('page_testcasescript','nature_field','','fa','ماهیت','',NULL)"); b.append(",('page_testcasescript','nature_field','','fr','Nature','',NULL)"); b.append(",('page_testcasescript','not_application_object','','en','It is not an Application Object','',NULL)"); + b.append(",('page_testcasescript','not_application_object','','fa','این یک شیء برنامه نیست','',NULL)"); b.append(",('page_testcasescript','not_application_object','','ru','Это не объект приложения','',NULL)"); b.append(",('page_testcasescript','not_application_object','','fr','Ce n\\'est pas un object de l\\'application','',NULL)"); b.append(",('page_testcasescript','not_property','','en','It is not a property','',NULL)"); + b.append(",('page_testcasescript','not_property','','fa','این مولفه نیست','',NULL)"); b.append(",('page_testcasescript','not_property','','fr','Ce n\\'est pas une propriété','',NULL)"); b.append(",('page_testcasescript','property_field','','en','Property','',NULL)"); + b.append(",('page_testcasescript','property_field','','fa','مولفه','',NULL)"); b.append(",('page_testcasescript','property_field','','fr','Propriété','',NULL)"); b.append(",('page_testcasescript','rc','','en','Result Code','',NULL)"); + b.append(",('page_testcasescript','rc','','fa','کد نتیجه','',NULL)"); b.append(",('page_testcasescript','rc','','fr','Code Retour','',NULL)"); b.append(",('page_testcasescript','rerunqueue_testcase','','en','ReRun From Queue','',NULL)"); + b.append(",('page_testcasescript','rerunqueue_testcase','','fa','اجرای مجدد از صف','',NULL)"); b.append(",('page_testcasescript','rerunqueue_testcase','','fr','ReExecuter de la Queue','',NULL)"); b.append(",('page_testcasescript','rerunqueueandsee_testcase','','en','Re Run','ReRun with last execution parameters',NULL)"); + b.append(",('page_testcasescript','rerunqueueandsee_testcase','','fa','جرای مجدد','اجرای مجدد با آخرین پارامترهای اجرا',NULL)"); b.append(",('page_testcasescript','rerunqueueandsee_testcase','','fr','Relancer','Executer avec les mêmes paramètres de la dernière execution',NULL)"); b.append(",('page_testcasescript','rerun_testcase','','en','Rerun TestCase','',NULL)"); + b.append(",('page_testcasescript','rerun_testcase','','fa','اجرای مجدد موردآزمون','',NULL)"); b.append(",('page_testcasescript','rerun_testcase','','fr','ReExecuter le TestCase','',NULL)"); b.append(",('page_testcasescript','retrynb','','en','Retry Number','',NULL)"); + b.append(",('page_testcasescript','retrynb','','fa','شماره شروع مجدد','',NULL)"); b.append(",('page_testcasescript','retrynb','','fr','Nombre d\\'essais','',NULL)"); b.append(",('page_testcasescript','retryperiod','','en','Retry Period','',NULL)"); + b.append(",('page_testcasescript','retryperiod','','fa','دوره شروع مجدد','',NULL)"); b.append(",('page_testcasescript','retryperiod','','fr','Periode d\\'essai','',NULL)"); b.append(",('page_testcasescript','rMessage','','en','Result Message','',NULL)"); + b.append(",('page_testcasescript','rMessage','','fa','پیام نتیجه','',NULL)"); b.append(",('page_testcasescript','rMessage','','fr','Message de Retour','',NULL)"); b.append(",('page_testcasescript','rowlimit_field','','en','Row limit','',NULL)"); + b.append(",('page_testcasescript','rowlimit_field','','fa','محدودیت تعداد خطوط','',NULL)"); b.append(",('page_testcasescript','rowlimit_field','','fr','Nombre de lignes limite','',NULL)"); b.append(",('page_testcasescript','row_limit','','en','Row Limit','',NULL)"); + b.append(",('page_testcasescript','row_limit','','fa','محدودیت تعداد خطوط','',NULL)"); b.append(",('page_testcasescript','row_limit','','fr','Nombre de lignes limite','',NULL)"); b.append(",('page_testcasescript','run','','en','Run','',NULL)"); + b.append(",('page_testcasescript','run','','fa','اجرا','',NULL)"); b.append(",('page_testcasescript','run','','fr','Executer','',NULL)"); b.append(",('page_testcasescript','runtestcasepopover_title','','en','Run Test Case','', NULL)"); + b.append(",('page_testcasescript','runtestcasepopover_title','','fa','اجرای موردآزمون','', NULL)"); b.append(",('page_testcasescript','runtestcasepopover_title','','fr','Executer le Case de Test', '', NULL)"); b.append(",('page_testcasescript','runtestcasepopover_content','','en','Trigger the first execution of this testcase.', '', NULL)"); b.append(",('page_testcasescript','runtestcasepopover_content','','fr','Déclencher la première execution du cas de test.', '', NULL)"); From a0b6d705bc641edfc0c7ada748bba235b9e2f2f2 Mon Sep 17 00:00:00 2001 From: Hamed Khosrawi Date: Thu, 28 Sep 2023 13:19:44 +0330 Subject: [PATCH 04/10] persian language added. --- .../core/database/DocumentationDatabaseService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java index 98ca8f740..6550d234b 100644 --- a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java +++ b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java @@ -88,7 +88,7 @@ public ArrayList getSqlDocumentation() { b.append("('application','Application','','en','Application','','_application_attributes')"); b.append(",('application','Application','','ru','Приложение','','_application_attributes')"); b.append(",('application','Application','','fr','Application','','_application_attributes')"); - b.append(",('application','Application','','fa','برنامه کاربردی','','_application_attributes')"); + b.append(",('application','Application','','fa','برنامه','','_application_attributes')"); b.append(",('application','bugtrackernewurl','','en','New Bug URL','This correspond to the URL that points to the page where a new bug can be created on the Bug system of the application.','_application_attributes')"); b.append(",('application','bugtrackernewurl','','ru','URL-адрес новой ошибки','Это соответствует URL-адресу системы регистрации ошибок, который указывает на страницу где может быть создана новая ошибка application.','_application_attributes')"); b.append(",('application','bugtrackernewurl','','fr','URL pour nouveau Bug','Correspond à l\\'URL qui pointe vers la page de création de bug du Bug Tracker de l\\'application.','_application_attributes')"); @@ -147,7 +147,7 @@ public ArrayList getSqlDocumentation() { b.append(",('applicationObject','Value','','fa','مقدار','',NULL)"); b.append(",('appservice','application','','en','Application','','_service_library')"); b.append(",('appservice','application','','ru','Приложение','','_service_library')"); - b.append(",('appservice','application','','fa','برنامه کاربردی','','_librairie_de_services')"); + b.append(",('appservice','application','','fa','برنامه','','_librairie_de_services')"); b.append(",('appservice','description','','en','Description','','_service_library')"); b.append(",('appservice','description','','ru','Описание','','_service_library')"); b.append(",('appservice','description','','fr','Description','','_librairie_de_services')"); @@ -308,7 +308,7 @@ public ArrayList getSqlDocumentation() { b.append(",('buildrevisionparameters','id','','fa','مشخصه','','_build_content')"); b.append(",('buildrevisionparameters','jenkinsBuildId','','en','Jenkins Build ID','','_build_content')"); b.append(",('buildrevisionparameters','jenkinsBuildId','','fr','ID du build Jenkins','','_contenu_des_builds')"); - b.append(",('buildrevisionparameters','jenkinsBuildId','','fa','مشخصه ساخت Jenkins','','_build_content')"); + b.append(",('buildrevisionparameters','jenkinsBuildId','','fa','مولفه ساخت Jenkins','','_build_content')"); b.append(",('buildrevisionparameters','Link','','en','Link','This is the link to the detailed content of the release.','_build_content')"); b.append(",('buildrevisionparameters','Link','','fr','Lien','Lien vers le detail de la release.','_contenu_des_builds')"); b.append(",('buildrevisionparameters','Link','','fa','لینک','این لینک به محتوای دقیق نسخه می باشد.','_build_content')"); @@ -318,7 +318,7 @@ public ArrayList getSqlDocumentation() { b.append(",('buildrevisionparameters','mavenGroupId','','en','Maven Group ID','','_build_content')"); b.append(",('buildrevisionparameters','mavenGroupId','','ru','Идентификатор Maven Группы','','_build_content')"); b.append(",('buildrevisionparameters','mavenGroupId','','fr','ID du groupe Maven','','_contenu_des_builds')"); - b.append(",('buildrevisionparameters','mavenGroupId','','fa','مشخصه گروه Maven','','_build_content')"); + b.append(",('buildrevisionparameters','mavenGroupId','','fa','مولفه گروه Maven','','_build_content')"); b.append(",('buildrevisionparameters','mavenVersion','','en','Maven Version','','_build_content')"); b.append(",('buildrevisionparameters','mavenVersion','','fr','Maven Version','','_contenu_des_builds')"); b.append(",('buildrevisionparameters','mavenVersion','','fa','نسخه Maven','','_build_content')"); From 4f7f79a2d91a1aa54989c417689dcb3b26d59f2d Mon Sep 17 00:00:00 2001 From: Hamed Khosrawi Date: Fri, 29 Sep 2023 11:30:11 +0330 Subject: [PATCH 05/10] persian language added. --- .../DocumentationDatabaseService.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java index 6550d234b..79970b4b6 100644 --- a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java +++ b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java @@ -3791,62 +3791,88 @@ public ArrayList getSqlDocumentation() { b.append(",('page_testcasescript','runtestcasepopover_title','','fa','اجرای موردآزمون','', NULL)"); b.append(",('page_testcasescript','runtestcasepopover_title','','fr','Executer le Case de Test', '', NULL)"); b.append(",('page_testcasescript','runtestcasepopover_content','','en','Trigger the first execution of this testcase.', '', NULL)"); + b.append(",('page_testcasescript','runtestcasepopover_content','','fa','اولین اجرای این تست را راه اندازی کنید.', '', NULL)"); b.append(",('page_testcasescript','runtestcasepopover_content','','fr','Déclencher la première execution du cas de test.', '', NULL)"); b.append(",('page_testcasescript','run_old','','en','Old page','',NULL)"); + b.append(",('page_testcasescript','run_old','','fa','صفحه قدیمی','',NULL)"); b.append(",('page_testcasescript','run_old','','fr','Ancienne page','',NULL)"); b.append(",('page_testcasescript','run_testcase','','en','Run','Run TestCase',NULL)"); + b.append(",('page_testcasescript','run_testcase','','fa','اجرا','اجرای موردآزمون',NULL)"); b.append(",('page_testcasescript','run_testcase','','fr','Lancer','Executer le TestCase',NULL)"); b.append(",('page_testcasescript','saveas_script','','en','Save As','Save As',NULL)"); + b.append(",('page_testcasescript','saveas_script','','fa','ذخیره بعنوان','ذخیره بعنوان',NULL)"); b.append(",('page_testcasescript','saveas_script','','fr','Sauvegarder Sous','Sauvergarder Sous',NULL)"); b.append(",('page_testcasescript','save_script','','en','Save','Save Test Case',NULL)"); + b.append(",('page_testcasescript','save_script','','fa','ذخیره','ذخیره موردآزمون',NULL)"); b.append(",('page_testcasescript','save_script','','fr','Sauvegarder','Sauvegarder le Cas de Test',NULL)"); b.append(",('page_testcasescript','see_lastexec','','en','Execution List','Executions of this Testcase',NULL)"); + b.append(",('page_testcasescript','see_lastexec','','fa','فهرست اجرا','اجراهای این موردآزمون',NULL)"); b.append(",('page_testcasescript','see_lastexec','','fr','Liste des Executions','Executions de ce Cas de Test',NULL)"); b.append(",('page_testcasescript','see_lastexecuniq','','en','Last Execution','Last Execution',NULL)"); + b.append(",('page_testcasescript','see_lastexecuniq','','fa','آخرین اجرا','آخرین اجرا',NULL)"); b.append(",('page_testcasescript','see_lastexecuniq','','fr','Dernière Execution','Dernière Execution',NULL)"); b.append(",('page_testcasescript','see_logs','','en','Logs','See Logs',NULL)"); + b.append(",('page_testcasescript','see_logs','','fa','لاگ ها','مشاهده لاگ ها',NULL)"); b.append(",('page_testcasescript','see_logs','','fr','Journaux','Journaux',NULL)"); b.append(",('page_testcasescript','see_test','','en','Testcase List','Testcase list in same test folder',NULL)"); + b.append(",('page_testcasescript','see_test','','fa','فهرست مواردآزمون','فهرست مواردآزمون در پوشه آزمون یکسان',NULL)"); b.append(",('page_testcasescript','see_test','','fr','Liste des cas de test','Liste des cas de test du test folder',NULL)"); b.append(",('page_testcasescript','select_test','','en','Select a test','',NULL)"); + b.append(",('page_testcasescript','select_test','','fa','انتخاب آزمون','',NULL)"); b.append(",('page_testcasescript','select_test','','fr','Sélectionner un test','',NULL)"); b.append(",('page_testcasescript','select_testcase','','en','Select a TestCase','',NULL)"); + b.append(",('page_testcasescript','select_testcase','','fa','انتخاب موردآزمون','',NULL)"); b.append(",('page_testcasescript','select_testcase','','fr','Sélectionner un TestCase','',NULL)"); b.append(",('page_testcasescript','steps_title','','en','Steps','',NULL)"); + b.append(",('page_testcasescript','steps_title','','fa','گام ها','',NULL)"); b.append(",('page_testcasescript','steps_title','','fr','Etapes','',NULL)"); b.append(",('page_testcasescript','step_condition_operation','','en','Step Condition Operation','',NULL)"); + b.append(",('page_testcasescript','step_condition_operation','','fa','شرط اجرای مرحله','',NULL)"); b.append(",('page_testcasescript','step_condition_operation','','fr','Condition d\\'exécution de l\\'étape','',NULL)"); b.append(",('page_testcasescript','step_condition_value1','','en','Step Condition Parameter','',NULL)"); + b.append(",('page_testcasescript','step_condition_value1','','fa','پارامتر شرط مرحله','',NULL)"); b.append(",('page_testcasescript','step_condition_value1','','fr','Paramètre de condition','',NULL)"); b.append(",('page_testcasescript','testcasescript_title','','en','Test Case Script','',NULL)"); + b.append(",('page_testcasescript','testcasescript_title','','fa','اسکریپت موردآزمون','',NULL)"); b.append(",('page_testcasescript','testcasescript_title','','fr','Script du Cas de Test','',NULL)"); b.append(",('page_testcasescript','testcasescript_title_s','','en','Test Case','',NULL)"); + b.append(",('page_testcasescript','testcasescript_title_s','','fa','موردآزمون','',NULL)"); b.append(",('page_testcasescript','testcasescript_title_s','','fr','Cas de Test','',NULL)"); b.append(",('page_testcasescript','type_field','','en','Type','',NULL)"); + b.append(",('page_testcasescript','type_field','','fa','نوع','',NULL)"); b.append(",('page_testcasescript','type_field','','fr','Type','',NULL)"); b.append(",('page_testcasescript','unlink_useStep','','en','Unlink Used step','',NULL)"); + b.append(",('page_testcasescript','unlink_useStep','','fa','پیوند مرحله را از کتابخانه آن لغو کنید','',NULL)"); b.append(",('page_testcasescript','unlink_useStep','','fr','Délier l\\'étape de sa librairie','',NULL)"); b.append(",('page_testcasescript','unlink_useStep_warning','','en','Are you sure you want to unlink this used step ? You can\\'t undo this.','',NULL)"); + b.append(",('page_testcasescript','unlink_useStep_warning','','fa','آیا مطمئنید که می‌خواهید پیوند این مرحله را از کتابخانه آن لغو کنید؟ این عمل قابل بازگشت نیست.','',NULL)"); b.append(",('page_testcasescript','unlink_useStep_warning','','fr','Etes vous sur de vouloir délier cette étape de sa librairie ? Cette action n\\'est pas annulable.','',NULL)"); b.append(",('page_testcasescript','value1init_field','','en','Value 1 Initial','',NULL)"); + b.append(",('page_testcasescript','value1init_field','','fa','مقدار 1 اولیه','',NULL)"); b.append(",('page_testcasescript','value1init_field','','ru','Исходное значение 1','',NULL)"); b.append(",('page_testcasescript','value1init_field','','fr','Valeur 1 Initiale','',NULL)"); b.append(",('page_testcasescript','value1_field','','en','Value 1','',NULL)"); + b.append(",('page_testcasescript','value1_field','','fa','مقدار 1','',NULL)"); b.append(",('page_testcasescript','value1_field','','ru','Значение 1','',NULL)"); b.append(",('page_testcasescript','value1_field','','fr','Value 1','',NULL)"); b.append(",('page_testcasescript','value2init_field','','en','Value 2 Initial','',NULL)"); + b.append(",('page_testcasescript','value2init_field','','fa','مقدار 2 اولیه','',NULL)"); b.append(",('page_testcasescript','value2init_field','','ru','Исходное значение 2','',NULL)"); b.append(",('page_testcasescript','value2init_field','','fr','Valeur 2 Initiale','',NULL)"); b.append(",('page_testcasescript','value2_field','','en','Value 2','',NULL)"); + b.append(",('page_testcasescript','value2_field','','fa','مقدار 2','',NULL)"); b.append(",('page_testcasescript','value2_field','','ru','Значение 2','',NULL)"); b.append(",('page_testcasescript','value2_field','','fr','Value 2','',NULL)"); b.append(",('page_testcasescript','value3init_field','','en','Value 3 Initial','',NULL)"); + b.append(",('page_testcasescript','value3init_field','','fa','مقدار 3 اولیه','',NULL)"); b.append(",('page_testcasescript','value3init_field','','ru','Исходное значение 3','',NULL)"); b.append(",('page_testcasescript','value3init_field','','fr','Valeur 3 Initiale','',NULL)"); b.append(",('page_testcasescript','value3_field','','en','Value 3','',NULL)"); + b.append(",('page_testcasescript','value3_field','','fa','مقدار 3','',NULL)"); b.append(",('page_testcasescript','value3_field','','ru','Значение 3','',NULL)"); b.append(",('page_testcasescript','value3_field','','fr','Value 3','',NULL)"); b.append(",('page_testcasescript','value_field','','en','Value','',NULL)"); + b.append(",('page_testcasescript','value_field','','fa','مقدار','',NULL)"); b.append(",('page_testcasescript','value_field','','ru','Значение','',NULL)"); b.append(",('page_testcasescript','value_field','','fr','Valeur','',NULL)"); b.append(",('page_testcasescript','warning_nocountry','','en','That Testcase has no country selected, please add at east one country (in \\'Activation Criteria\\' Tab of the testcase) in order to be able to add and define properties.','',NULL)"); From 41d6d147d186705f27b2a2928e210ff9cf6e448b Mon Sep 17 00:00:00 2001 From: Benoit DUMONT Date: Sat, 30 Sep 2023 13:00:52 +0200 Subject: [PATCH 06/10] Fixed #2449 --- .../crud/service/impl/ParameterService.java | 3 +- .../webapp/js/transversalobject/Parameter.js | 58 +++++++++---------- 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/source/src/main/java/org/cerberus/core/crud/service/impl/ParameterService.java b/source/src/main/java/org/cerberus/core/crud/service/impl/ParameterService.java index da3051e39..ec5d1037e 100644 --- a/source/src/main/java/org/cerberus/core/crud/service/impl/ParameterService.java +++ b/source/src/main/java/org/cerberus/core/crud/service/impl/ParameterService.java @@ -340,7 +340,8 @@ public Answer save(Parameter object, HttpServletRequest request) { } else if (resp.getItem() == null) { finalAnswer = create(object); - } else if (!((object.getValue()).equals(resp.getItem().getValue()))) { + } else if (!((object.getValue()).equals(resp.getItem().getValue())) && !"XXXXXXXXXX".equals(object.getValue())) { + // Parameter value is modified only if different from hiddem value (XXXXXXXXXX) finalAnswer = update(object); } else { /** diff --git a/source/src/main/webapp/js/transversalobject/Parameter.js b/source/src/main/webapp/js/transversalobject/Parameter.js index 5bd1b93ed..07afb7bcc 100644 --- a/source/src/main/webapp/js/transversalobject/Parameter.js +++ b/source/src/main/webapp/js/transversalobject/Parameter.js @@ -154,7 +154,7 @@ function feedParameterModal(param, system, modalId) { $("[name='systemField']").html(doc.getDocLabel("page_parameter", "system_field") + " (" + system + ")"); if (data.isSecured) { - var localMessage = new Message("WARNING", "This parameter contain secure data. Original data is hidden and its modification is mandatory before saving it."); + var localMessage = new Message("WARNING", "This parameter contain secure data. Original data is hidden."); showMessage(localMessage, $('#editParameterModal')); } @@ -166,35 +166,35 @@ function feedParameterModal(param, system, modalId) { } else { formEdit.find("#cerberusValue").removeAttr("readonly"); formEdit.find("#editParameterButton").show(); - if (data.isSecured) { - $('#editParameterButton').attr('disabled', true); - if (data.isSystemManaged) { - $("#cerberusValue").change(function () { - if (($("#cerberusValue").val() !== "XXXXXXXXXX") && ($("#systemValue").val() !== "XXXXXXXXXX")) - { - $('#editParameterButton').attr('disabled', false); - } else { - $('#editParameterButton').attr('disabled', true); - } - }); - $("#systemValue").change(function () { - if (($("#cerberusValue").val() !== "XXXXXXXXXX") && ($("#systemValue").val() !== "XXXXXXXXXX")) - { - $('#editParameterButton').attr('disabled', false); - } else { - $('#editParameterButton').attr('disabled', true); - } - }); - - } else { - $("#cerberusValue").change(function () { - $('#editParameterButton').attr('disabled', false); - }); - - } - } else { +// if (data.isSecured) { $('#editParameterButton').attr('disabled', false); - } +// if (data.isSystemManaged) { +// $("#cerberusValue").change(function () { +// if (($("#cerberusValue").val() !== "XXXXXXXXXX") && ($("#systemValue").val() !== "XXXXXXXXXX")) +// { +// $('#editParameterButton').attr('disabled', false); +// } else { +// $('#editParameterButton').attr('disabled', true); +// } +// }); +// $("#systemValue").change(function () { +// if (($("#cerberusValue").val() !== "XXXXXXXXXX") && ($("#systemValue").val() !== "XXXXXXXXXX")) +// { +// $('#editParameterButton').attr('disabled', false); +// } else { +// $('#editParameterButton').attr('disabled', true); +// } +// }); + +// } else { +// $("#cerberusValue").change(function () { +// $('#editParameterButton').attr('disabled', false); +// }); +// +// } +// } else { +// $('#editParameterButton').attr('disabled', false); +// } } if (data.isSystemManaged) { $("#systemValuePanel").show(); From 7e1603df16869020a7f6f4fd6763640b5c57d779 Mon Sep 17 00:00:00 2001 From: Benoit DUMONT Date: Sat, 30 Sep 2023 14:19:13 +0200 Subject: [PATCH 07/10] Fixed a couple of duplacte SQL entries fa (Persian). #2468 --- .../cerberus/core/database/DocumentationDatabaseService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java index 79970b4b6..00ee4da54 100644 --- a/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java +++ b/source/src/main/java/org/cerberus/core/database/DocumentationDatabaseService.java @@ -3616,7 +3616,7 @@ public ArrayList getSqlDocumentation() { b.append(",('page_testcaselist','btn_editScript','','ru','Перейти к сценарию тестового случая','',NULL)"); b.append(",('page_testcaselist','btn_editScript','','fr','Aller à la page du Script du Cas de Test','',NULL)"); b.append(",('page_testcaselist','btn_runTest','','en','Run Test Case','',NULL)"); - b.append(",('page_testcaselist','btn_runTest','','en','اجرای مورد آزمون','',NULL)"); + b.append(",('page_testcaselist','btn_runTest','','fa','اجرای مورد آزمون','',NULL)"); b.append(",('page_testcaselist','btn_runTest','','ru','Запустить Тестовый случай','',NULL)"); b.append(",('page_testcaselist','btn_runTest','','fr','Exécuter le Cas de Test','',NULL)"); b.append(",('page_testcaselist','btn_view','','en','View Test Case','',NULL)"); From 951b692400cb077f40857f62bc626adc371a03af Mon Sep 17 00:00:00 2001 From: MohammedKamle <66168802+MohammedKamle@users.noreply.github.com> Date: Sat, 30 Sep 2023 19:26:37 +0530 Subject: [PATCH 08/10] Update README.md Added the correct link for demo cerberus application --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 52b87df4e..ff270c558 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Various ressources are available : [Cerberus Testing LinkedIn Page](https://www.linkedin.com/company/cerberus-testing/) -[Cerberus Testing Demo](http://demo.cerberus-testing.org) +[Cerberus Testing Demo](https://demo.cerberus-testing.com/) [Cerberus Testing Jenkins Plugin](https://github.com/jenkinsci/cerberus-testing-plugin) From 59f0db6dcfcf74901327da231732d532cc162407 Mon Sep 17 00:00:00 2001 From: Benoit DUMONT Date: Sat, 30 Sep 2023 17:57:07 +0200 Subject: [PATCH 09/10] Secured password on mongodb connection string. Added error message on mongodb connection (database format not valid or database or collection does not exist). --- .../cerberus/core/crud/entity/AppService.java | 4 +- .../core/crud/entity/RobotExecutor.java | 2 +- .../crud/service/impl/ParameterService.java | 6 +-- .../core/engine/gwt/impl/ActionService.java | 14 ++--- .../cerberus/core/enums/MessageEventEnum.java | 3 ++ .../appservice/impl/ServiceService.java | 52 ++++++++++--------- .../service/mongodb/impl/MongodbService.java | 49 +++++++++++++++++ .../countryenvironment/ReadAppService.java | 18 ++++--- .../countryenvironment/UpdateAppService.java | 4 +- .../crud/testdata/ReadTestDataLibData.java | 3 +- .../crud/testexecution/CreateRobot.java | 2 +- .../crud/testexecution/UpdateRobot.java | 2 +- .../core/util/ParameterParserUtil.java | 2 +- .../org/cerberus/core/util/StringUtil.java | 43 ++++++++++----- 14 files changed, 141 insertions(+), 63 deletions(-) diff --git a/source/src/main/java/org/cerberus/core/crud/entity/AppService.java b/source/src/main/java/org/cerberus/core/crud/entity/AppService.java index e33b6ac2f..12270e5f9 100644 --- a/source/src/main/java/org/cerberus/core/crud/entity/AppService.java +++ b/source/src/main/java/org/cerberus/core/crud/entity/AppService.java @@ -306,7 +306,7 @@ public JSONObject toJSONOnKAFKAExecution() { JSONObject jsonProps = new JSONObject(); for (AppServiceContent prop : this.getContentList()) { if (prop.getKey().contains("passw")) { - jsonProps.put(prop.getKey(), "XXXXXXXX"); + jsonProps.put(prop.getKey(), StringUtil.SECRET_STRING); } else { jsonProps.put(prop.getKey(), prop.getValue()); } @@ -317,7 +317,7 @@ public JSONObject toJSONOnKAFKAExecution() { JSONObject jsonHeaders = new JSONObject(); for (AppServiceHeader header : this.getHeaderList()) { if (header.getKey().contains("passw")) { - jsonHeaders.put(header.getKey(), "XXXXXXXX"); + jsonHeaders.put(header.getKey(), StringUtil.SECRET_STRING); } else { jsonHeaders.put(header.getKey(), header.getValue()); } diff --git a/source/src/main/java/org/cerberus/core/crud/entity/RobotExecutor.java b/source/src/main/java/org/cerberus/core/crud/entity/RobotExecutor.java index 3b53ff9ce..19723ddf8 100644 --- a/source/src/main/java/org/cerberus/core/crud/entity/RobotExecutor.java +++ b/source/src/main/java/org/cerberus/core/crud/entity/RobotExecutor.java @@ -403,7 +403,7 @@ public JSONObject toJson(boolean secured) { result.put("host", this.getHost()); if (secured) { if (this.getHostPassword() != null && !this.getHostPassword().isEmpty()) { - result.put("hostPassword", "XXXXXXXXXX"); + result.put("hostPassword", StringUtil.SECRET_STRING); } else { result.put("hostPassword", ""); } diff --git a/source/src/main/java/org/cerberus/core/crud/service/impl/ParameterService.java b/source/src/main/java/org/cerberus/core/crud/service/impl/ParameterService.java index ec5d1037e..c475764b2 100644 --- a/source/src/main/java/org/cerberus/core/crud/service/impl/ParameterService.java +++ b/source/src/main/java/org/cerberus/core/crud/service/impl/ParameterService.java @@ -340,7 +340,7 @@ public Answer save(Parameter object, HttpServletRequest request) { } else if (resp.getItem() == null) { finalAnswer = create(object); - } else if (!((object.getValue()).equals(resp.getItem().getValue())) && !"XXXXXXXXXX".equals(object.getValue())) { + } else if (!((object.getValue()).equals(resp.getItem().getValue())) && !StringUtil.SECRET_STRING.equals(object.getValue())) { // Parameter value is modified only if different from hiddem value (XXXXXXXXXX) finalAnswer = update(object); } else { @@ -424,9 +424,9 @@ public boolean hasPermissionsDelete(Parameter parameter, HttpServletRequest requ @Override public Parameter secureParameter(Parameter parameter) { if (isToSecureParameter(parameter)) { - parameter.setValue("XXXXXXXXXX"); + parameter.setValue(StringUtil.SECRET_STRING); if (StringUtil.isNotEmptyOrNullValue(parameter.getSystem1value())) { - parameter.setSystem1value("XXXXXXXXXX"); + parameter.setSystem1value(StringUtil.SECRET_STRING); } } return parameter; diff --git a/source/src/main/java/org/cerberus/core/engine/gwt/impl/ActionService.java b/source/src/main/java/org/cerberus/core/engine/gwt/impl/ActionService.java index d6a4f21d7..74b639aca 100644 --- a/source/src/main/java/org/cerberus/core/engine/gwt/impl/ActionService.java +++ b/source/src/main/java/org/cerberus/core/engine/gwt/impl/ActionService.java @@ -1705,22 +1705,22 @@ public MessageEvent doActionDragAndDrop(TestCaseExecution tCExecution, String va private MessageEvent doActionCallService(TestCaseStepActionExecution action, String value1, String value2, String value3) { MessageEvent message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE); - TestCaseExecution tCExecution = action.getTestCaseStepExecution().gettCExecution(); + TestCaseExecution execution = action.getTestCaseStepExecution().gettCExecution(); AnswerItem lastServiceCalledAnswer; - lastServiceCalledAnswer = serviceService.callService(value1, value2, value3, null, null, null, null, tCExecution, robotServerService.getFromOptions(action.getOptions(), RobotServerService.OPTIONS_TIMEOUT_SYNTAX)); + lastServiceCalledAnswer = serviceService.callService(value1, value2, value3, null, null, null, null, execution, robotServerService.getFromOptions(action.getOptions(), RobotServerService.OPTIONS_TIMEOUT_SYNTAX)); message = lastServiceCalledAnswer.getResultMessage(); if (lastServiceCalledAnswer.getItem() != null) { AppService lastServiceCalled = (AppService) lastServiceCalledAnswer.getItem(); - tCExecution.setLastServiceCalled(lastServiceCalled); - tCExecution.setOriginalLastServiceCalled(lastServiceCalled.getResponseHTTPBody()); - tCExecution.setOriginalLastServiceCalledContent(lastServiceCalled.getResponseHTTPBodyContentType()); - + execution.setLastServiceCalled(lastServiceCalled); + execution.setOriginalLastServiceCalled(lastServiceCalled.getResponseHTTPBody()); + execution.setOriginalLastServiceCalledContent(lastServiceCalled.getResponseHTTPBodyContentType()); + /** * Record the Request and Response in file system. */ - action.addFileList(recorderService.recordServiceCall(tCExecution, action, 0, null, lastServiceCalled)); + action.addFileList(recorderService.recordServiceCall(execution, action, 0, null, lastServiceCalled)); } return message; diff --git a/source/src/main/java/org/cerberus/core/enums/MessageEventEnum.java b/source/src/main/java/org/cerberus/core/enums/MessageEventEnum.java index 2ec76c071..98cb6e39f 100644 --- a/source/src/main/java/org/cerberus/core/enums/MessageEventEnum.java +++ b/source/src/main/java/org/cerberus/core/enums/MessageEventEnum.java @@ -301,6 +301,9 @@ public enum MessageEventEnum { ACTION_FAILED_CALLSERVICE_SEEKALLTOPICS(286, "FA", "Failed when getting latest offset of every topics. %DESCRIPTION%.", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION), ACTION_FAILED_CALLSERVICE(286, "FA", "Failed to call the Service '%SERVICENAME%'. Caused by : %DESCRIPTION%.", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION), ACTION_FAILED_CALLSERVICE_TIMEOUT(286, "FA", "Failed to call the Service '%SERVICEURL%' due to timeout (%TIMEOUT% ms).", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION), + ACTION_FAILED_CALLSERVICE_MONGO_COLLECTIONFORMAT(286, "FA", "Failed to call the Service '%SERVICEURL%' due to invalid format of database and collection path '%COLLECTIONPATH%' (should be : DATABASE.COLLECTION).", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION), + ACTION_FAILED_CALLSERVICE_MONGO_DATABASENOTEXIST(286, "FA", "Failed to call the Service '%SERVICEURL%' due to unknown database '%DATABASE%'.", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION), + ACTION_FAILED_CALLSERVICE_MONGO_COLLECTIONNOTEXIST(286, "FA", "Failed to call the Service '%SERVICEURL%' due to unknown collection '%COLLECTION%'.", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION), ACTION_FAILED_CALLSERVICEWITHPATH(286, "FA", "Failed to call the Service '%SERVICENAME%' on Service Path '%SERVICEPATH%'. Caused by : %DESCRIPTION%.", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION), ACTION_FAILED_CALLSERVICE_METHODMISSING(286, "FA", "Failed to call the Service because Method is not defined.", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION), ACTION_FAILED_CALLSERVICE_SERVICEPATHMISSING(286, "FA", "Failed to call the Service because Service Path is not defined.", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION), diff --git a/source/src/main/java/org/cerberus/core/service/appservice/impl/ServiceService.java b/source/src/main/java/org/cerberus/core/service/appservice/impl/ServiceService.java index 3e71bb5f6..72643e56a 100644 --- a/source/src/main/java/org/cerberus/core/service/appservice/impl/ServiceService.java +++ b/source/src/main/java/org/cerberus/core/service/appservice/impl/ServiceService.java @@ -82,7 +82,7 @@ public class ServiceService implements IServiceService { private ICountryEnvironmentDatabaseService countryEnvironmentDatabaseService; @Override - public AnswerItem callService(String service, String targetNbEvents, String targetNbSec, String database, String request, String servicePathParam, String operation, TestCaseExecution tCExecution, int timeoutMs) { + public AnswerItem callService(String service, String targetNbEvents, String targetNbSec, String database, String request, String servicePathParam, String operation, TestCaseExecution execution, int timeoutMs) { MessageEvent message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE); String decodedRequest; String decodedServicePath = null; @@ -90,9 +90,9 @@ public AnswerItem callService(String service, String targetNbEvents, String decodedAttachement; AnswerItem result = new AnswerItem<>(); AnswerItem answerDecode = new AnswerItem<>(); - String system = tCExecution.getApplicationObj().getSystem(); - String country = tCExecution.getCountry(); - String environment = tCExecution.getEnvironment(); + String system = execution.getApplicationObj().getSystem(); + String country = execution.getCountry(); + String environment = execution.getEnvironment(); LOG.debug("Starting callService : " + service + " with database : " + database); try { @@ -129,7 +129,7 @@ public AnswerItem callService(String service, String targetNbEvents, try { // Decode Service Path - answerDecode = variableService.decodeStringCompletly(servicePath, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(servicePath, execution, null, false); servicePath = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -149,6 +149,8 @@ public AnswerItem callService(String service, String targetNbEvents, return result; } + execution.appendSecret(StringUtil.getPasswordFromAnyUrl(servicePath)); + // Autocomplete of service path is disable for KAFKA and MONGODB service (this is because there could be a list of host). if (!appService.getType().equals(AppService.TYPE_KAFKA) && !appService.getType().equals(AppService.TYPE_MONGODB)) { @@ -159,7 +161,7 @@ public AnswerItem callService(String service, String targetNbEvents, if (StringUtil.isEmpty(database)) { // We reformat servicePath in order to add the context from the application execution. - servicePath = StringUtil.getURLFromString(tCExecution.getUrl(), + servicePath = StringUtil.getURLFromString(execution.getUrl(), "", appService.getServicePath(), "http://"); } else { @@ -234,7 +236,7 @@ public AnswerItem callService(String service, String targetNbEvents, try { // Decode Service Path again as the change done by automatic complete of it following application configuration could have inserted some new variables. - answerDecode = variableService.decodeStringCompletly(decodedServicePath, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedServicePath, execution, null, false); decodedServicePath = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -246,7 +248,7 @@ public AnswerItem callService(String service, String targetNbEvents, } // Decode Request - answerDecode = variableService.decodeStringCompletly(decodedRequest, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedRequest, execution, null, false); decodedRequest = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -260,7 +262,7 @@ public AnswerItem callService(String service, String targetNbEvents, // Decode Header List List objectHeaderList = new ArrayList<>(); for (AppServiceHeader object : appService.getHeaderList()) { - answerDecode = variableService.decodeStringCompletly(object.getKey(), tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(object.getKey(), execution, null, false); object.setKey(answerDecode.getItem()); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -272,7 +274,7 @@ public AnswerItem callService(String service, String targetNbEvents, return result; } - answerDecode = variableService.decodeStringCompletly(object.getValue(), tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(object.getValue(), execution, null, false); object.setValue(answerDecode.getItem()); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -291,7 +293,7 @@ public AnswerItem callService(String service, String targetNbEvents, // Decode ContentDetail List List objectContentList = new ArrayList<>(); for (AppServiceContent object : appService.getContentList()) { - answerDecode = variableService.decodeStringCompletly(object.getKey(), tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(object.getKey(), execution, null, false); object.setKey(answerDecode.getItem()); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -303,7 +305,7 @@ public AnswerItem callService(String service, String targetNbEvents, return result; } - answerDecode = variableService.decodeStringCompletly(object.getValue(), tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(object.getValue(), execution, null, false); object.setValue(answerDecode.getItem()); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -331,7 +333,7 @@ public AnswerItem callService(String service, String targetNbEvents, // Get from parameter whether we define a token or not (in order to trace the cerberus calls in http header) String token = null; if (parameterService.getParameterBooleanByKey("cerberus_callservice_enablehttpheadertoken", system, true)) { - token = String.valueOf(tCExecution.getId()); + token = String.valueOf(execution.getId()); } // Get from parameter the call timeout to be used. if (timeoutMs == 0) { @@ -350,7 +352,7 @@ public AnswerItem callService(String service, String targetNbEvents, decodedAttachement = appService.getAttachementURL(); try { - answerDecode = variableService.decodeStringCompletly(decodedOperation, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedOperation, execution, null, false); decodedOperation = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -362,7 +364,7 @@ public AnswerItem callService(String service, String targetNbEvents, return result; } - answerDecode = variableService.decodeStringCompletly(decodedAttachement, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedAttachement, execution, null, false); decodedAttachement = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -411,7 +413,7 @@ public AnswerItem callService(String service, String targetNbEvents, * Call REST and store it into the execution. */ result = restService.callREST(decodedServicePath, decodedRequest, appService.getMethod(), - appService.getHeaderList(), appService.getContentList(), token, timeoutMs, system, appService.isFollowRedir(), tCExecution); + appService.getHeaderList(), appService.getContentList(), token, timeoutMs, system, appService.isFollowRedir(), execution); message = result.getResultMessage(); break; @@ -438,7 +440,7 @@ public AnswerItem callService(String service, String targetNbEvents, * Call MONGODB and store it into the execution. */ result = mongodbService.callMONGODB(decodedServicePath, decodedRequest, appService.getMethod(), - appService.getOperation(), timeoutMs, system, tCExecution); + appService.getOperation(), timeoutMs, system, execution); message = result.getResultMessage(); break; @@ -456,7 +458,7 @@ public AnswerItem callService(String service, String targetNbEvents, case AppService.TYPE_KAFKA: String decodedKey = appService.getKafkaKey(); - answerDecode = variableService.decodeStringCompletly(decodedKey, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedKey, execution, null, false); decodedKey = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -469,7 +471,7 @@ public AnswerItem callService(String service, String targetNbEvents, } String decodedTopic = appService.getKafkaTopic(); - answerDecode = variableService.decodeStringCompletly(decodedTopic, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedTopic, execution, null, false); decodedTopic = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -483,7 +485,7 @@ public AnswerItem callService(String service, String targetNbEvents, String decodedSchemaRegistryURL = appService.getSchemaRegistryURL(); if (appService.isAvroEnable()) { - answerDecode = variableService.decodeStringCompletly(decodedSchemaRegistryURL, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedSchemaRegistryURL, execution, null, false); decodedSchemaRegistryURL = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -516,7 +518,7 @@ public AnswerItem callService(String service, String targetNbEvents, try { - answerDecode = variableService.decodeStringCompletly(decodedFilterPath, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedFilterPath, execution, null, false); decodedFilterPath = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -528,7 +530,7 @@ public AnswerItem callService(String service, String targetNbEvents, return result; } - answerDecode = variableService.decodeStringCompletly(decodedFilterValue, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedFilterValue, execution, null, false); decodedFilterValue = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -540,7 +542,7 @@ public AnswerItem callService(String service, String targetNbEvents, return result; } - answerDecode = variableService.decodeStringCompletly(decodedFilterHeaderPath, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedFilterHeaderPath, execution, null, false); decodedFilterHeaderPath = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -552,7 +554,7 @@ public AnswerItem callService(String service, String targetNbEvents, return result; } - answerDecode = variableService.decodeStringCompletly(decodedFilterHeaderValue, tCExecution, null, false); + answerDecode = variableService.decodeStringCompletly(decodedFilterHeaderValue, execution, null, false); decodedFilterHeaderValue = answerDecode.getItem(); if (!(answerDecode.isCodeStringEquals("OK"))) { // If anything wrong with the decode --> we stop here with decode message in the action result. @@ -598,7 +600,7 @@ public AnswerItem callService(String service, String targetNbEvents, appService.setKafkaFilterHeaderValue(decodedFilterHeaderValue); String kafkaKey = kafkaService.getKafkaConsumerKey(decodedTopic, decodedServicePath); - AnswerItem resultSearch = kafkaService.searchEvent(tCExecution.getKafkaLatestOffset().get(kafkaKey), decodedTopic, decodedServicePath, + AnswerItem resultSearch = kafkaService.searchEvent(execution.getKafkaLatestOffset().get(kafkaKey), decodedTopic, decodedServicePath, appService.getHeaderList(), appService.getContentList(), decodedFilterPath, decodedFilterValue, decodedFilterHeaderPath, decodedFilterHeaderValue, appService.isAvroEnable(), decodedSchemaRegistryURL, appService.isAvroEnableKey(), appService.isAvroEnableValue(), targetNbEventsInt, targetNbSecInt); diff --git a/source/src/main/java/org/cerberus/core/service/mongodb/impl/MongodbService.java b/source/src/main/java/org/cerberus/core/service/mongodb/impl/MongodbService.java index a74509459..3379dd374 100644 --- a/source/src/main/java/org/cerberus/core/service/mongodb/impl/MongodbService.java +++ b/source/src/main/java/org/cerberus/core/service/mongodb/impl/MongodbService.java @@ -29,6 +29,8 @@ import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; +import com.mongodb.client.MongoIterable; +import java.util.Iterator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.cerberus.core.crud.entity.AppService; @@ -99,10 +101,57 @@ public AnswerItem callMONGODB(String servicePath, String requestStri .build())) { LOG.debug("Connection : " + operation); + + // Check connexion format. + if (!operation.contains(".") || operation.startsWith(".") || operation.endsWith(".")) { + result.setItem(serviceMONGODB); + message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE_MONGO_COLLECTIONFORMAT); + message.resolveDescription("SERVICEURL", servicePath); + message.resolveDescription("COLLECTIONPATH", operation); + result.setResultMessage(message); + return result; + } + String MDBdtb = operation.split("\\.")[0]; String MDBColl = operation.split("\\.")[1]; LOG.debug("Connection : " + MDBdtb + " / " + MDBColl); + + // Does the database exist. + MongoIterable listDTB = mongoClient.listDatabaseNames(); + StringBuilder databaseExist = new StringBuilder(); + listDTB.forEach(databaseName -> { + if (databaseName.equals(MDBdtb)) { + databaseExist.append(databaseName); + } + }); + if (databaseExist.toString().isEmpty()) { + result.setItem(serviceMONGODB); + message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE_MONGO_DATABASENOTEXIST); + message.resolveDescription("SERVICEURL", servicePath); + message.resolveDescription("DATABASE", MDBdtb); + result.setResultMessage(message); + return result; + } + MongoDatabase database = mongoClient.getDatabase(MDBdtb); + + // Does the collection exist. + MongoIterable listCOL = database.listCollectionNames(); + StringBuilder collectionExist = new StringBuilder(); + listCOL.forEach(collectionName -> { + if (collectionName.equals(MDBColl)) { + collectionExist.append(collectionName); + } + }); + if (collectionExist.toString().isEmpty()) { + result.setItem(serviceMONGODB); + message = new MessageEvent(MessageEventEnum.ACTION_FAILED_CALLSERVICE_MONGO_COLLECTIONNOTEXIST); + message.resolveDescription("SERVICEURL", servicePath); + message.resolveDescription("COLLECTION", MDBColl); + result.setResultMessage(message); + return result; + } + MongoCollection collection = database.getCollection(MDBColl); // Bson projectionFields = Projections.fields( diff --git a/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/ReadAppService.java b/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/ReadAppService.java index 250344560..5a786eef3 100644 --- a/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/ReadAppService.java +++ b/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/ReadAppService.java @@ -55,6 +55,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.cerberus.core.util.StringUtil; /** * @author bcivel @@ -69,10 +70,10 @@ public class ReadAppService extends HttpServlet { * Processes requests for both HTTP GET and POST * methods. * - * @param request servlet request + * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs + * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { @@ -242,7 +243,7 @@ private AnswerItem findAppServiceByLikeName(String key, ApplicationC * using one service. * * @param appContext - context object used to get the required beans - * @param service - identifier of the service + * @param service - identifier of the service * @return an answer item containing the information about the test cases * that use the entry * @throws JSONException @@ -328,19 +329,20 @@ private JSONObject convertAppServiceToJSONObject(AppService appservice) throws J JSONObject result = new JSONObject(); if (appservice != null) { result = new JSONObject(gson.toJson(appservice)); + String pass = StringUtil.getPasswordFromAnyUrl(result.getString("servicePath")); + result.put("servicePath", result.getString("servicePath").replace(pass, StringUtil.SECRET_STRING)); } return result; } // - /** * Handles the HTTP GET method. * - * @param request servlet request + * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs + * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) @@ -351,10 +353,10 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) /** * Handles the HTTP POST method. * - * @param request servlet request + * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs + * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) diff --git a/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/UpdateAppService.java b/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/UpdateAppService.java index f3836d8e8..254e49c61 100644 --- a/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/UpdateAppService.java +++ b/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/UpdateAppService.java @@ -208,7 +208,9 @@ final void processRequest(final HttpServletRequest request, final HttpServletRes appService.setType(type); appService.setApplication(application); appService.setMethod(method); - appService.setServicePath(servicePath); + if (StringUtil.isNotEmptyOrNullValue(servicePath) && !servicePath.contains(StringUtil.SECRET_STRING)) { + appService.setServicePath(servicePath); + } appService.setUsrModif(request.getRemoteUser()); appService.setKafkaKey(kafkaKey); appService.setKafkaTopic(kafkaTopic); diff --git a/source/src/main/java/org/cerberus/core/servlet/crud/testdata/ReadTestDataLibData.java b/source/src/main/java/org/cerberus/core/servlet/crud/testdata/ReadTestDataLibData.java index 7ff99d31f..ca6c2f511 100644 --- a/source/src/main/java/org/cerberus/core/servlet/crud/testdata/ReadTestDataLibData.java +++ b/source/src/main/java/org/cerberus/core/servlet/crud/testdata/ReadTestDataLibData.java @@ -35,6 +35,7 @@ import org.cerberus.core.crud.service.ITestDataLibDataService; import org.cerberus.core.crud.service.ITestDataLibService; import org.cerberus.core.enums.MessageEventEnum; +import org.cerberus.core.util.StringUtil; import org.cerberus.core.util.answer.AnswerItem; import org.cerberus.core.util.answer.AnswerList; import org.cerberus.core.util.answer.AnswerUtil; @@ -196,7 +197,7 @@ private AnswerItem readById(ApplicationContext appContext, int testDatalib, Http for (TestDataLibData subdata : answer.getDataList()) { if (!hasPermissionToSeePrivateValue && "Y".equals(subdata.getEncrypt())){ - subdata.setValue("XXXXXXXX"); + subdata.setValue(StringUtil.SECRET_STRING); } jsonArray.put(convertTestDataLibDataToJSONObject(subdata)); } diff --git a/source/src/main/java/org/cerberus/core/servlet/crud/testexecution/CreateRobot.java b/source/src/main/java/org/cerberus/core/servlet/crud/testexecution/CreateRobot.java index a881142d0..695ed185c 100644 --- a/source/src/main/java/org/cerberus/core/servlet/crud/testexecution/CreateRobot.java +++ b/source/src/main/java/org/cerberus/core/servlet/crud/testexecution/CreateRobot.java @@ -262,7 +262,7 @@ private List getExecutorsFromParameter(String robot, HttpServletR String description = reJson.getString("description"); String host_password = reJson.getString("hostPassword"); - if (host_password.equals("XXXXXXXXXX")) { + if (host_password.equals(StringUtil.SECRET_STRING)) { host_password = ""; for (RobotExecutor robotExecutor : reList1) { if (robotExecutor.getID() == id) { diff --git a/source/src/main/java/org/cerberus/core/servlet/crud/testexecution/UpdateRobot.java b/source/src/main/java/org/cerberus/core/servlet/crud/testexecution/UpdateRobot.java index 9e63c62dc..51291ea91 100644 --- a/source/src/main/java/org/cerberus/core/servlet/crud/testexecution/UpdateRobot.java +++ b/source/src/main/java/org/cerberus/core/servlet/crud/testexecution/UpdateRobot.java @@ -293,7 +293,7 @@ private List getExecutorsFromParameter(String robot, HttpServletR String description = reJson.getString("description"); String host_password = reJson.getString("hostPassword"); - if (host_password.equals("XXXXXXXXXX")) { + if (host_password.equals(StringUtil.SECRET_STRING)) { host_password = ""; for (RobotExecutor robotExecutor : reList1) { if (robotExecutor.getID() == id) { diff --git a/source/src/main/java/org/cerberus/core/util/ParameterParserUtil.java b/source/src/main/java/org/cerberus/core/util/ParameterParserUtil.java index 9efc926cd..c166d9139 100644 --- a/source/src/main/java/org/cerberus/core/util/ParameterParserUtil.java +++ b/source/src/main/java/org/cerberus/core/util/ParameterParserUtil.java @@ -472,7 +472,7 @@ public static String securePassword(String value, String property) { return value; } if (property.contains("PASS")) { - return "XXXXXXXXXX"; + return StringUtil.SECRET_STRING; } else { return value; } diff --git a/source/src/main/java/org/cerberus/core/util/StringUtil.java b/source/src/main/java/org/cerberus/core/util/StringUtil.java index 453cf9c0b..4ec5e68e4 100644 --- a/source/src/main/java/org/cerberus/core/util/StringUtil.java +++ b/source/src/main/java/org/cerberus/core/util/StringUtil.java @@ -60,7 +60,7 @@ public final class StringUtil { public static final String FTPS_PREFIX = "ftps://"; private static final Logger LOG = LogManager.getLogger(StringUtil.class); private static final int MAX_STRING_SIZE_IN_MESSAGE = 300; - private static final String SECRET_STRING = "XXXXXX"; + public static final String SECRET_STRING = "XXXXXXXXXX"; // To avoid instantiation of utility class private StringUtil() { @@ -140,8 +140,8 @@ public static String prepareToNumeric(String str) { /** * Check for "null" string or empty string content * - * @return null safe method that returns - * true if the parameter is a "null" string or an empty string + * @return null safe method that returns true if the parameter is a "null" + * string or an empty string */ public static boolean isEmptyOrNullValue(String str) { return (isEmpty(str) || NULL.equalsIgnoreCase(str.trim())); @@ -150,8 +150,8 @@ public static boolean isEmptyOrNullValue(String str) { /** * Check for not "null" string or not empty string content * - * @return null safe method that returns - * true if the parameter is NOT a "null" string or empty string. + * @return null safe method that returns true if the parameter is NOT a + * "null" string or empty string. */ public static boolean isNotEmptyOrNullValue(String str) { return isNotEmpty(str) && !NULL.equalsIgnoreCase(str.trim()); @@ -160,7 +160,8 @@ public static boolean isNotEmptyOrNullValue(String str) { /** * Check for null or empty string content * - * @return Null safe method that returns true if the parameter is null or an empty string. + * @return Null safe method that returns true if the parameter is null or an + * empty string. */ public static boolean isEmpty(String str) { return (str == null) || (str.trim().isEmpty()); @@ -169,7 +170,8 @@ public static boolean isEmpty(String str) { /** * Check for not null or empty string content * - * @return Null safe method that returns true if the parameter is NOT null or an empty string. + * @return Null safe method that returns true if the parameter is NOT null + * or an empty string. */ public static boolean isNotEmpty(String str) { return (str != null) && !str.trim().isEmpty(); @@ -178,7 +180,7 @@ public static boolean isNotEmpty(String str) { /** * Generate a random string using current time and charset * - * @param length of the random string to generate + * @param length of the random string to generate * @param charset use to generate random value * @return random string, empty if charset is null or length <= 0 */ @@ -202,7 +204,7 @@ public static String getRandomString(int length, String charset) { * Return left part of the String. * * @param string1 String to treat. - * @param length nb of characters to keep. + * @param length nb of characters to keep. * @return the {length} first character of the string1. */ public static String getLeftString(String string1, int length) { @@ -219,7 +221,7 @@ public static String getLeftString(String string1, int length) { * Return left part of the string adding ... at the end. * * @param string1 String to treat. - * @param length nb of characters to keep. + * @param length nb of characters to keep. * @return the {length} first character of the string1. */ public static String getLeftStringPretty(String string1, int length) { @@ -346,7 +348,8 @@ public static boolean isURL(String url) { || url.startsWith(HTTPS_PREFIX) // File scheme can have no authority component, then only one slash is necessary || url.startsWith(FILE_PREFIX) - || url.startsWith(FTP_PREFIX); + || url.startsWith(FTP_PREFIX) + || url.startsWith(FTPS_PREFIX); } /** @@ -360,6 +363,10 @@ public static boolean isURL(String url) { * in stead of www.laredoute.frfrtoto.jsp
* Protocol will be added in case host did not already have the protocol. * + * @param host + * @param contextRoot + * @param uri + * @param protocol * @return URL correctly formatted. */ public static String getURLFromString(String host, String contextRoot, String uri, String protocol) { @@ -518,6 +525,17 @@ public static String getPasswordFromUrl(String appURL) { return null; } + public static String getPasswordFromAnyUrl(String appURL) { + if (appURL.contains("://")) { + appURL = appURL.split("://")[1]; + if (appURL.contains("@")) { + appURL = appURL.split("@")[0]; + return appURL.substring(appURL.indexOf(':') + 1); + } + } + return ""; + } + /** * Convert a string structure in a list * @@ -536,7 +554,8 @@ public static List convertStringToStringArray(String array) throws JsonP * @param array Structure of the list in string format * @return String mapped to a list of doubles * @throws JsonProcessingException When the array structure is not correct - * @throws NumberFormatException When an element of the list is a text and not a number + * @throws NumberFormatException When an element of the list is a text and + * not a number */ public static List convertStringToDoubleArray(String array) throws NumberFormatException, JsonProcessingException { List strings = convertStringToStringArray(array); From 5cfac7fd94a2bb51e882394cea4e23e22e9735a9 Mon Sep 17 00:00:00 2001 From: Benoit DUMONT Date: Mon, 2 Oct 2023 20:38:42 +0200 Subject: [PATCH 10/10] Fixed issue when securing pass from app service url. --- .../core/servlet/crud/countryenvironment/ReadAppService.java | 4 +++- source/src/main/java/org/cerberus/core/util/StringUtil.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/ReadAppService.java b/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/ReadAppService.java index 5a786eef3..d8816fd82 100644 --- a/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/ReadAppService.java +++ b/source/src/main/java/org/cerberus/core/servlet/crud/countryenvironment/ReadAppService.java @@ -330,7 +330,9 @@ private JSONObject convertAppServiceToJSONObject(AppService appservice) throws J if (appservice != null) { result = new JSONObject(gson.toJson(appservice)); String pass = StringUtil.getPasswordFromAnyUrl(result.getString("servicePath")); - result.put("servicePath", result.getString("servicePath").replace(pass, StringUtil.SECRET_STRING)); + if (pass != null) { + result.put("servicePath", result.getString("servicePath").replace(pass, StringUtil.SECRET_STRING)); + } } return result; } diff --git a/source/src/main/java/org/cerberus/core/util/StringUtil.java b/source/src/main/java/org/cerberus/core/util/StringUtil.java index 4ec5e68e4..b191241c3 100644 --- a/source/src/main/java/org/cerberus/core/util/StringUtil.java +++ b/source/src/main/java/org/cerberus/core/util/StringUtil.java @@ -533,7 +533,7 @@ public static String getPasswordFromAnyUrl(String appURL) { return appURL.substring(appURL.indexOf(':') + 1); } } - return ""; + return null; } /**