codemie-test-harness 0.1.120__tar.gz → 0.1.121__tar.gz

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.

Files changed (323) hide show
  1. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/PKG-INFO +2 -2
  2. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/pyproject.toml +2 -2
  3. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/conftest.py +4 -1
  4. codemie_test_harness-0.1.121/tests/test_data/direct_tools/project_management_tools_test_data.py +161 -0
  5. codemie_test_harness-0.1.121/tests/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool.py +262 -0
  6. codemie_test_harness-0.1.121/tests/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool_kit.py +265 -0
  7. codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools/vcs/__init__.py +0 -0
  8. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/README.md +0 -0
  9. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/codemie_test_harness/cli/__init__.py +0 -0
  10. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/codemie_test_harness/cli/cli.py +0 -0
  11. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/codemie_test_harness/cli/commands/__init__.py +0 -0
  12. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/codemie_test_harness/cli/commands/config_cmd.py +0 -0
  13. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/codemie_test_harness/cli/commands/run_cmd.py +0 -0
  14. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/codemie_test_harness/cli/constants.py +0 -0
  15. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/codemie_test_harness/cli/runner.py +0 -0
  16. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/codemie_test_harness/cli/utils.py +0 -0
  17. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/__init__.py +0 -0
  18. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/__init__.py +0 -0
  19. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/datasource/__init__.py +0 -0
  20. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/datasource/test_code_datasource.py +0 -0
  21. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/datasource/test_confluence_datasource.py +0 -0
  22. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/datasource/test_file_indexing.py +0 -0
  23. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/datasource/test_google_datasource.py +0 -0
  24. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/datasource/test_jira_datasource.py +0 -0
  25. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/default_integrations/__init__.py +0 -0
  26. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/default_integrations/test_default_integrations_for_tool.py +0 -0
  27. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
  28. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/default_integrations/test_default_integrations_for_tool_with_datasource.py +0 -0
  29. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/test_assistants.py +0 -0
  30. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/__init__.py +0 -0
  31. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/ado/__init__.py +0 -0
  32. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/ado/test_assistant_for_ado_test_plan_tools.py +0 -0
  33. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/ado/test_assistant_for_ado_wiki_tools.py +0 -0
  34. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/ado/test_assistant_for_ado_work_item_tools.py +0 -0
  35. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/cloud/__init__.py +0 -0
  36. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/cloud/test_cloud_tools.py +0 -0
  37. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/codebase/__init__.py +0 -0
  38. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/codebase/test_codebase_tools.py +0 -0
  39. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/datamanagement/__init__.py +0 -0
  40. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/datamanagement/test_assistant_with_data_management_tools.py +0 -0
  41. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/filemanagement/__init__.py +0 -0
  42. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/filemanagement/test_assistant_with_file_management_tools.py +0 -0
  43. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/git/__init__.py +0 -0
  44. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/git/test_assistant_with_git_tools.py +0 -0
  45. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/mcp/__init__.py +0 -0
  46. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/mcp/test_cli_mcp_server.py +0 -0
  47. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/mcp/test_mcp_servers.py +0 -0
  48. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/notification/__init__.py +0 -0
  49. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/notification/test_assistant_notification_tools.py +0 -0
  50. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/openapi/__init__.py +0 -0
  51. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/openapi/test_assistant_with_open_api_tools.py +0 -0
  52. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/plugin/__init__.py +0 -0
  53. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/plugin/test_assistant_with_development_plugin.py +0 -0
  54. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/plugin/test_assistant_with_plugin_and_mcp_servers.py +0 -0
  55. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/project_management/__init__.py +0 -0
  56. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/project_management/test_assistant_pm_tools.py +0 -0
  57. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/research/__init__.py +0 -0
  58. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/research/test_assistant_research_tools.py +0 -0
  59. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/servicenow/__init__.py +0 -0
  60. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/servicenow/test_servicenow_tools.py +0 -0
  61. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/vcs/__init__.py +0 -0
  62. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/assistant/tools/vcs/test_assistant_with_vcs_tools.py +0 -0
  63. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/e2e/__init__.py +0 -0
  64. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/e2e/test_e2e.py +0 -0
  65. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/enums/__init__.py +0 -0
  66. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/enums/integrations.py +0 -0
  67. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/enums/model_types.py +0 -0
  68. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/enums/tools.py +0 -0
  69. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/integrations/__init__.py +0 -0
  70. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/integrations/project/__init__.py +0 -0
  71. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/integrations/project/test_default_integrations.py +0 -0
  72. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/integrations/project/test_project_integrations.py +0 -0
  73. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/integrations/user/__init__.py +0 -0
  74. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/integrations/user/test_default_integrations.py +0 -0
  75. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/integrations/user/test_user_integrations.py +0 -0
  76. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/llm/__init__.py +0 -0
  77. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/llm/assistants/__init__.py +0 -0
  78. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/llm/assistants/test_llm.py +0 -0
  79. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/search/__init__.py +0 -0
  80. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/search/test_search_assistant.py +0 -0
  81. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/search/test_search_datasource.py +0 -0
  82. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/search/test_search_integration.py +0 -0
  83. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/search/test_search_workflow.py +0 -0
  84. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/service/__init__.py +0 -0
  85. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/service/test_assistant_service.py +0 -0
  86. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/service/test_datasource_service.py +0 -0
  87. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/service/test_integration_service.py +0 -0
  88. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/service/test_llm_service.py +0 -0
  89. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/service/test_task_service.py +0 -0
  90. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/service/test_user_service.py +0 -0
  91. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/service/test_workflow_execution_service.py +0 -0
  92. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/service/test_workflow_service.py +0 -0
  93. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/__init__.py +0 -0
  94. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/ado_test_plan_tools_test_data.py +0 -0
  95. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/ado_wiki_tools_test_data.py +0 -0
  96. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/ado_work_item_tools_test_data.py +0 -0
  97. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/cloud_tools_test_data.py +0 -0
  98. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/codebase_tools_test_data.py +0 -0
  99. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/data_management_tools_test_data.py +0 -0
  100. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/__init__.py +0 -0
  101. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/ado_test_plan_tools_test_data.py +0 -0
  102. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/ado_wiki_tools_test_data.py +0 -0
  103. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/ado_work_item_tools_test_data.py +0 -0
  104. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/cloud_tools_test_data.py +0 -0
  105. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/codebase_tools_test_data.py +0 -0
  106. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/data_management_tools_test_data.py +0 -0
  107. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/direct_tools_test_data.py +0 -0
  108. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/file_management_tools_test_data.py +0 -0
  109. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/notification_tools_test_data.py +0 -0
  110. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/open_api_tools_test_data.py +0 -0
  111. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/servicenow_tools_test_data.py +0 -0
  112. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/direct_tools/vcs_tools_test_data.py +0 -0
  113. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/file_indexing_test_data.py +0 -0
  114. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/file_management_tools_test_data.py +0 -0
  115. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/large-files/large-csv.csv +0 -0
  116. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/large-files/large-json.json +0 -0
  117. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/large-files/large-pdf.pdf +0 -0
  118. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/large-files/large-txt.txt +0 -0
  119. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/large-files/large-xml.xml +0 -0
  120. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/large-files/large-yaml.yaml +0 -0
  121. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.csv +0 -0
  122. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.docx +0 -0
  123. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.gif +0 -0
  124. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.ini +0 -0
  125. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.jpeg +0 -0
  126. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.jpg +0 -0
  127. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.json +0 -0
  128. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.ods +0 -0
  129. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.pdf +0 -0
  130. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.png +0 -0
  131. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.pptx +0 -0
  132. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.txt +0 -0
  133. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.vtt +0 -0
  134. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.xlsx +0 -0
  135. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.xml +0 -0
  136. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/test.yaml +0 -0
  137. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/files/video-file.mp4 +0 -0
  138. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/git_tools_test_data.py +0 -0
  139. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/google_datasource_test_data.py +0 -0
  140. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/index_test_data.py +0 -0
  141. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/integrations_test_data.py +0 -0
  142. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/llm_test_data.py +0 -0
  143. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/mcp_server_test_data.py +0 -0
  144. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/notification_tools_test_data.py +0 -0
  145. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/open_api_tools_test_data.py +0 -0
  146. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/openapi.json +0 -0
  147. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/output_schema_test_data.py +0 -0
  148. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/plugin_tools_test_data.py +0 -0
  149. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/pm_tools_test_data.py +0 -0
  150. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/project_management_test_data.py +0 -0
  151. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/research_tools_test_data.py +0 -0
  152. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/servicenow_tools_test_data.py +0 -0
  153. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/vcs_tools_test_data.py +0 -0
  154. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/invalid_assistant_id.yaml +0 -0
  155. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/invalid_assistant_in_state.yaml +0 -0
  156. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/invalid_data_source.yaml +0 -0
  157. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/invalid_state.yaml +0 -0
  158. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/invalid_tool.yaml +0 -0
  159. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/invalid_yaml.yaml +0 -0
  160. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/invalid_yaml_format.yaml +0 -0
  161. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_assistant_id.yaml +0 -0
  162. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_assistant_tools_name.yaml +0 -0
  163. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_retry_backoff_factor.yaml +0 -0
  164. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_retry_initial_interval.yaml +0 -0
  165. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_retry_max_attempts.yaml +0 -0
  166. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_retry_max_interval.yaml +0 -0
  167. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states.yaml +0 -0
  168. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_id.yaml +0 -0
  169. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_next.yaml +0 -0
  170. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_next_condition_expression.yaml +0 -0
  171. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_next_condition_otherwise.yaml +0 -0
  172. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_next_condition_then.yaml +0 -0
  173. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_cases.yaml +0 -0
  174. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_cases_condition.yaml +0 -0
  175. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_cases_state_id.yaml +0 -0
  176. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_next_switch_default.yaml +0 -0
  177. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_retry_backoff_factor.yaml +0 -0
  178. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_retry_initial_interval.yaml +0 -0
  179. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_retry_max_attempts.yaml +0 -0
  180. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_states_retry_max_interval.yaml +0 -0
  181. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_system_prompt.yaml +0 -0
  182. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_tools_id.yaml +0 -0
  183. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow/invalid_config/missing_required_tools_name.yaml +0 -0
  184. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/test_data/workflow_validation_messages.py +0 -0
  185. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/__init__.py +0 -0
  186. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/conftest.py +0 -0
  187. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/__init__.py +0 -0
  188. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/assistants/__init__.py +0 -0
  189. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/assistants/assistants_page.py +0 -0
  190. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/base_page.py +0 -0
  191. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/components/__init__.py +0 -0
  192. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/components/execution_history_row.py +0 -0
  193. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/components/header.py +0 -0
  194. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/components/pop_up.py +0 -0
  195. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/components/workflow_card.py +0 -0
  196. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/components/workflow_execution_history_item.py +0 -0
  197. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/components/workflow_execution_state.py +0 -0
  198. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/components/workflow_sidebar.py +0 -0
  199. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/components/workflow_state_card.py +0 -0
  200. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/login_page.py +0 -0
  201. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/workflows/__init__.py +0 -0
  202. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/workflows/base_workflow_form_page.py +0 -0
  203. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/workflows/create_workflow_page.py +0 -0
  204. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/workflows/edit_workflow_page.py +0 -0
  205. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/workflows/workflow_details_page.py +0 -0
  206. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/workflows/workflow_executions_page.py +0 -0
  207. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/workflows/workflow_template_details.py +0 -0
  208. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/workflows/workflow_templates_page.py +0 -0
  209. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/pageobject/workflows/workflows_page.py +0 -0
  210. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/test_create_workflow.py +0 -0
  211. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/test_edit_workflow.py +0 -0
  212. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/test_workflow_details.py +0 -0
  213. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/test_workflow_executions_page.py +0 -0
  214. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/test_workflow_templates.py +0 -0
  215. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/ui/test_workflows.py +0 -0
  216. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/__init__.py +0 -0
  217. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/assistant_utils.py +0 -0
  218. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/aws_parameters_store.py +0 -0
  219. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/base_utils.py +0 -0
  220. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/client_factory.py +0 -0
  221. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/constants.py +0 -0
  222. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/datasource_utils.py +0 -0
  223. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/file_utils.py +0 -0
  224. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/gitbud_utils.py +0 -0
  225. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/http_utils.py +0 -0
  226. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/integration_utils.py +0 -0
  227. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/json_utils.py +0 -0
  228. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/logger_util.py +0 -0
  229. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/notification_utils.py +0 -0
  230. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/pytest_utils.py +0 -0
  231. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/search_utils.py +0 -0
  232. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/similarity_check.py +0 -0
  233. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/workflow_utils.py +0 -0
  234. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/utils/yaml_utils.py +0 -0
  235. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/__init__.py +0 -0
  236. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/__init__.py +0 -0
  237. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/ado/__init__.py +0 -0
  238. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_test_plan_tools.py +0 -0
  239. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_wiki_tools.py +0 -0
  240. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_work_item_tools.py +0 -0
  241. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/cloud/__init__.py +0 -0
  242. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/cloud/test_workflow_with_assistant_cloud_tools.py +0 -0
  243. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/codebase/__init__.py +0 -0
  244. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/codebase/test_worfklow_with_assistant_codebase_tools.py +0 -0
  245. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/data_management/__init__.py +0 -0
  246. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/data_management/test_workflow_with_assistant_with_data_management_tools.py +0 -0
  247. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/default_integrations/__init__.py +0 -0
  248. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool.py +0 -0
  249. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
  250. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py +0 -0
  251. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/file_management/__init__.py +0 -0
  252. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/file_management/test_workflow_with_assistant_with_file_management_tools.py +0 -0
  253. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/git/__init__.py +0 -0
  254. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/git/test_workflow_with_assistant_git_tools.py +0 -0
  255. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/mcp/__init__.py +0 -0
  256. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/mcp/test_workflow_with_assistant_with_mcp_server.py +0 -0
  257. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/notification/__init__.py +0 -0
  258. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/notification/test_workflow_with_assistant_notification_tools.py +0 -0
  259. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/open_api/__init__.py +0 -0
  260. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/open_api/test_workflow_with_assistant_with_open_api_tools.py +0 -0
  261. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/plugin/__init__.py +0 -0
  262. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/plugin/test_workflow_with_assistant_with_development_plugin.py +0 -0
  263. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/plugin/test_workflow_with_assistant_with_plugin_and_mcp_servers.py +0 -0
  264. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/project_management/__init__.py +0 -0
  265. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/project_management/test_workflow_with_assistant_pm_tools.py +0 -0
  266. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/research/__init__.py +0 -0
  267. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/research/test_workflow_with_assistant_research_tools.py +0 -0
  268. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/servicenow/__init__.py +0 -0
  269. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/servicenow/test_workflow_with_servicenow_tools.py +0 -0
  270. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/vcs/__init__.py +0 -0
  271. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/assistant_tools/vcs/workflow_with_assistant_vcs_tools.py +0 -0
  272. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/config_validation/__init__.py +0 -0
  273. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/config_validation/test_config_validation.py +0 -0
  274. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/__init__.py +0 -0
  275. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools → codemie_test_harness-0.1.121/tests/workflow/direct_tools_calling/default_integrations}/__init__.py +0 -0
  276. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_ado_test_plan_tools.py +0 -0
  277. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_ado_wiki_tools.py +0 -0
  278. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_ado_work_item_tools.py +0 -0
  279. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_cloud_tools.py +0 -0
  280. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_codebase_tools.py +0 -0
  281. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_data_management_tools.py +0 -0
  282. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_file_management_tools.py +0 -0
  283. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_notification_tools.py +0 -0
  284. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_open_api_tools.py +0 -0
  285. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_plugin_tools.py +0 -0
  286. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_servicenow_tools.py +0 -0
  287. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/direct_tools_calling/test_workflow_with_vcs_tools.py +0 -0
  288. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/test_workflows.py +0 -0
  289. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools/ado → codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools}/__init__.py +0 -0
  290. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools/cloud → codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools/ado}/__init__.py +0 -0
  291. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_test_plan_tools.py +0 -0
  292. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_wiki_tools.py +0 -0
  293. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_work_item_tools.py +0 -0
  294. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools/default_integrations → codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools/cloud}/__init__.py +0 -0
  295. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/cloud/test_workflow_with_cloud_tools.py +0 -0
  296. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/codebase/__init__.py +0 -0
  297. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/codebase/test_workflow_with_codebase_tools.py +0 -0
  298. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/data_management/__init__.py +0 -0
  299. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/data_management/test_workflow_with_data_management_tools.py +0 -0
  300. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools/git → codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools/default_integrations}/__init__.py +0 -0
  301. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool.py +0 -0
  302. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py +0 -0
  303. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_with_datasource.py +0 -0
  304. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/file_management/__init__.py +0 -0
  305. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/file_management/test_workflow_with_file_management_tools.py +0 -0
  306. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools/mcp → codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools/git}/__init__.py +0 -0
  307. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/git/test_workflow_with_git_tools.py +0 -0
  308. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools/plugin → codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools/mcp}/__init__.py +0 -0
  309. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/mcp/test_workflow_with_mcp_server.py +0 -0
  310. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/notification/__init__.py +0 -0
  311. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/notification/test_workflow_with_notification_tools.py +0 -0
  312. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/open_api/__init__.py +0 -0
  313. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/open_api/test_workflow_with_open_api_tools.py +0 -0
  314. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools/research → codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools/plugin}/__init__.py +0 -0
  315. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/plugin/test_workflow_with_development_plugin.py +0 -0
  316. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/plugin/test_workflow_with_plugin_and_mcp_servers.py +0 -0
  317. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/project_management/__init__.py +0 -0
  318. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/project_management/test_workflow_with_project_management_tools.py +0 -0
  319. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools/servicenow → codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools/research}/__init__.py +0 -0
  320. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/research/test_workflow_with_research_tools.py +0 -0
  321. {codemie_test_harness-0.1.120/tests/workflow/virtual_assistant_tools/vcs → codemie_test_harness-0.1.121/tests/workflow/virtual_assistant_tools/servicenow}/__init__.py +0 -0
  322. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py +0 -0
  323. {codemie_test_harness-0.1.120 → codemie_test_harness-0.1.121}/tests/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: codemie-test-harness
