codemie-test-harness 0.1.129__py3-none-any.whl → 0.1.131__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of codemie-test-harness might be problematic. Click here for more details.
- codemie_test_harness/.env +5 -0
- codemie_test_harness/cli/runner.py +25 -16
- codemie_test_harness/pytest.ini +6 -0
- {tests → codemie_test_harness/tests}/__init__.py +1 -1
- {tests → codemie_test_harness/tests}/assistant/datasource/test_code_datasource.py +2 -2
- {tests → codemie_test_harness/tests}/assistant/datasource/test_confluence_datasource.py +2 -2
- {tests → codemie_test_harness/tests}/assistant/datasource/test_file_indexing.py +6 -6
- {tests → codemie_test_harness/tests}/assistant/datasource/test_google_datasource.py +2 -2
- {tests → codemie_test_harness/tests}/assistant/datasource/test_jira_datasource.py +5 -2
- {tests → codemie_test_harness/tests}/assistant/default_integrations/test_default_integrations_for_tool.py +9 -6
- {tests → codemie_test_harness/tests}/assistant/default_integrations/test_default_integrations_for_tool_kit.py +8 -6
- {tests → codemie_test_harness/tests}/assistant/default_integrations/test_default_integrations_for_tool_with_datasource.py +6 -6
- {tests → codemie_test_harness/tests}/assistant/test_assistants.py +6 -6
- {tests → codemie_test_harness/tests}/assistant/tools/ado/test_assistant_for_ado_test_plan_tools.py +6 -6
- {tests → codemie_test_harness/tests}/assistant/tools/ado/test_assistant_for_ado_wiki_tools.py +4 -4
- {tests → codemie_test_harness/tests}/assistant/tools/ado/test_assistant_for_ado_work_item_tools.py +6 -6
- {tests → codemie_test_harness/tests}/assistant/tools/cloud/test_cloud_tools.py +2 -2
- {tests → codemie_test_harness/tests}/assistant/tools/codebase/test_codebase_tools.py +2 -2
- {tests → codemie_test_harness/tests}/assistant/tools/datamanagement/test_assistant_with_data_management_tools.py +3 -3
- {tests → codemie_test_harness/tests}/assistant/tools/filemanagement/test_assistant_with_file_management_tools.py +3 -3
- {tests → codemie_test_harness/tests}/assistant/tools/git/test_assistant_with_git_tools.py +2 -2
- {tests → codemie_test_harness/tests}/assistant/tools/mcp/test_cli_mcp_server.py +4 -4
- {tests → codemie_test_harness/tests}/assistant/tools/mcp/test_mcp_servers.py +1 -1
- {tests → codemie_test_harness/tests}/assistant/tools/notification/test_assistant_notification_tools.py +3 -3
- {tests → codemie_test_harness/tests}/assistant/tools/openapi/test_assistant_with_open_api_tools.py +2 -2
- {tests → codemie_test_harness/tests}/assistant/tools/plugin/test_assistant_with_development_plugin.py +4 -4
- {tests → codemie_test_harness/tests}/assistant/tools/plugin/test_assistant_with_plugin_and_mcp_servers.py +3 -3
- {tests → codemie_test_harness/tests}/assistant/tools/project_management/test_assistant_pm_tools.py +8 -6
- {tests → codemie_test_harness/tests}/assistant/tools/research/test_assistant_research_tools.py +3 -3
- {tests → codemie_test_harness/tests}/assistant/tools/servicenow/test_servicenow_tools.py +5 -2
- {tests → codemie_test_harness/tests}/assistant/tools/vcs/test_assistant_with_vcs_tools.py +3 -3
- {tests → codemie_test_harness/tests}/conftest.py +4 -0
- {tests → codemie_test_harness/tests}/e2e/test_e2e.py +2 -2
- {tests → codemie_test_harness/tests}/integrations/project/test_default_integrations.py +16 -9
- {tests → codemie_test_harness/tests}/integrations/project/test_project_integrations.py +6 -3
- {tests → codemie_test_harness/tests}/integrations/user/test_default_integrations.py +16 -9
- {tests → codemie_test_harness/tests}/integrations/user/test_user_integrations.py +3 -3
- {tests → codemie_test_harness/tests}/llm/assistants/test_llm.py +4 -4
- codemie_test_harness/tests/providers/test_providers_endpoints.py +239 -0
- {tests → codemie_test_harness/tests}/search/test_search_assistant.py +3 -3
- {tests → codemie_test_harness/tests}/search/test_search_datasource.py +3 -3
- {tests → codemie_test_harness/tests}/search/test_search_integration.py +2 -2
- {tests → codemie_test_harness/tests}/search/test_search_workflow.py +3 -3
- {tests → codemie_test_harness/tests}/service/test_assistant_service.py +2 -2
- {tests → codemie_test_harness/tests}/service/test_datasource_service.py +2 -2
- {tests → codemie_test_harness/tests}/service/test_integration_service.py +2 -2
- {tests → codemie_test_harness/tests}/service/test_task_service.py +2 -2
- {tests → codemie_test_harness/tests}/service/test_workflow_execution_service.py +2 -2
- {tests → codemie_test_harness/tests}/service/test_workflow_service.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/ado_test_plan_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/ado_wiki_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/ado_work_item_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/cloud_tools_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/codebase_tools_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/data_management_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/direct_tools/ado_test_plan_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/direct_tools/ado_wiki_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/direct_tools/ado_work_item_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/direct_tools/cloud_tools_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/direct_tools/codebase_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/direct_tools/data_management_tools_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/direct_tools/direct_tools_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/direct_tools/file_management_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/direct_tools/notification_tools_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/direct_tools/open_api_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/direct_tools/project_management_tools_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/direct_tools/research_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/direct_tools/vcs_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/file_management_tools_test_data.py +1 -1
- codemie_test_harness/tests/test_data/files/provider_payload.json +382 -0
- {tests → codemie_test_harness/tests}/test_data/git_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/integrations_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/llm_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/mcp_server_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/notification_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/open_api_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/plugin_tools_test_data.py +2 -2
- {tests → codemie_test_harness/tests}/test_data/project_management_test_data.py +3 -3
- {tests → codemie_test_harness/tests}/test_data/research_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/test_data/vcs_tools_test_data.py +1 -1
- {tests → codemie_test_harness/tests}/ui/conftest.py +1 -1
- {tests → codemie_test_harness/tests}/ui/pageobject/assistants/assistants_page.py +1 -1
- {tests → codemie_test_harness/tests}/ui/pageobject/base_page.py +2 -2
- {tests → codemie_test_harness/tests}/ui/pageobject/login_page.py +4 -2
- {tests → codemie_test_harness/tests}/ui/pageobject/workflows/base_workflow_form_page.py +2 -2
- {tests → codemie_test_harness/tests}/ui/pageobject/workflows/create_workflow_page.py +4 -2
- {tests → codemie_test_harness/tests}/ui/pageobject/workflows/edit_workflow_page.py +3 -1
- {tests → codemie_test_harness/tests}/ui/pageobject/workflows/workflow_details_page.py +5 -3
- {tests → codemie_test_harness/tests}/ui/pageobject/workflows/workflow_executions_page.py +3 -3
- {tests → codemie_test_harness/tests}/ui/pageobject/workflows/workflow_template_details.py +1 -1
- {tests → codemie_test_harness/tests}/ui/pageobject/workflows/workflow_templates_page.py +4 -2
- {tests → codemie_test_harness/tests}/ui/pageobject/workflows/workflows_page.py +8 -3
- {tests → codemie_test_harness/tests}/ui/test_create_workflow.py +7 -3
- {tests → codemie_test_harness/tests}/ui/test_edit_workflow.py +8 -4
- {tests → codemie_test_harness/tests}/ui/test_workflow_details.py +4 -4
- {tests → codemie_test_harness/tests}/ui/test_workflow_executions_page.py +3 -3
- {tests → codemie_test_harness/tests}/ui/test_workflow_templates.py +12 -6
- {tests → codemie_test_harness/tests}/ui/test_workflows.py +3 -1
- {tests → codemie_test_harness/tests}/utils/assistant_utils.py +6 -2
- {tests → codemie_test_harness/tests}/utils/aws_parameters_store.py +6 -4
- {tests → codemie_test_harness/tests}/utils/base_utils.py +2 -2
- {tests → codemie_test_harness/tests}/utils/constants.py +1 -1
- {tests → codemie_test_harness/tests}/utils/datasource_utils.py +6 -2
- codemie_test_harness/tests/utils/http_utils.py +141 -0
- {tests → codemie_test_harness/tests}/utils/integration_utils.py +6 -2
- {tests → codemie_test_harness/tests}/utils/notification_utils.py +1 -1
- codemie_test_harness/tests/utils/provider_utils.py +178 -0
- {tests → codemie_test_harness/tests}/utils/search_utils.py +1 -1
- {tests → codemie_test_harness/tests}/utils/similarity_check.py +5 -1
- {tests → codemie_test_harness/tests}/utils/workflow_utils.py +4 -4
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_test_plan_tools.py +5 -5
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_wiki_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_work_item_tools.py +5 -5
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/cloud/test_workflow_with_assistant_cloud_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/codebase/test_worfklow_with_assistant_codebase_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/data_management/test_workflow_with_assistant_with_data_management_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool.py +9 -6
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +8 -6
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py +6 -6
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/file_management/test_workflow_with_assistant_with_file_management_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/git/test_workflow_with_assistant_git_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/mcp/test_workflow_with_assistant_with_mcp_server.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/notification/test_workflow_with_assistant_notification_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/open_api/test_workflow_with_assistant_with_open_api_tools.py +4 -2
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/plugin/test_workflow_with_assistant_with_development_plugin.py +4 -4
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/plugin/test_workflow_with_assistant_with_plugin_and_mcp_servers.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/project_management/test_workflow_with_assistant_pm_tools.py +5 -3
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/research/test_workflow_with_assistant_research_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/servicenow/test_workflow_with_servicenow_tools.py +5 -2
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/vcs/workflow_with_assistant_vcs_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/config_validation/test_config_validation.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool.py +7 -7
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool_kit.py +9 -7
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_ado_test_plan_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_ado_wiki_tools.py +4 -2
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_ado_work_item_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_cloud_tools.py +5 -3
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_codebase_tools.py +4 -4
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_data_management_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_file_management_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_notification_tools.py +4 -4
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_open_api_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_plugin_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_project_management_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_research_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_servicenow_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/direct_tools_calling/test_workflow_with_vcs_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/test_workflows.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_test_plan_tools.py +5 -5
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_wiki_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_work_item_tools.py +5 -5
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/cloud/test_workflow_with_cloud_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/codebase/test_workflow_with_codebase_tools.py +4 -4
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/data_management/test_workflow_with_data_management_tools.py +4 -4
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool.py +10 -7
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +9 -7
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py +7 -7
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/file_management/test_workflow_with_file_management_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/git/test_workflow_with_git_tools.py +2 -2
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/mcp/test_workflow_with_mcp_server.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/notification/test_workflow_with_notification_tools.py +3 -3
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/open_api/test_workflow_with_open_api_tools.py +4 -2
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/plugin/test_workflow_with_development_plugin.py +4 -4
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/plugin/test_workflow_with_plugin_and_mcp_servers.py +4 -4
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/project_management/test_workflow_with_project_management_tools.py +5 -3
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/research/test_workflow_with_research_tools.py +6 -3
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py +6 -3
- codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py +3 -3
- {codemie_test_harness-0.1.129.dist-info → codemie_test_harness-0.1.131.dist-info}/METADATA +2 -2
- codemie_test_harness-0.1.131.dist-info/RECORD +326 -0
- codemie_test_harness-0.1.129.dist-info/RECORD +0 -320
- tests/utils/http_utils.py +0 -53
- {tests → codemie_test_harness/tests}/assistant/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/datasource/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/default_integrations/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/ado/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/cloud/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/codebase/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/datamanagement/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/filemanagement/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/git/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/mcp/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/notification/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/openapi/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/plugin/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/project_management/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/research/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/servicenow/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/assistant/tools/vcs/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/e2e/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/enums/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/enums/integrations.py +0 -0
- {tests → codemie_test_harness/tests}/enums/model_types.py +0 -0
- {tests → codemie_test_harness/tests}/enums/tools.py +0 -0
- {tests → codemie_test_harness/tests}/integrations/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/integrations/project/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/integrations/user/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/llm/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/llm/assistants/__init__.py +0 -0
- {tests/service → codemie_test_harness/tests/providers}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/search/__init__.py +0 -0
- {tests/test_data → codemie_test_harness/tests/service}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/service/test_llm_service.py +0 -0
- {tests → codemie_test_harness/tests}/service/test_user_service.py +0 -0
- {tests/test_data/direct_tools → codemie_test_harness/tests/test_data}/__init__.py +0 -0
- {tests/ui → codemie_test_harness/tests/test_data/direct_tools}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/test_data/direct_tools/servicenow_tools_test_data.py +0 -0
- {tests → codemie_test_harness/tests}/test_data/file_test_data.py +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/large-files/large_file.txt +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.csv +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.docx +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.gif +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.ini +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.jpeg +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.jpg +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.json +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.pdf +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.png +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.pptx +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.txt +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.vtt +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.xlsx +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.xml +0 -0
- {tests → codemie_test_harness/tests}/test_data/files/test.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/google_datasource_test_data.py +0 -0
- {tests → codemie_test_harness/tests}/test_data/index_test_data.py +0 -0
- {tests → codemie_test_harness/tests}/test_data/openapi.json +0 -0
- {tests → codemie_test_harness/tests}/test_data/output_schema_test_data.py +0 -0
- {tests → codemie_test_harness/tests}/test_data/pm_tools_test_data.py +0 -0
- {tests → codemie_test_harness/tests}/test_data/servicenow_tools_test_data.py +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/invalid_assistant_id.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/invalid_assistant_in_state.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/invalid_data_source.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/invalid_state.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/invalid_tool.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/invalid_yaml.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/invalid_yaml_format.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_assistant_id.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_assistant_tools_name.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_retry_backoff_factor.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_retry_initial_interval.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_retry_max_attempts.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_retry_max_interval.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_id.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_next.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_next_condition_expression.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_next_condition_otherwise.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_next_condition_then.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_next_switch_cases.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_next_switch_cases_condition.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_next_switch_cases_state_id.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_next_switch_default.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_retry_backoff_factor.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_retry_initial_interval.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_retry_max_attempts.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_states_retry_max_interval.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_system_prompt.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_tools_id.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow/invalid_config/missing_required_tools_name.yaml +0 -0
- {tests → codemie_test_harness/tests}/test_data/workflow_validation_messages.py +0 -0
- {tests/ui/pageobject → codemie_test_harness/tests/ui}/__init__.py +0 -0
- {tests/ui/pageobject/assistants → codemie_test_harness/tests/ui/pageobject}/__init__.py +0 -0
- {tests/workflow → codemie_test_harness/tests/ui/pageobject/assistants}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/components/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/components/execution_history_row.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/components/header.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/components/pop_up.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/components/workflow_card.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/components/workflow_execution_history_item.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/components/workflow_execution_state.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/components/workflow_sidebar.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/components/workflow_state_card.py +0 -0
- {tests → codemie_test_harness/tests}/ui/pageobject/workflows/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/utils/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/utils/client_factory.py +0 -0
- {tests → codemie_test_harness/tests}/utils/file_utils.py +0 -0
- {tests → codemie_test_harness/tests}/utils/gitbud_utils.py +0 -0
- {tests → codemie_test_harness/tests}/utils/json_utils.py +0 -0
- {tests → codemie_test_harness/tests}/utils/logger_util.py +0 -0
- {tests → codemie_test_harness/tests}/utils/pytest_utils.py +0 -0
- {tests → codemie_test_harness/tests}/utils/yaml_utils.py +0 -0
- {tests/workflow/assistant_tools → codemie_test_harness/tests/workflow}/__init__.py +0 -0
- {tests/workflow/assistant_tools/ado → codemie_test_harness/tests/workflow/assistant_tools}/__init__.py +0 -0
- {tests/workflow/assistant_tools/cloud → codemie_test_harness/tests/workflow/assistant_tools/ado}/__init__.py +0 -0
- {tests/workflow/assistant_tools/codebase → codemie_test_harness/tests/workflow/assistant_tools/cloud}/__init__.py +0 -0
- {tests/workflow/assistant_tools/data_management → codemie_test_harness/tests/workflow/assistant_tools/codebase}/__init__.py +0 -0
- {tests/workflow/assistant_tools/default_integrations → codemie_test_harness/tests/workflow/assistant_tools/data_management}/__init__.py +0 -0
- {tests/workflow/assistant_tools/git → codemie_test_harness/tests/workflow/assistant_tools/default_integrations}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/file_management/__init__.py +0 -0
- {tests/workflow/assistant_tools/mcp → codemie_test_harness/tests/workflow/assistant_tools/git}/__init__.py +0 -0
- {tests/workflow/assistant_tools/notification → codemie_test_harness/tests/workflow/assistant_tools/mcp}/__init__.py +0 -0
- {tests/workflow/assistant_tools/plugin → codemie_test_harness/tests/workflow/assistant_tools/notification}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/workflow/assistant_tools/open_api/__init__.py +0 -0
- {tests/workflow/assistant_tools/project_management → codemie_test_harness/tests/workflow/assistant_tools/plugin}/__init__.py +0 -0
- {tests/workflow/assistant_tools/research → codemie_test_harness/tests/workflow/assistant_tools/project_management}/__init__.py +0 -0
- {tests/workflow/assistant_tools/servicenow → codemie_test_harness/tests/workflow/assistant_tools/research}/__init__.py +0 -0
- {tests/workflow/assistant_tools/vcs → codemie_test_harness/tests/workflow/assistant_tools/servicenow}/__init__.py +0 -0
- {tests/workflow/config_validation → codemie_test_harness/tests/workflow/assistant_tools/vcs}/__init__.py +0 -0
- {tests/workflow/direct_tools_calling → codemie_test_harness/tests/workflow/config_validation}/__init__.py +0 -0
- {tests/workflow/direct_tools_calling/default_integrations → codemie_test_harness/tests/workflow/direct_tools_calling}/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools → codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations}/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools/ado → codemie_test_harness/tests/workflow/virtual_assistant_tools}/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools/cloud → codemie_test_harness/tests/workflow/virtual_assistant_tools/ado}/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools/default_integrations → codemie_test_harness/tests/workflow/virtual_assistant_tools/cloud}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/codebase/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/data_management/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools/git → codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/file_management/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools/mcp → codemie_test_harness/tests/workflow/virtual_assistant_tools/git}/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools/plugin → codemie_test_harness/tests/workflow/virtual_assistant_tools/mcp}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/notification/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/open_api/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools/research → codemie_test_harness/tests/workflow/virtual_assistant_tools/plugin}/__init__.py +0 -0
- {tests → codemie_test_harness/tests}/workflow/virtual_assistant_tools/project_management/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools/servicenow → codemie_test_harness/tests/workflow/virtual_assistant_tools/research}/__init__.py +0 -0
- {tests/workflow/virtual_assistant_tools/vcs → codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow}/__init__.py +0 -0
- {codemie_test_harness-0.1.129.dist-info → codemie_test_harness-0.1.131.dist-info}/WHEEL +0 -0
- {codemie_test_harness-0.1.129.dist-info → codemie_test_harness-0.1.131.dist-info}/entry_points.txt +0 -0
|
@@ -6,9 +6,14 @@ from hamcrest import assert_that, has_length, greater_than
|
|
|
6
6
|
from playwright.sync_api import expect
|
|
7
7
|
from reportportal_client import step
|
|
8
8
|
|
|
9
|
-
from tests.ui.pageobject.components import
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
from codemie_test_harness.tests.ui.pageobject.components import (
|
|
10
|
+
WorkflowCard,
|
|
11
|
+
WorkflowSidebar,
|
|
12
|
+
)
|
|
13
|
+
from codemie_test_harness.tests.ui.pageobject.base_page import BasePage
|
|
14
|
+
from codemie_test_harness.tests.ui.pageobject.workflows.create_workflow_page import (
|
|
15
|
+
CreateWorkflowPage,
|
|
16
|
+
)
|
|
12
17
|
|
|
13
18
|
|
|
14
19
|
class WorkflowsPage(BasePage):
|
|
@@ -2,9 +2,13 @@ import os
|
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
4
|
|
|
5
|
-
from tests.ui.pageobject.workflows.workflows_page import
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
from codemie_test_harness.tests.ui.pageobject.workflows.workflows_page import (
|
|
6
|
+
WorkflowsPage,
|
|
7
|
+
)
|
|
8
|
+
from codemie_test_harness.tests.ui.pageobject.workflows.create_workflow_page import (
|
|
9
|
+
CreateWorkflowPage,
|
|
10
|
+
)
|
|
11
|
+
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
8
12
|
|
|
9
13
|
|
|
10
14
|
@pytest.mark.ui
|
|
@@ -3,10 +3,14 @@ import os
|
|
|
3
3
|
import pytest
|
|
4
4
|
|
|
5
5
|
from codemie_sdk.models.workflow import WorkflowMode
|
|
6
|
-
from tests.ui.pageobject.workflows.workflows_page import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
from tests.
|
|
6
|
+
from codemie_test_harness.tests.ui.pageobject.workflows.workflows_page import (
|
|
7
|
+
WorkflowsPage,
|
|
8
|
+
)
|
|
9
|
+
from codemie_test_harness.tests.ui.pageobject.workflows.edit_workflow_page import (
|
|
10
|
+
EditWorkflowPage,
|
|
11
|
+
)
|
|
12
|
+
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
13
|
+
from codemie_test_harness.tests.utils.yaml_utils import (
|
|
10
14
|
AssistantModel,
|
|
11
15
|
StateModel,
|
|
12
16
|
WorkflowYamlModel,
|
|
@@ -10,10 +10,10 @@ import os
|
|
|
10
10
|
import pytest
|
|
11
11
|
|
|
12
12
|
from codemie_sdk.models.workflow import WorkflowMode
|
|
13
|
-
from tests import TEST_USER, PROJECT
|
|
14
|
-
from tests.ui.pageobject.workflows import WorkflowDetailsPage
|
|
15
|
-
from tests.utils.base_utils import get_random_name
|
|
16
|
-
from tests.utils.yaml_utils import (
|
|
13
|
+
from codemie_test_harness.tests import TEST_USER, PROJECT
|
|
14
|
+
from codemie_test_harness.tests.ui.pageobject.workflows import WorkflowDetailsPage
|
|
15
|
+
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
16
|
+
from codemie_test_harness.tests.utils.yaml_utils import (
|
|
17
17
|
AssistantModel,
|
|
18
18
|
StateModel,
|
|
19
19
|
WorkflowYamlModel,
|
|
@@ -17,9 +17,9 @@ import pytz
|
|
|
17
17
|
from tzlocal import get_localzone
|
|
18
18
|
|
|
19
19
|
from codemie_sdk.models.workflow import WorkflowMode
|
|
20
|
-
from tests.ui.pageobject.workflows import WorkflowExecutionsPage
|
|
21
|
-
from tests.utils.base_utils import get_random_name
|
|
22
|
-
from tests.utils.yaml_utils import (
|
|
20
|
+
from codemie_test_harness.tests.ui.pageobject.workflows import WorkflowExecutionsPage
|
|
21
|
+
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
22
|
+
from codemie_test_harness.tests.utils.yaml_utils import (
|
|
23
23
|
AssistantModel,
|
|
24
24
|
StateModel,
|
|
25
25
|
WorkflowYamlModel,
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
|
-
from tests import TEST_USER
|
|
4
|
-
from tests.ui.pageobject.workflows.create_workflow_page import
|
|
5
|
-
|
|
3
|
+
from codemie_test_harness.tests import TEST_USER
|
|
4
|
+
from codemie_test_harness.tests.ui.pageobject.workflows.create_workflow_page import (
|
|
5
|
+
CreateWorkflowPage,
|
|
6
|
+
)
|
|
7
|
+
from codemie_test_harness.tests.ui.pageobject.workflows.workflow_template_details import (
|
|
6
8
|
WorkflowTemplateDetailsPage,
|
|
7
9
|
)
|
|
8
|
-
from tests.ui.pageobject.workflows.workflow_templates_page import
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
from codemie_test_harness.tests.ui.pageobject.workflows.workflow_templates_page import (
|
|
11
|
+
WorkflowTemplatesPage,
|
|
12
|
+
)
|
|
13
|
+
from codemie_test_harness.tests.ui.pageobject.workflows.workflows_page import (
|
|
14
|
+
WorkflowsPage,
|
|
15
|
+
)
|
|
16
|
+
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
11
17
|
|
|
12
18
|
|
|
13
19
|
@pytest.fixture(scope="function")
|
|
@@ -7,8 +7,12 @@ from codemie_sdk.models.assistant import (
|
|
|
7
7
|
EnvVars,
|
|
8
8
|
ExportAssistantPayload,
|
|
9
9
|
)
|
|
10
|
-
from tests import PROJECT, LANGFUSE_TRACES_ENABLED
|
|
11
|
-
from tests.utils.base_utils import
|
|
10
|
+
from codemie_test_harness.tests import PROJECT, LANGFUSE_TRACES_ENABLED
|
|
11
|
+
from codemie_test_harness.tests.utils.base_utils import (
|
|
12
|
+
BaseUtils,
|
|
13
|
+
get_random_name,
|
|
14
|
+
wait_for_entity,
|
|
15
|
+
)
|
|
12
16
|
|
|
13
17
|
|
|
14
18
|
class AssistantUtils(BaseUtils):
|
|
@@ -10,7 +10,7 @@ import boto3
|
|
|
10
10
|
from botocore.exceptions import ClientError
|
|
11
11
|
|
|
12
12
|
from codemie_sdk.models.integration import CredentialValues
|
|
13
|
-
from tests.enums.integrations import DataBaseDialect
|
|
13
|
+
from codemie_test_harness.tests.enums.integrations import DataBaseDialect
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class AwsParameterStore:
|
|
@@ -543,9 +543,11 @@ class CredentialsUtil:
|
|
|
543
543
|
|
|
544
544
|
@staticmethod
|
|
545
545
|
def kubernetes_credentials() -> List[CredentialValues]:
|
|
546
|
-
kubernetes_creds =
|
|
547
|
-
"kubernetes"
|
|
548
|
-
|
|
546
|
+
kubernetes_creds = (
|
|
547
|
+
AwsParameterStore.get_cloud_provider_credentials("kubernetes")
|
|
548
|
+
.get("sandbox", {})
|
|
549
|
+
.get("kubernetes", {})
|
|
550
|
+
)
|
|
549
551
|
return [
|
|
550
552
|
CredentialValues(key="url", value=CredentialsUtil.AUTO_GENERATED),
|
|
551
553
|
CredentialValues(key="kubernetes_url", value=kubernetes_creds.get("url")),
|
|
@@ -18,7 +18,7 @@ from codemie_sdk.models.workflow_state import (
|
|
|
18
18
|
from codemie_sdk.services.workflow_execution_state import (
|
|
19
19
|
WorkflowExecutionStateService,
|
|
20
20
|
)
|
|
21
|
-
from tests import autotest_entity_prefix
|
|
21
|
+
from codemie_test_harness.tests import autotest_entity_prefix
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class BaseUtils:
|
|
@@ -50,7 +50,7 @@ def to_camel_case(input_string):
|
|
|
50
50
|
def wait_for_completion(
|
|
51
51
|
execution_state_service: WorkflowExecutionStateService,
|
|
52
52
|
state_id: str,
|
|
53
|
-
timeout: int = int(os.getenv("DEFAULT_TIMEOUT")),
|
|
53
|
+
timeout: int = int(os.getenv("DEFAULT_TIMEOUT", "120")),
|
|
54
54
|
pool_interval: int = 3,
|
|
55
55
|
) -> WorkflowExecutionState:
|
|
56
56
|
start_time = time.time()
|
|
@@ -19,8 +19,12 @@ from codemie_sdk.models.datasource import (
|
|
|
19
19
|
UpdateJiraDataSourceRequest,
|
|
20
20
|
)
|
|
21
21
|
from codemie_sdk.models.datasource import DataSourceStatus
|
|
22
|
-
from tests import PROJECT
|
|
23
|
-
from tests.utils.base_utils import
|
|
22
|
+
from codemie_test_harness.tests import PROJECT
|
|
23
|
+
from codemie_test_harness.tests.utils.base_utils import (
|
|
24
|
+
BaseUtils,
|
|
25
|
+
get_random_name,
|
|
26
|
+
wait_for_entity,
|
|
27
|
+
)
|
|
24
28
|
|
|
25
29
|
|
|
26
30
|
class DataSourceUtils(BaseUtils):
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from typing import TypeVar, Type, Optional, Any, Union, Dict, List
|
|
3
|
+
|
|
4
|
+
import requests
|
|
5
|
+
from codemie_sdk.utils.http import ApiRequestHandler
|
|
6
|
+
from codemie_sdk.utils.http import log_request
|
|
7
|
+
from pydantic import BaseModel
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound=Union[BaseModel, List[BaseModel], dict])
|
|
10
|
+
|
|
11
|
+
logger = logging.getLogger(__name__)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class RequestHandler(ApiRequestHandler):
|
|
15
|
+
"""Handles HTTP requests with consistent error handling and response parsing."""
|
|
16
|
+
|
|
17
|
+
@log_request
|
|
18
|
+
def post(
|
|
19
|
+
self,
|
|
20
|
+
endpoint: str,
|
|
21
|
+
response_model: Type[T] = None,
|
|
22
|
+
json_data: Optional[Dict[str, Any]] = None,
|
|
23
|
+
stream: bool = False,
|
|
24
|
+
wrap_response: bool = True,
|
|
25
|
+
) -> Union[T, requests.Response]:
|
|
26
|
+
"""Makes a POST request and parses the response.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
endpoint: API endpoint path
|
|
30
|
+
response_model: Pydantic model class or List[Model] for response
|
|
31
|
+
json_data: JSON request body
|
|
32
|
+
stream: Whether to return streaming response
|
|
33
|
+
wrap_response: Whether response is wrapped in 'data' field
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
Parsed response object/list or streaming response
|
|
37
|
+
"""
|
|
38
|
+
if json_data:
|
|
39
|
+
logger.debug(f"Request body: {json_data}")
|
|
40
|
+
|
|
41
|
+
response = requests.post(
|
|
42
|
+
url=f"{self._base_url}{endpoint}",
|
|
43
|
+
headers=self._get_headers(),
|
|
44
|
+
json=json_data,
|
|
45
|
+
verify=self._verify_ssl,
|
|
46
|
+
stream=stream,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
if stream:
|
|
50
|
+
return response
|
|
51
|
+
|
|
52
|
+
return self._parse_response(response, response_model, wrap_response)
|
|
53
|
+
|
|
54
|
+
@log_request
|
|
55
|
+
def get(
|
|
56
|
+
self,
|
|
57
|
+
endpoint: str,
|
|
58
|
+
response_model: Type[T] = None,
|
|
59
|
+
params: Optional[Dict[str, Any]] = None,
|
|
60
|
+
wrap_response: bool = True,
|
|
61
|
+
) -> Union[T, requests.Response]:
|
|
62
|
+
"""Makes a GET request and parses the response.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
endpoint: API endpoint path
|
|
66
|
+
response_model: Pydantic model class or List[Model] for response
|
|
67
|
+
params: Query parameters
|
|
68
|
+
wrap_response: Whether response is wrapped in 'data' field
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
Parsed response object or list of objects
|
|
72
|
+
"""
|
|
73
|
+
if params:
|
|
74
|
+
logger.debug(f"Request params: {params}")
|
|
75
|
+
response = requests.get(
|
|
76
|
+
url=f"{self._base_url}{endpoint}",
|
|
77
|
+
headers=self._get_headers(),
|
|
78
|
+
params=params,
|
|
79
|
+
verify=self._verify_ssl,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
if response_model:
|
|
83
|
+
return self._parse_response(response, response_model, wrap_response)
|
|
84
|
+
|
|
85
|
+
return response
|
|
86
|
+
|
|
87
|
+
@log_request
|
|
88
|
+
def put(
|
|
89
|
+
self,
|
|
90
|
+
endpoint: str,
|
|
91
|
+
json_data: Dict[str, Any],
|
|
92
|
+
response_model: Type[T] = None,
|
|
93
|
+
params: Optional[Dict[str, Any]] = None,
|
|
94
|
+
wrap_response: bool = True,
|
|
95
|
+
) -> Union[T, requests.Response]:
|
|
96
|
+
"""Makes a PUT request and parses the response.
|
|
97
|
+
|
|
98
|
+
Args:
|
|
99
|
+
endpoint: API endpoint path
|
|
100
|
+
response_model: Pydantic model class or List[Model] for response
|
|
101
|
+
json_data: JSON request body
|
|
102
|
+
params: Query parameters
|
|
103
|
+
wrap_response: Whether response is wrapped in 'data' field
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Parsed response object or list of objects
|
|
107
|
+
"""
|
|
108
|
+
logger.debug(f"Request body: {json_data}")
|
|
109
|
+
response = requests.put(
|
|
110
|
+
url=f"{self._base_url}{endpoint}",
|
|
111
|
+
headers=self._get_headers(),
|
|
112
|
+
json=json_data,
|
|
113
|
+
params=params,
|
|
114
|
+
verify=self._verify_ssl,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
if response_model:
|
|
118
|
+
return self._parse_response(response, response_model, wrap_response)
|
|
119
|
+
|
|
120
|
+
return response
|
|
121
|
+
|
|
122
|
+
@log_request
|
|
123
|
+
def delete(
|
|
124
|
+
self,
|
|
125
|
+
endpoint: str,
|
|
126
|
+
) -> requests.Response:
|
|
127
|
+
"""Makes a DELETE request and parses the response.
|
|
128
|
+
|
|
129
|
+
Args:
|
|
130
|
+
endpoint: API endpoint path
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
response object
|
|
134
|
+
"""
|
|
135
|
+
response = requests.delete(
|
|
136
|
+
url=f"{self._base_url}{endpoint}",
|
|
137
|
+
headers=self._get_headers(),
|
|
138
|
+
verify=self._verify_ssl,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
return response
|
|
@@ -7,8 +7,12 @@ from codemie_sdk.models.integration import (
|
|
|
7
7
|
IntegrationType,
|
|
8
8
|
IntegrationTestRequest,
|
|
9
9
|
)
|
|
10
|
-
from tests import PROJECT
|
|
11
|
-
from tests.utils.base_utils import
|
|
10
|
+
from codemie_test_harness.tests import PROJECT
|
|
11
|
+
from codemie_test_harness.tests.utils.base_utils import (
|
|
12
|
+
BaseUtils,
|
|
13
|
+
wait_for_entity,
|
|
14
|
+
get_random_name,
|
|
15
|
+
)
|
|
12
16
|
|
|
13
17
|
|
|
14
18
|
class IntegrationUtils(BaseUtils):
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
from typing import Optional, Dict, Any
|
|
5
|
+
|
|
6
|
+
import requests
|
|
7
|
+
from codemie_sdk import CodeMieClient
|
|
8
|
+
|
|
9
|
+
from tests import autotest_entity_prefix
|
|
10
|
+
from tests.utils import api_domain, verify_ssl
|
|
11
|
+
from tests.utils.base_utils import (
|
|
12
|
+
BaseUtils,
|
|
13
|
+
get_random_name,
|
|
14
|
+
)
|
|
15
|
+
from tests.utils.http_utils import RequestHandler
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
providers_endpoint = "/v1/providers"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ProviderUtils(BaseUtils):
|
|
23
|
+
def __init__(self, client: CodeMieClient):
|
|
24
|
+
"""Initialize the provides service."""
|
|
25
|
+
|
|
26
|
+
super().__init__(client)
|
|
27
|
+
self._api = RequestHandler(api_domain, self.client.token, verify_ssl)
|
|
28
|
+
|
|
29
|
+
@staticmethod
|
|
30
|
+
def provider_request_json():
|
|
31
|
+
"""Load provider request JSON from file."""
|
|
32
|
+
payload_path = os.path.join(
|
|
33
|
+
os.path.dirname(__file__), "../test_data/files/provider_payload.json"
|
|
34
|
+
)
|
|
35
|
+
with open(payload_path, "r") as pyload_file:
|
|
36
|
+
request_json = json.load(pyload_file)
|
|
37
|
+
|
|
38
|
+
return request_json
|
|
39
|
+
|
|
40
|
+
def send_post_request_to_providers_endpoint(
|
|
41
|
+
self, request: Dict[str, Any]
|
|
42
|
+
) -> requests.Response:
|
|
43
|
+
"""
|
|
44
|
+
Send request to provider creation endpoint without raising error for response status codes.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
request: The provider creation request
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
Raw response from '/v1/providers' endpoint
|
|
51
|
+
"""
|
|
52
|
+
return self._api.post(providers_endpoint, json_data=request, stream=True)
|
|
53
|
+
|
|
54
|
+
def send_get_request_to_providers_endpoint(
|
|
55
|
+
self,
|
|
56
|
+
) -> requests.Response:
|
|
57
|
+
"""
|
|
58
|
+
Send request to get providers endpoint.
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
Raw response from '/v1/providers' endpoint
|
|
62
|
+
"""
|
|
63
|
+
return self._api.get(providers_endpoint)
|
|
64
|
+
|
|
65
|
+
def send_get_request_datasource_schemas_endpoint(
|
|
66
|
+
self,
|
|
67
|
+
) -> requests.Response:
|
|
68
|
+
"""
|
|
69
|
+
Send request to get datasource_schemas endpoint.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
Raw response from '/v1/providers/datasource_schemas' endpoint
|
|
73
|
+
"""
|
|
74
|
+
return self._api.get(f"{providers_endpoint}/datasource_schemas")
|
|
75
|
+
|
|
76
|
+
def create_provider(
|
|
77
|
+
self,
|
|
78
|
+
) -> str:
|
|
79
|
+
"""
|
|
80
|
+
Creates a provider for test.
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
Created provider id
|
|
84
|
+
"""
|
|
85
|
+
request_json = self.provider_request_json()
|
|
86
|
+
# Ensure unique provider name to avoid conflicts
|
|
87
|
+
request_json["name"] = get_random_name()
|
|
88
|
+
|
|
89
|
+
response = self.send_post_request_to_providers_endpoint(request_json)
|
|
90
|
+
|
|
91
|
+
return response.json()["id"]
|
|
92
|
+
|
|
93
|
+
def list_providers(
|
|
94
|
+
self,
|
|
95
|
+
) -> requests.Response:
|
|
96
|
+
"""
|
|
97
|
+
List all providers.
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
List of provider objects
|
|
101
|
+
"""
|
|
102
|
+
response = self.send_get_request_to_providers_endpoint()
|
|
103
|
+
|
|
104
|
+
return response
|
|
105
|
+
|
|
106
|
+
def get_provider_by_id(self, provider_id: str) -> requests.Response:
|
|
107
|
+
"""
|
|
108
|
+
Get a specific provider by ID.
|
|
109
|
+
|
|
110
|
+
Args:
|
|
111
|
+
provider_id: The provider ID
|
|
112
|
+
|
|
113
|
+
Returns:
|
|
114
|
+
Provider object
|
|
115
|
+
"""
|
|
116
|
+
response = self._api.get(f"{providers_endpoint}/{provider_id}")
|
|
117
|
+
|
|
118
|
+
return response
|
|
119
|
+
|
|
120
|
+
def update_provider(
|
|
121
|
+
self,
|
|
122
|
+
provider_id: str,
|
|
123
|
+
provider_update_payload: dict,
|
|
124
|
+
) -> requests.Response:
|
|
125
|
+
"""
|
|
126
|
+
Update an existing provider.
|
|
127
|
+
|
|
128
|
+
Args:
|
|
129
|
+
provider_id: The provider ID to update
|
|
130
|
+
provider_update_payload: request body
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
Updated provider object
|
|
134
|
+
"""
|
|
135
|
+
endpoint = f"{providers_endpoint}/{provider_id}"
|
|
136
|
+
|
|
137
|
+
return self._api.put(endpoint, json_data=provider_update_payload)
|
|
138
|
+
|
|
139
|
+
def send_delete_provider_request(self, provider_id: str) -> requests.Response:
|
|
140
|
+
"""
|
|
141
|
+
Delete a provider by ID.
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
provider_id: The provider ID to delete
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
Response from delete operation
|
|
148
|
+
"""
|
|
149
|
+
return self._api.delete(f"{providers_endpoint}/{provider_id}")
|
|
150
|
+
|
|
151
|
+
def cleanup_test_providers(self, name_prefix: Optional[str] = None):
|
|
152
|
+
"""
|
|
153
|
+
Clean up test providers (those with autotest prefix or specified prefix).
|
|
154
|
+
|
|
155
|
+
Args:
|
|
156
|
+
name_prefix: Prefix to match for cleanup (uses autotest prefix if None)
|
|
157
|
+
"""
|
|
158
|
+
|
|
159
|
+
prefix = name_prefix if name_prefix else autotest_entity_prefix
|
|
160
|
+
|
|
161
|
+
try:
|
|
162
|
+
providers = self.list_providers()
|
|
163
|
+
test_providers = [
|
|
164
|
+
provider
|
|
165
|
+
for provider in providers.json()
|
|
166
|
+
if provider["name"].startswith(prefix)
|
|
167
|
+
]
|
|
168
|
+
|
|
169
|
+
for provider in test_providers:
|
|
170
|
+
try:
|
|
171
|
+
self.send_delete_provider_request(provider["id"])
|
|
172
|
+
except Exception as e:
|
|
173
|
+
# Log but don't fail cleanup for individual provider
|
|
174
|
+
logger.error(f"Failed to delete provider {provider['name']}: {e}")
|
|
175
|
+
|
|
176
|
+
except Exception as e:
|
|
177
|
+
# Log but don't fail if cleanup encounters issues
|
|
178
|
+
logger.error(f"Provider cleanup encountered an error: {e}")
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
from codemie_sdk import CodeMieClient
|
|
2
2
|
from hamcrest import assert_that, greater_than_or_equal_to
|
|
3
3
|
|
|
4
|
-
from tests.utils.base_utils import
|
|
4
|
+
from codemie_test_harness.tests.utils.base_utils import (
|
|
5
|
+
wait_for_entity,
|
|
6
|
+
wait_for_completion,
|
|
7
|
+
clean_json,
|
|
8
|
+
)
|
|
5
9
|
|
|
6
10
|
|
|
7
11
|
class SimilarityCheck:
|
|
@@ -5,15 +5,15 @@ from codemie_sdk.models.workflow import (
|
|
|
5
5
|
WorkflowUpdateRequest,
|
|
6
6
|
WorkflowMode,
|
|
7
7
|
)
|
|
8
|
-
from tests import PROJECT
|
|
9
|
-
from tests.utils import api_domain, verify_ssl
|
|
10
|
-
from tests.utils.base_utils import (
|
|
8
|
+
from codemie_test_harness.tests import PROJECT
|
|
9
|
+
from codemie_test_harness.tests.utils import api_domain, verify_ssl
|
|
10
|
+
from codemie_test_harness.tests.utils.base_utils import (
|
|
11
11
|
BaseUtils,
|
|
12
12
|
get_random_name,
|
|
13
13
|
wait_for_entity,
|
|
14
14
|
wait_for_completion,
|
|
15
15
|
)
|
|
16
|
-
from tests.utils.http_utils import RequestHandler
|
|
16
|
+
from codemie_test_harness.tests.utils.http_utils import RequestHandler
|
|
17
17
|
|
|
18
18
|
workflow_endpoint = "/v1/workflows"
|
|
19
19
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
|
-
from tests.enums.tools import AzureDevOpsTestPlanTool, Toolkit
|
|
4
|
-
from tests.test_data.ado_test_plan_tools_test_data import (
|
|
3
|
+
from codemie_test_harness.tests.enums.tools import AzureDevOpsTestPlanTool, Toolkit
|
|
4
|
+
from codemie_test_harness.tests.test_data.ado_test_plan_tools_test_data import (
|
|
5
5
|
ado_test_plan_get_test_data,
|
|
6
6
|
ADO_TEST_PLAN_CREATE_TEST_PLAN,
|
|
7
7
|
ADO_TEST_PLAN_CREATE_SUITE,
|
|
@@ -9,9 +9,9 @@ from tests.test_data.ado_test_plan_tools_test_data import (
|
|
|
9
9
|
ADO_TEST_PLAN_DELETE_SUITE,
|
|
10
10
|
ADO_TEST_PLAN_DELETE_PLAN,
|
|
11
11
|
)
|
|
12
|
-
from tests.utils.base_utils import get_random_name
|
|
13
|
-
from tests.utils.constants import ID_PATTERN
|
|
14
|
-
from tests.utils.json_utils import extract_id_from_ado_response
|
|
12
|
+
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
13
|
+
from codemie_test_harness.tests.utils.constants import ID_PATTERN
|
|
14
|
+
from codemie_test_harness.tests.utils.json_utils import extract_id_from_ado_response
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
@pytest.mark.regression
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
|
-
from tests.enums.tools import AzureDevOpsWikiTool, Toolkit
|
|
4
|
-
from tests.test_data.ado_wiki_tools_test_data import (
|
|
3
|
+
from codemie_test_harness.tests.enums.tools import AzureDevOpsWikiTool, Toolkit
|
|
4
|
+
from codemie_test_harness.tests.test_data.ado_wiki_tools_test_data import (
|
|
5
5
|
ado_wiki_get_test_data,
|
|
6
6
|
ADO_WIKI_CREATE_PAGE,
|
|
7
7
|
ADO_WIKI_RENAME_PAGE,
|
|
8
8
|
ADO_WIKI_MODIFY_PAGE,
|
|
9
9
|
ADO_WIKI_DELETE_PAGE,
|
|
10
10
|
)
|
|
11
|
-
from tests.utils.base_utils import get_random_name
|
|
11
|
+
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
@pytest.mark.regression
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
|
-
from tests.enums.tools import AzureDevOpsWorkItemTool, Toolkit
|
|
4
|
-
from tests.test_data.ado_work_item_tools_test_data import (
|
|
3
|
+
from codemie_test_harness.tests.enums.tools import AzureDevOpsWorkItemTool, Toolkit
|
|
4
|
+
from codemie_test_harness.tests.test_data.ado_work_item_tools_test_data import (
|
|
5
5
|
ado_work_item_get_test_data,
|
|
6
6
|
ADO_WORK_ITEM_CREATE,
|
|
7
7
|
ADO_WORK_ITEM_UPDATE,
|
|
8
8
|
ADO_WORK_ITEM_LINK,
|
|
9
9
|
)
|
|
10
|
-
from tests.utils.base_utils import get_random_name
|
|
11
|
-
from tests.utils.constants import WORK_ITEM_ID_PATTERN
|
|
12
|
-
from tests.utils.json_utils import extract_id_from_ado_response
|
|
10
|
+
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
11
|
+
from codemie_test_harness.tests.utils.constants import WORK_ITEM_ID_PATTERN
|
|
12
|
+
from codemie_test_harness.tests.utils.json_utils import extract_id_from_ado_response
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
@pytest.mark.regression
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
|
-
from tests.enums.tools import Toolkit, CloudTool
|
|
4
|
-
from tests.test_data.cloud_tools_test_data import cloud_test_data
|
|
3
|
+
from codemie_test_harness.tests.enums.tools import Toolkit, CloudTool
|
|
4
|
+
from codemie_test_harness.tests.test_data.cloud_tools_test_data import cloud_test_data
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
@pytest.mark.regression
|