3
- Version: 0.1.120
3
+ Version: 0.1.121
4
4
  Summary: Autotest for CodeMie backend and UI
5
5
  Author: Anton Yeromin
6
6
  Author-email: anton_yeromin@epam.com
@@ -13,7 +13,7 @@ Requires-Dist: aws-assume-role-lib (>=2.10.0,<3.0.0)
13
13
  Requires-Dist: boto3 (>=1.39.8,<2.0.0)
14
14
  Requires-Dist: click (>=8.1.7,<9.0.0)
15
15
  Requires-Dist: codemie-plugins (>=0.1.123,<0.2.0)
16
- Requires-Dist: codemie-sdk-python (==0.1.120)
16
+ Requires-Dist: codemie-sdk-python (==0.1.121)
17
17
  Requires-Dist: pytest (>=8.4.1,<9.0.0)
18
18
  Requires-Dist: pytest-playwright (>=0.7.0,<0.8.0)
19
19
  Requires-Dist: pytest-reportportal (>=5.5.2,<6.0.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "codemie-test-harness"
3
- version = "0.1.120"
3
+ version = "0.1.121"
4
4
  description = "Autotest for CodeMie backend and UI"
5
5
  authors = [
6
6
  "Anton Yeromin <anton_yeromin@epam.com>",
@@ -13,7 +13,7 @@ packages = [
13
13
 
14
14
  [tool.poetry.dependencies]
15
15
  python = "^3.12"
16
- codemie-sdk-python = "0.1.120"
16
+ codemie-sdk-python = "0.1.121"
17
17
  pytest = "^8.4.1"
18
18
  python-dotenv = "^1.1.0"
19
19
  PyHamcrest = "^2.1.0"
@@ -585,6 +585,7 @@ def workflow_with_tool(workflow):
585
585
  tool_args=None,
586
586
  integration=None,
587
587
  datasource_ids=None,
588
+ project_name=None,
588
589
  ):
589
590
  state_model = StateModel(id=tool_and_state_name, tool_id=tool_and_state_name)
590
591
 
@@ -596,7 +597,9 @@ def workflow_with_tool(workflow):
596
597
  datasource_ids=datasource_ids,
597
598
  )
598
599
 
599
- return workflow(tool_model=tool_model, state_model=state_model)
600
+ return workflow(
601
+ tool_model=tool_model, state_model=state_model, project_name=project_name
602
+ )
600
603
 
601
604
  return _create_workflow
602
605
 
@@ -0,0 +1,161 @@
1
+ from tests.enums.tools import Toolkit, ProjectManagementTool
2
+
3
+ project_management_tools_data = [
4
+ (
5
+ Toolkit.PROJECT_MANAGEMENT,
6
+ ProjectManagementTool.JIRA,
7
+ {
8
+ "method": "GET",
9
+ "relative_url": "/rest/api/2/issue/EPMCDME-222",
10
+ "params": {},
11
+ },
12
+ """
13
+ HTTP: GET /rest/api/2/issue/EPMCDME-222 -> 200 OK {"expand":"renderedFields,names,schema,operations,editmeta,
14
+ changelog,versionedRepresentations","id":"6959493","self":"https://jiraeu.epam.com/rest/api/2/issue/6959493",
15
+ "key":"EPMCDME-222","fields":{"customfield_38400":null,"customfield_38401":null,"customfield_38402":null,
16
+ "customfield_34834":null,"customfield_38403":null,"resolution":{"self":"https://jiraeu.epam.com/rest/api/2/
17
+ resolution/18","id":"18","description":"Resolution if a task or defect is no longer valid based on changes in
18
+ the system or requirements","name":"Obsolete"},"customfield_38404":null,"customfield_17702":null,"customfield_
19
+ 38405":null,"customfield_38406":null,"customfield_32300":null,"customfield_22601":null,"lastViewed":null,"
20
+ customfield_38410":null,"labels":["CodeMie"],"customfield_17811":null,"customfield_33400":null,"customfield_
21
+ 11700":null,"customfield_35700":null,"customfield_38407":null,"customfield_13206":"1.\r\n2.\r\n3.\r\n4.","
22
+ customfield_34732":null,"customfield_38408":null,"customfield_38409":null,"customfield_11701":null,"
23
+ aggregatetimeoriginalestimate":null,"issuelinks":[],"assignee":{"self":"https://jiraeu.epam.com/rest/api/2/user
24
+ ?username=Vadym_Vlasenko%40epam.com","name":"Vadym_Vlasenko@epam.com","key":"vadym_vlasenko","emailAddress":"
25
+ Vadym_Vlasenko@epam.com","avatarUrls":{"48x48":"https://jiraeu.epam.com/secure/useravatar?ownerId=vadym_
26
+ vlasenko&avatarId=82922","24x24":"https://jiraeu.epam.com/secure/useravatar?size=small&ownerId=vadym_vlasenko&
27
+ avatarId=82922","16x16":"https://jiraeu.epam.com/secure/useravatar?size=xsmall&ownerId=vadym_vlasenko&avatarId=
28
+ 82922","32x32":"https://jiraeu.epam.com/secure/useravatar?size=medium&ownerId=vadym_vlasenko&avatarId=82922"},
29
+ "displayName":"Vadym Vlasenko","active":true,"timeZone":"Etc/GMT"},"components":[],"customfield_31900":null,"
30
+ customfield_15500":null,"customfield_35706":null,"customfield_35705":null,"customfield_34859":null,"customfield_
31
+ 35704":null,"customfield_35703":null,"customfield_35702":null,"customfield_15501":null,"customfield_17800":null,
32
+ "customfield_35701":null,"customfield_32200":null,"customfield_36800":null,"customfield_35710":null,"customfield_
33
+ 32202":null,"customfield_32201":null,"customfield_30704":null,"subtasks":[],"reporter":{"self":"https://jiraeu.
34
+ epam.com/rest/api/2/user?username=Yana_Kharchenko%40epam.com","name":"Yana_Kharchenko@epam.com","key":"iana_gurska
35
+ ","emailAddress":"Yana_Kharchenko@epam.com","avatarUrls":{"48x48":"https://jiraeu.epam.com/secure/useravatar?
36
+ ownerId=iana_gurska&avatarId=82512","24x24":"https://jiraeu.epam.com/secure/useravatar?size=small&ownerId=iana_
37
+ gurska&avatarId=82512","16x16":"https://jiraeu.epam.com/secure/useravatar?size=xsmall&ownerId=iana_gurska&
38
+ avatarId=82512","32x32":"https://jiraeu.epam.com/secure/useravatar?size=medium&ownerId=iana_gurska&avatarId=
39
+ 82512"},"displayName":"Yana Kharchenko","active":true,"timeZone":"Europe/Kiev"},"customfield_32204":null,
40
+ "customfield_32203":null,"customfield_35720":null,"customfield_11801":null,"customfield_34873":null,"progress":
41
+ {"progress":0,"total":0},"votes":{"self":"https://jiraeu.epam.com/rest/api/2/issue/EPMCDME-222/votes","votes":0,
42
+ "hasVoted":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"archivedby":null,"issuetype":
43
+ {"self":"https://jiraeu.epam.com/rest/api/2/issuetype/6","id":"6","description":"Created by Jira Software - do
44
+ not edit or delete. Issue type for a big user story that needs to be broken down.","iconUrl":"https://jiraeu.
45
+ epam.com/secure/viewavatar?size=xsmall&avatarId=44407&avatarType=issuetype","name":"Epic","subtask":false,
46
+ "avatarId":44407},"project":{"self":"https://jiraeu.epam.com/rest/api/2/project/79608","id":"79608","key":
47
+ "EPMCDME","name":"EPM-CDME","projectTypeKey":"software","avatarUrls":{"48x48":"https://jiraeu.epam.com/secure/
48
+ projectavatar?avatarId=59003","24x24":"https://jiraeu.epam.com/secure/projectavatar?size=small&avatarId=59003",
49
+ "16x16":"https://jiraeu.epam.com/secure/projectavatar?size=xsmall&avatarId=59003","32x32":"https://jiraeu.epam.
50
+ com/secure/projectavatar?size=medium&avatarId=59003"}},"customfield_11000":null,"customfield_15602":null,
51
+ "customfield_13301":null,"customfield_34885":null,"customfield_34401":"0.0","customfield_34402":"0.0","customfield
52
+ _14504":null,"customfield_34400":null,"customfield_26100":null,"resolutiondate":"2024-06-21T23:10:11.256+0000","
53
+ customfield_26102":null,"customfield_30609":null,"customfield_32908":null,"watches":{"self":"https://jiraeu.epam.
54
+ com/rest/api/2/issue/EPMCDME-222/watchers","watchCount":1,"isWatching":false},"customfield_32905":null,"customfield
55
+ _30605":null,"customfield_30606":null,"customfield_32904":null,"customfield_23518":null,"customfield_32907":null,
56
+ \"customfield_30607":null,"customfield_32906":null,"customfield_30601":null,"customfield_30602":null,"customfield_
57
+ 32903":null,"customfield_12200":null,"customfield_30603":null,"customfield_32902":null,"customfield_30604":null,"
58
+ customfield_34405":{"self":"https://jiraeu.epam.com/rest/api/2/customFieldOption/50316","value":"Undefined","id":
59
+ "50316","disabled":false},"customfield_14502":{"self":"https://jiraeu.epam.com/rest/api/2/customFieldOption/12805"
60
+ ,"value":"Done","id":"12805","disabled":false},"customfield_14503":null,"customfield_14500":null,"customfield_12203
61
+ ":null,"customfield_30600":null,"customfield_14501":"CodeMie: Large datasets and multiple knowledge bases",
62
+ "customfield_33323":null,"customfield_33200":null,"customfield_11900":null,"customfield_34895":null,"customfield_
63
+ 37004":null,"customfield_37000":null,"updated":"2025-08-01T18:21:21.420+0000","customfield_25700":"2|hjyh9b:","
64
+ customfield_30616":null,"customfield_30617":null,"customfield_16110":null,"customfield_30618":null,"
65
+ timeoriginalestimate":null,"customfield_30612":null,"customfield_38102":null,"description":null,"customfield_
66
+ 31701":null,"customfield_30613":null,"customfield_32911":null,"customfield_30614":null,"customfield_38104":null,
67
+ "customfield_38105":null,"customfield_19501":null,"customfield_38106":null,"customfield_38107":null,"customfield_
68
+ 31700":null,"customfield_33325":null,"customfield_34898":{"self":"https://jiraeu.epam.com/rest/api/2/customFieldO
69
+ ption/51124","value":"No","id":"51124","disabled":false},"customfield_30610":null,"customfield_38108":null,"
70
+ customfield_34899":{"self":"https://jiraeu.epam.com/rest/api/2/customFieldOption/51126","value":"No","id":"51126",
71
+ "disabled":false},"timetracking":{},"customfield_30611":null,"customfield_38109":null,"customfield_10005":null,"
72
+ customfield_34302":null,"customfield_34423":{"self":"https://jiraeu.epam.com/rest/api/2/customFieldOption/50322",
73
+ "value":"Emakina","id":"50322","disabled":false},"customfield_33334":["Vadym_Vlasenko@epam.com(vadym_vlasenko)","
74
+ Yana_Kharchenko@epam.com(iana_gurska)"],"customfield_15816":"0.0","customfield_34545":null,"customfield_33335":
75
+ null,"customfield_34300":null,"customfield_10800":"9223372036854775807","customfield_34422":{"self":"https://jiraeu
76
+ .epam.com/rest/api/2/customFieldOption/50320","value":"No","id":"50320","disabled":false},"customfield_34301":null,
77
+ "customfield_33333":"9223372036854775807","customfield_34541":null,"customfield_22900":null,"customfield_20600":
78
+ null,"summary":"CodeMie: Work with large datasets and multiple knowledge bases","customfield_38110":null,"
79
+ customfield_38111":null,"customfield_38112":null,"customfield_30502":null,"customfield_38113":null,"customfield_
80
+ 30503":null,"customfield_38114":null,"customfield_38115":null,"customfield_38116":null,"customfield_10001":null,"
81
+ customfield_38117":null,"customfield_34549":null,"customfield_10002":null,"customfield_38118":null,"customfield_
82
+ 30500":null,"customfield_33336":{"self":"https://jiraeu.epam.com/rest/api/2/customFieldOption/45742","value":"Open
83
+ ","id":"45742","disabled":false},"customfield_34546":null,"customfield_38119":null,"customfield_10004":null,"
84
+ customfield_34547":null,"customfield_34556":null,"customfield_34553":null,"environment":null,"customfield_33100":"
85
+ N/A","duedate":null,"comment":{"comments":[],"maxResults":0,"total":0,"startAt":0},"customfield_15121":null,"
86
+ customfield_38120":null,"customfield_38122":null,"customfield_15120":null,"customfield_38123":null,"customfield_
87
+ 38124":null,"customfield_17303":null,"customfield_38125":null,"customfield_38126":null,"fixVersions":[],"
88
+ customfield_38127":null,"customfield_15129":null,"customfield_38128":null,"customfield_11200":null,"customfield_
89
+ 38129":null,"customfield_31600":"","customfield_21912":null,"customfield_38130":null,"customfield_32707":null,"
90
+ customfield_38131":null,"customfield_32706":null,"customfield_38132":null,"customfield_39100":null,"customfield_
91
+ 38133":null,"customfield_38134":null,"customfield_15114":null,"customfield_32703":null,"customfield_38135":null,
92
+ "customfield_32702":null,"customfield_38136":null,"customfield_32705":null,"customfield_38137":null,"customfield_
93
+ 32704":null,"customfield_38138":null,"priority":{"self":"https://jiraeu.epam.com/rest/api/2/priority/3","iconUrl":
94
+ "https://jiraeu.epam.com/images/icons/priorities/major.svg","name":"Major","id":"3"},"customfield_38139":null,"
95
+ customfield_30400":"{summaryBean=com.atlassian.jira.plugin.devstatus.rest.SummaryBean@1f97334[summary={pullrequest=
96
+ com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@38fa97ec[overall=PullRequestOverallBean{stateCount=0,
97
+ state='OPEN', details=PullRequestOverallDetails{openCount=0, mergedCount=0, declinedCount=0}},byInstanceType={}],
98
+ build=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@55e68473[overall=com.atlassian.jira.plugin.
99
+ devstatus.summary.beans.BuildOverallBean@394f2cd4[failedBuildCount=0,successfulBuildCount=0,unknownBuildCount=0,
100
+ count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], review=com.atlassian.jira.plugin.
101
+ devstatus.rest.SummaryItemBean@7307fb9d[overall=com.atlassian.jira.plugin.devstatus.summary.beans.ReviewsOverall
102
+ Bean@d1656dc[stateCount=0,state=<null>,dueDate=<null>,overDue=false,count=0,lastUpdated=<null>,
103
+ lastUpdatedTimestamp=<null>],byInstanceType={}], deployment-environment=com.atlassian.jira.plugin.devstatus.rest.
104
+ SummaryItemBean@6c329e11[overall=com.atlassian.jira.plugin.devstatus.summary.beans.DeploymentOverallBean@2c5b36cf
105
+ [topEnvironments=[],showProjects=false,successfulCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],
106
+ byInstanceType={}], repository=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@60ccfbca[overall=com.
107
+ atlassian.jira.plugin.devstatus.summary.beans.CommitOverallBean@5f53e1b9[count=0,lastUpdated=<null>,
108
+ lastUpdatedTimestamp=<null>],byInstanceType={}], branch=com.atlassian.jira.plugin.devstatus.rest.SummaryItem
109
+ Bean@27693e54[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BranchOverallBean@52718938[count=0,
110
+ lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}]},errors=[],configErrors=[]], devSummary
111
+ Json={\"cachedValue\":{\"errors\":[],\"configErrors\":[],\"summary\":{\"pullrequest\":{\"overall\":{\"count\":
112
+ 0,\"lastUpdated\":null,\"stateCount\":0,\"state\":\"OPEN\",\"details\":{\"openCount\":0,\"mergedCount\":0,\"
113
+ declinedCount\":0,\"total\":0},\"open\":true},\"byInstanceType\":{}},\"build\":{\"overall\":{\"count\":0,\"
114
+ lastUpdated\":null,\"failedBuildCount\":0,\"successfulBuildCount\":0,\"unknownBuildCount\":0},\"byInstanceType\":
115
+ {}},\"review\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":null,\"dueDate\":null,
116
+ \"overDue\":false,\"completed\":false},\"byInstanceType\":{}},\"deployment-environment\":{\"overall\":{\"count\":
117
+ 0,\"lastUpdated\":null,\"topEnvironments\":[],\"showProjects\":false,\"successfulCount\":0},\"byInstanceType\":{}}
118
+ ,\"repository\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}},\"branch\":{\"overall\":
119
+ {\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}}}},\"isStale\":true}}","customfield_35546":null,
120
+ "customfield_33002":null,"customfield_15109":null,"customfield_35785":null,"timeestimate":null,"versions":[],
121
+ "customfield_35540":null,"customfield_14817":null,"customfield_21901":null,"customfield_25500":null,"status":
122
+ {"self":"https://jiraeu.epam.com/rest/api/2/status/6","description":"The issue is considered finished, the
123
+ resolution is correct. Issues which are closed can be reopened.","iconUrl":"https://jiraeu.epam.com/images/icons
124
+ /statuses/closed.png","name":"Closed","id":"6","statusCategory":{"self":"https://jiraeu.epam.com/rest/api/2/
125
+ statuscategory/3","id":3,"key":"done","colorName":"success","name":"Done"}},"customfield_27804":null,"customfield_
126
+ 38140":null,"customfield_33803":null,"customfield_35308":null,"customfield_35548":null,"archiveddate":null,"
127
+ customfield_35553":null,"aggregatetimeestimate":null,"customfield_24302":null,"customfield_28902":null,"
128
+ customfield_26603":null,"customfield_26604":null,"customfield_26607":null,"creator":{"self":"https://jiraeu.epam.
129
+ com/rest/api/2/user?username=Yana_Kharchenko%40epam.com","name":"Yana_Kharchenko@epam.com","key":"iana_gurska","
130
+ emailAddress":"Yana_Kharchenko@epam.com","avatarUrls":{"48x48":"https://jiraeu.epam.com/secure/useravatar?
131
+ ownerId=iana_gurska&avatarId=82512","24x24":"https://jiraeu.epam.com/secure/useravatar?size=small&ownerId=iana_
132
+ gurska&avatarId=82512","16x16":"https://jiraeu.epam.com/secure/useravatar?size=xsmall&ownerId=iana_gurska&avatar
133
+ Id=82512","32x32":"https://jiraeu.epam.com/secure/useravatar?size=medium&ownerId=iana_gurska&avatarId=82512"},"
134
+ displayName":"Yana Kharchenko","active":true,"timeZone":"Europe/Kiev"},"customfield_26606":null,"customfield_
135
+ 38398":null,"customfield_38399":null,"customfield_34902":"(e.g. 16,6%)","customfield_34903":"(e.g. 100 € /
136
+ hour)","aggregateprogress":{"progress":0,"total":0},"customfield_30300":null,"customfield_34900":{"self":"
137
+ https://jiraeu.epam.com/rest/api/2/customFieldOption/51127","value":"Emakina Group","id":"51127","disabled":
138
+ true},"customfield_34901":"https://share.emakina.net/display/PT/Our+supplier","customfield_30301":null,"
139
+ customfield_18601":null,"customfield_25400":null,"customfield_25401":null,"timespent":null,"customfield_30317":
140
+ null,"customfield_15200":null,"customfield_35208":{"self":"https://jiraeu.epam.com/rest/api/2/customFieldOption/
141
+ 52203","value":"All browsers","id":"52203","disabled":false},"customfield_19006":null,"aggregatetimespent":null,"
142
+ customfield_19008":null,"customfield_15205":null,"customfield_35215":null,"customfield_35213":null,"customfield_
143
+ 36303":null,"customfield_35214":null,"customfield_30200":null,"customfield_36302":null,"customfield_36300":null,"
144
+ workratio":-1,"customfield_24200":null,"created":"2024-03-07T10:17:49.655+0000","customfield_32505":null,"
145
+ customfield_32506":"1_*:*_1_*:*_9204741626_*|*_6_*:*_1_*:*_0","customfield_35219":{"self":"https://jiraeu.epam.
146
+ com/rest/api/2/customFieldOption/52236","value":"No","id":"52236","disabled":false},"customfield_30201":[],"
147
+ customfield_34801":null,"customfield_36309":null,"customfield_30202":null,"customfield_30203":null,"customfield_
148
+ 10300":null,"customfield_34800":null,"customfield_35220":{"self":"https://jiraeu.epam.com/rest/api/2/custom
149
+ FieldOption/52238","value":"EUR","id":"52238","disabled":false},"customfield_35221":"- Boeken\r\n- 
150
+ Bedrijfsstempel\r\n- Fijne stiftjes voor workshops\r\n- Grote meetingroom post it’s\r\n- Schilmesjes\r\n-
151
+  Ladeblokken\r\n- Aangepaste bureaustoel\r\n- Klanten geschenken\r\n- Pizza’s voor pizzasessies\r\n-
152
+  Ontsmettende handgel\r\n- Voetenbankje\r\n- … ","customfield_29900":"0","customfield_34815":null,"
153
+ customfield_34812":"9223372036854775807","customfield_33602":null,"customfield_13004":null,"customfield_33603":
154
+ null,"customfield_15303":null,"customfield_33600":null,"customfield_34931":null,"customfield_33601":null,"
155
+ customfield_17723":null,"customfield_34940":null,"customfield_12701":"1_*:*_1_*:*_9204741626_*|*_6_*:*_1_*:*_0","
156
+ customfield_36327":null,"customfield_12700":null,"customfield_17718":null,"customfield_36202":null,"attachment":[]
157
+ ,"customfield_36681":null,"customfield_30900":null,"customfield_30901":null,"customfield_17715":null,"customfield
158
+ _17713":null,"customfield_27500":null}}
159
+ """,
160
+ ),
161
+ ]
@@ -0,0 +1,262 @@
1
+ import json
2
+
3
+ import pytest
4
+
5
+ from codemie_sdk.models.integration import (
6
+ CredentialTypes,
7
+ IntegrationType,
8
+ )
9
+ from tests import PROJECT
10
+ from tests.integrations import integrations
11
+ from tests.enums.tools import ProjectManagementTool
12
+ from tests.test_data.direct_tools.project_management_tools_test_data import (
13
+ project_management_tools_data,
14
+ )
15
+ from tests.utils.aws_parameters_store import CredentialsUtil
16
+ from tests.utils.base_utils import get_random_name
17
+ from tests.utils.constants import test_project_name
18
+
19
+
20
+ jira_tool_prompt = project_management_tools_data[0][2]
21
+ jira_tool_response = project_management_tools_data[0][3]
22
+
23
+
24
+ @pytest.mark.not_for_parallel_run
25
+ @pytest.mark.regression
26
+ @pytest.mark.tescase("EPMCDME-6708")
27
+ @pytest.mark.parametrize(
28
+ "user_integration, is_global, project_integration",
29
+ integrations,
30
+ ids=[
31
+ f"{row[0].value}-{'global' if row[1] else 'None'}-{row[2].value if row[2] else 'None'}"
32
+ for row in integrations
33
+ ],
34
+ )
35
+ def test_tool_in_workflow_should_use_user_integration_by_default(
36
+ integration_utils,
37
+ similarity_check,
38
+ user_integration,
39
+ is_global,
40
+ project_integration,
41
+ workflow_with_tool,
42
+ workflow_utils,
43
+ ):
44
+ """
45
+ Test to verify that an assistant should use USER integration by default
46
+ if integration of all types [USER, GLOBAL, PROJECT] are available.
47
+ """
48
+
49
+ for integration_type in IntegrationType:
50
+ integration_utils.delete_integrations_by_type(
51
+ integration_type, CredentialTypes.JIRA
52
+ )
53
+
54
+ integration_utils.create_user_integration(
55
+ CredentialTypes.JIRA, CredentialsUtil.jira_credentials(), test_project_name
56
+ )
57
+
58
+ if is_global:
59
+ integration_utils.create_global_integration(
60
+ CredentialTypes.JIRA,
61
+ CredentialsUtil.invalid_jira_credentials(),
62
+ test_project_name,
63
+ )
64
+
65
+ if project_integration:
66
+ integration_utils.create_project_integration(
67
+ CredentialTypes.JIRA,
68
+ CredentialsUtil.invalid_jira_credentials(),
69
+ test_project_name,
70
+ )
71
+
72
+ assistant_and_state_name = get_random_name()
73
+
74
+ test_workflow = workflow_with_tool(
75
+ assistant_and_state_name,
76
+ ProjectManagementTool.JIRA,
77
+ project_name=test_project_name,
78
+ )
79
+
80
+ response = workflow_utils.execute_workflow(
81
+ test_workflow.id,
82
+ assistant_and_state_name,
83
+ user_input=json.dumps(jira_tool_prompt),
84
+ )
85
+ similarity_check.check_similarity(response, jira_tool_response, 95)
86
+
87
+
88
+ @pytest.mark.not_for_parallel_run
89
+ @pytest.mark.regression
90
+ @pytest.mark.tescase("EPMCDME-6708")
91
+ def test_tool_in_workflow_with_global_and_project_integration(
92
+ integration_utils,
93
+ similarity_check,
94
+ workflow_with_tool,
95
+ workflow_utils,
96
+ ):
97
+ """
98
+ Test to verify that an assistant should use GLOBAL integration if USER integration is not available,
99
+ and both GLOBAL and PROJECT integrations exist.
100
+ GLOBAL integration has valid credentials, PROJECT has invalid.
101
+ """
102
+ for integration_type in IntegrationType:
103
+ integration_utils.delete_integrations_by_type(
104
+ integration_type, CredentialTypes.JIRA
105
+ )
106
+
107
+ # Create only global (valid) and project (invalid) integrations.
108
+ # Global integration is created in project which is different from the project of the assistant.
109
+ integration_utils.create_global_integration(
110
+ CredentialTypes.JIRA, CredentialsUtil.jira_credentials(), PROJECT
111
+ )
112
+
113
+ integration_utils.create_project_integration(
114
+ CredentialTypes.JIRA,
115
+ CredentialsUtil.invalid_jira_credentials(),
116
+ test_project_name,
117
+ )
118
+
119
+ assistant_and_state_name = get_random_name()
120
+
121
+ test_workflow = workflow_with_tool(
122
+ assistant_and_state_name,
123
+ ProjectManagementTool.JIRA,
124
+ project_name=test_project_name,
125
+ )
126
+
127
+ response = workflow_utils.execute_workflow(
128
+ test_workflow.id,
129
+ assistant_and_state_name,
130
+ user_input=json.dumps(jira_tool_prompt),
131
+ )
132
+ similarity_check.check_similarity(response, jira_tool_response, 95)
133
+
134
+
135
+ @pytest.mark.not_for_parallel_run
136
+ @pytest.mark.regression
137
+ @pytest.mark.tescase("EPMCDME-6708")
138
+ def test_tool_in_workflow_with_project_integration_only(
139
+ integration_utils,
140
+ similarity_check,
141
+ workflow_with_tool,
142
+ workflow_utils,
143
+ ):
144
+ """
145
+ Test to verify that an assistant should use PROJECT integration if it is the only one available.
146
+ """
147
+ for integration_type in IntegrationType:
148
+ integration_utils.delete_integrations_by_type(
149
+ integration_type, CredentialTypes.JIRA
150
+ )
151
+
152
+ # Create project integration only
153
+ integration_utils.create_project_integration(
154
+ CredentialTypes.JIRA, CredentialsUtil.jira_credentials(), test_project_name
155
+ )
156
+
157
+ assistant_and_state_name = get_random_name()
158
+
159
+ test_workflow = workflow_with_tool(
160
+ assistant_and_state_name,
161
+ ProjectManagementTool.JIRA,
162
+ project_name=test_project_name,
163
+ )
164
+
165
+ response = workflow_utils.execute_workflow(
166
+ test_workflow.id,
167
+ assistant_and_state_name,
168
+ user_input=json.dumps(jira_tool_prompt),
169
+ )
170
+ similarity_check.check_similarity(response, jira_tool_response, 95)
171
+
172
+
173
+ @pytest.mark.not_for_parallel_run
174
+ @pytest.mark.regression
175
+ def test_tool_in_workflow_with_global_valid_and_user_invalid_integration(
176
+ integration_utils,
177
+ similarity_check,
178
+ workflow_with_tool,
179
+ workflow_utils,
180
+ ):
181
+ """
182
+ Test to verify that an assistant should use GLOBAL integration if USER integration is not valid,
183
+ and both GLOBAL and USER integrations exist.
184
+ GLOBAL integration has valid credentials, USER has invalid.
185
+ """
186
+ for integration_type in IntegrationType:
187
+ integration_utils.delete_integrations_by_type(
188
+ integration_type, CredentialTypes.JIRA
189
+ )
190
+
191
+ # Create global valid integration.
192
+ integration_utils.create_global_integration(
193
+ CredentialTypes.JIRA, CredentialsUtil.jira_credentials(), PROJECT
194
+ )
195
+
196
+ # Create user invalid integration.
197
+ integration_utils.create_user_integration(
198
+ CredentialTypes.JIRA,
199
+ CredentialsUtil.invalid_jira_credentials(),
200
+ PROJECT,
201
+ )
202
+
203
+ assistant_and_state_name = get_random_name()
204
+
205
+ test_workflow = workflow_with_tool(
206
+ assistant_and_state_name,
207
+ ProjectManagementTool.JIRA,
208
+ project_name=test_project_name,
209
+ )
210
+
211
+ response = workflow_utils.execute_workflow(
212
+ test_workflow.id,
213
+ assistant_and_state_name,
214
+ user_input=json.dumps(jira_tool_prompt),
215
+ )
216
+ similarity_check.check_similarity(response, jira_tool_response, 95)
217
+
218
+
219
+ @pytest.mark.not_for_parallel_run
220
+ @pytest.mark.regression
221
+ def test_tool_in_workflow_with_project_valid_and_user_invalid_integration(
222
+ integration_utils,
223
+ similarity_check,
224
+ workflow_with_tool,
225
+ workflow_utils,
226
+ ):
227
+ """
228
+ Test to verify that an assistant should use PROJECT integration if USER integration is not valid,
229
+ and both PROJECT and USER integrations exist.
230
+ PROJECT integration has valid credentials, USER has invalid.
231
+ """
232
+ for integration_type in IntegrationType:
233
+ integration_utils.delete_integrations_by_type(
234
+ integration_type, CredentialTypes.JIRA
235
+ )
236
+
237
+ # Create project valid integration.
238
+ integration_utils.create_project_integration(
239
+ CredentialTypes.JIRA, CredentialsUtil.jira_credentials(), test_project_name
240
+ )
241
+
242
+ # Create user invalid integration.
243
+ integration_utils.create_user_integration(
244
+ CredentialTypes.JIRA,
245
+ CredentialsUtil.invalid_jira_credentials(),
246
+ PROJECT,
247
+ )
248
+
249
+ assistant_and_state_name = get_random_name()
250
+
251
+ test_workflow = workflow_with_tool(
252
+ assistant_and_state_name,
253
+ ProjectManagementTool.JIRA,
254
+ project_name=test_project_name,
255
+ )
256
+
257
+ response = workflow_utils.execute_workflow(
258
+ test_workflow.id,
259
+ assistant_and_state_name,
260
+ user_input=json.dumps(jira_tool_prompt),
261
+ )
262
+ similarity_check.check_similarity(response, jira_tool_response, 95)