codemie-test-harness 0.1.147__py3-none-any.whl → 0.1.149__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.

Files changed (24) hide show
  1. codemie_test_harness/tests/assistant/tools/access_management/__init__.py +0 -0
  2. codemie_test_harness/tests/assistant/tools/access_management/test_keycloak_tool.py +25 -0
  3. codemie_test_harness/tests/assistant/tools/datamanagement/test_assistant_with_data_management_tools.py +2 -1
  4. codemie_test_harness/tests/conftest.py +31 -16
  5. codemie_test_harness/tests/enums/tools.py +7 -0
  6. codemie_test_harness/tests/integrations/project/test_default_integrations.py +37 -0
  7. codemie_test_harness/tests/integrations/project/test_project_integrations.py +3 -0
  8. codemie_test_harness/tests/integrations/user/test_default_integrations.py +37 -0
  9. codemie_test_harness/tests/integrations/user/test_user_integrations.py +3 -0
  10. codemie_test_harness/tests/test_data/direct_tools/keycloak_tool_test_data.py +120 -0
  11. codemie_test_harness/tests/test_data/integrations_test_data.py +4 -0
  12. codemie_test_harness/tests/test_data/keycloak_tool_test_data.py +35 -0
  13. codemie_test_harness/tests/utils/aws_parameters_store.py +28 -0
  14. codemie_test_harness/tests/workflow/assistant_tools/access_management/__init__.py +0 -0
  15. codemie_test_harness/tests/workflow/assistant_tools/access_management/test_workflow_with_assistant_with_keycloak_tool.py +28 -0
  16. codemie_test_harness/tests/workflow/assistant_tools/data_management/test_workflow_with_assistant_with_data_management_tools.py +3 -1
  17. codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_access_management_tool.py +74 -0
  18. codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management/__init__.py +0 -0
  19. codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management/test_workflow_with_keycloak_tool.py +29 -0
  20. codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/test_workflow_with_data_management_tools.py +3 -1
  21. {codemie_test_harness-0.1.147.dist-info → codemie_test_harness-0.1.149.dist-info}/METADATA +2 -2
  22. {codemie_test_harness-0.1.147.dist-info → codemie_test_harness-0.1.149.dist-info}/RECORD +24 -15
  23. {codemie_test_harness-0.1.147.dist-info → codemie_test_harness-0.1.149.dist-info}/WHEEL +0 -0
  24. {codemie_test_harness-0.1.147.dist-info → codemie_test_harness-0.1.149.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,25 @@
1
+ import pytest
2
+
3
+ from codemie_test_harness.tests.enums.tools import Toolkit, AccessManagementTool
4
+ from codemie_test_harness.tests.test_data.keycloak_tool_test_data import (
5
+ KEYCLOAK_TOOL_PROMPT,
6
+ KEYCLOAK_TOOL_RESPONSE,
7
+ )
8
+
9
+
10
+ @pytest.mark.regression
11
+ def test_assistant_with_keycloak_tool(
12
+ assistant_utils,
13
+ assistant,
14
+ keycloak_integration,
15
+ similarity_check,
16
+ ):
17
+ keycloak_assistant = assistant(
18
+ Toolkit.ACCESS_MANAGEMENT,
19
+ AccessManagementTool.KEYCLOAK,
20
+ settings=keycloak_integration,
21
+ )
22
+
23
+ response = assistant_utils.ask_assistant(keycloak_assistant, KEYCLOAK_TOOL_PROMPT)
24
+
25
+ similarity_check.check_similarity(response, KEYCLOAK_TOOL_RESPONSE)
@@ -4,6 +4,7 @@ import uuid
4
4
  import pytest
5
5
  from codemie_sdk.models.integration import CredentialTypes
6
6
 
7
+ from codemie_test_harness.tests.enums.integrations import DataBaseDialect
7
8
  from codemie_test_harness.tests.enums.tools import (
8
9
  Toolkit,
9
10
  DataManagementTool,
@@ -46,7 +47,7 @@ def test_create_assistant_with_elastic_tool(
46
47
  @pytest.mark.parametrize(
47
48
  "db_dialect",
48
49
  sql_tools_test_data,
49
- ids=[f"{row}" for row in sql_tools_test_data],
50
+ ids=[DataBaseDialect.MY_SQL, DataBaseDialect.POSTGRES, DataBaseDialect.MS_SQL],
50
51
  )
51
52
  @pytest.mark.testcase("EPMCDME-6132")
52
53
  @pytest.mark.skipif(
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import subprocess
3
3
  import uuid
4
+ import atexit
4
5
  from time import sleep
5
6
  from typing import List, Optional
6
7
  from pathlib import Path
@@ -56,6 +57,25 @@ from codemie_test_harness.tests.utils.yaml_utils import (
56
57
  logger = setup_logger(__name__)
57
58
 
58
59
 
60
+ def force_finish_rp_launch():
61
+ from reportportal_client._internal.local import current
62
+
63
+ client = current()
64
+ if client and hasattr(client, "finish_launch") and hasattr(client, "launch_uuid"):
65
+ if (
66
+ client.launch_uuid
67
+ and hasattr(client, "use_own_launch")
68
+ and client.use_own_launch
69
+ ):
70
+ from datetime import datetime, timezone
71
+
72
+ end_time = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
73
+ client.finish_launch(end_time)
74
+
75
+
76
+ atexit.register(force_finish_rp_launch)
77
+
78
+
59
79
  def pytest_configure(config):
60
80
  """Pytest hook that runs before test collection starts.
61
81
 
@@ -93,22 +113,6 @@ def pytest_configure(config):
93
113
  )
94
114
 
95
115
 
96
- def pytest_unconfigure(config):
97
- """Called before test process is exited - cleanup ReportPortal and other resources."""
98
- from reportportal_client._internal.local import current
99
- from datetime import datetime, timezone
100
-
101
- client = current()
102
- if client and hasattr(client, "finish_launch") and hasattr(client, "launch_uuid"):
103
- if (
104
- client.launch_uuid
105
- and hasattr(client, "use_own_launch")
106
- and client.use_own_launch
107
- ):
108
- end_time = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
109
- client.finish_launch(end_time)
110
-
111
-
112
116
  @pytest.fixture(scope="session")
113
117
  def client():
114
118
  return get_client()
@@ -379,6 +383,17 @@ def service_now_integration(integration_utils):
379
383
  integration_utils.delete_integration(integration)
380
384
 
381
385
 
386
+ @pytest.fixture(scope="module")
387
+ def keycloak_integration(integration_utils):
388
+ credential_values = CredentialsUtil.keycloak_credentials()
389
+ integration = integration_utils.create_integration(
390
+ CredentialTypes.KEYCLOAK, credential_values
391
+ )
392
+ yield integration
393
+ if integration:
394
+ integration_utils.delete_integration(integration)
395
+
396
+
382
397
  @pytest.fixture(scope="function")
383
398
  def general_integration(integration_utils):
384
399
  created_integration: Optional[Integration] = None
@@ -19,6 +19,7 @@ class Toolkit(str, Enum):
19
19
  OPEN_API = "OpenAPI"
20
20
  DATA_MANAGEMENT = "Data Management"
21
21
  SERVICENOW = "IT Service Management"
22
+ ACCESS_MANAGEMENT = "Access Management"
22
23
 
23
24
 
24
25
  class GitTool(str, Enum):
@@ -178,3 +179,9 @@ class ServiceNowTool(str, Enum):
178
179
  """Enum for ServiceNow tool names."""
179
180
 
180
181
  SERVICE_NOW = "servicenow_table_tool"
182
+
183
+
184
+ class AccessManagementTool(str, Enum):
185
+ """Enum for Access Management tool names."""
186
+
187
+ KEYCLOAK = "keycloak"
@@ -12,6 +12,7 @@ from codemie_test_harness.tests.enums.tools import (
12
12
  ProjectManagementTool,
13
13
  CodeBaseTool,
14
14
  CloudTool,
15
+ AccessManagementTool,
15
16
  )
16
17
  from codemie_test_harness.tests.test_data.ado_test_plan_tools_test_data import (
17
18
  ado_test_plan_get_test_data,
@@ -23,6 +24,10 @@ from codemie_test_harness.tests.test_data.codebase_tools_test_data import (
23
24
  from codemie_test_harness.tests.test_data.git_tools_test_data import (
24
25
  list_branches_set_active_branch_test_data,
25
26
  )
27
+ from codemie_test_harness.tests.test_data.keycloak_tool_test_data import (
28
+ KEYCLOAK_TOOL_PROMPT,
29
+ KEYCLOAK_TOOL_RESPONSE,
30
+ )
26
31
  from codemie_test_harness.tests.test_data.notification_tools_test_data import (
27
32
  EMAIL_TOOL_PROMPT,
28
33
  EMAIL_RESPONSE,
@@ -270,3 +275,35 @@ def test_assistant_with_default_integration_email(
270
275
  response = assistant_utils.ask_assistant(email_assistant, EMAIL_TOOL_PROMPT)
271
276
 
272
277
  similarity_check.check_similarity(response, EMAIL_RESPONSE)
278
+
279
+
280
+ @pytest.mark.regression
281
+ def test_assistant_with_default_integration_keycloak(
282
+ general_integration,
283
+ integration_utils,
284
+ assistant,
285
+ assistant_utils,
286
+ similarity_check,
287
+ ):
288
+ # delete existing integrations of the same type
289
+ for integration_type in IntegrationType:
290
+ integration_utils.delete_integrations_by_type(
291
+ integration_type, CredentialTypes.KEYCLOAK, test_project_name
292
+ )
293
+ # create a new integration
294
+ general_integration(
295
+ integration_type=IntegrationType.PROJECT,
296
+ credential_type=CredentialTypes.KEYCLOAK,
297
+ credential_values=CredentialsUtil.keycloak_credentials(),
298
+ project_name=test_project_name,
299
+ )
300
+ # create an assistant
301
+ keycloak_assistant = assistant(
302
+ Toolkit.ACCESS_MANAGEMENT,
303
+ AccessManagementTool.KEYCLOAK,
304
+ project_name=test_project_name,
305
+ )
306
+
307
+ response = assistant_utils.ask_assistant(keycloak_assistant, KEYCLOAK_TOOL_PROMPT)
308
+
309
+ similarity_check.check_similarity(response, KEYCLOAK_TOOL_RESPONSE)
@@ -46,6 +46,7 @@ from codemie_test_harness.tests.utils.base_utils import (
46
46
  f"Project integration: {CredentialTypes.TELEGRAM}",
47
47
  f"Project integration: {CredentialTypes.SERVICE_NOW}",
48
48
  f"Project integration: {CredentialTypes.KUBERNETES}",
49
+ f"Project integration: {CredentialTypes.KEYCLOAK}",
49
50
  ],
50
51
  )
51
52
  @pytest.mark.regression
@@ -148,6 +149,7 @@ def test_integration_after_creation(
148
149
  f"Project integration: {CredentialTypes.TELEGRAM}",
149
150
  f"Project integration: {CredentialTypes.SERVICE_NOW}",
150
151
  f"Project integration: {CredentialTypes.KUBERNETES}",
152
+ f"Project integration: {CredentialTypes.KEYCLOAK}",
151
153
  ],
152
154
  )
153
155
  @pytest.mark.tescase("EPMCDME-2376")
@@ -333,6 +335,7 @@ def test_integration_during_creation_with_invalid_credentials(
333
335
  f"Project integration: {CredentialTypes.TELEGRAM}",
334
336
  f"Project integration: {CredentialTypes.SERVICE_NOW}",
335
337
  f"Project integration: {CredentialTypes.KUBERNETES}",
338
+ f"Project integration: {CredentialTypes.KEYCLOAK}",
336
339
  ],
337
340
  )
338
341
  @pytest.mark.tescase("EPMCDME-2374")
@@ -12,6 +12,7 @@ from codemie_test_harness.tests.enums.tools import (
12
12
  ProjectManagementTool,
13
13
  CodeBaseTool,
14
14
  CloudTool,
15
+ AccessManagementTool,
15
16
  )
16
17
  from codemie_test_harness.tests.test_data.ado_test_plan_tools_test_data import (
17
18
  ado_test_plan_get_test_data,
@@ -23,6 +24,10 @@ from codemie_test_harness.tests.test_data.codebase_tools_test_data import (
23
24
  from codemie_test_harness.tests.test_data.git_tools_test_data import (
24
25
  list_branches_set_active_branch_test_data,
25
26
  )
27
+ from codemie_test_harness.tests.test_data.keycloak_tool_test_data import (
28
+ KEYCLOAK_TOOL_PROMPT,
29
+ KEYCLOAK_TOOL_RESPONSE,
30
+ )
26
31
  from codemie_test_harness.tests.test_data.notification_tools_test_data import (
27
32
  EMAIL_TOOL_PROMPT,
28
33
  EMAIL_RESPONSE,
@@ -270,3 +275,35 @@ def test_assistant_with_default_integration_email(
270
275
  response = assistant_utils.ask_assistant(email_assistant, EMAIL_TOOL_PROMPT)
271
276
 
272
277
  similarity_check.check_similarity(response, EMAIL_RESPONSE)
278
+
279
+
280
+ @pytest.mark.regression
281
+ def test_assistant_with_default_integration_keycloak(
282
+ general_integration,
283
+ integration_utils,
284
+ assistant,
285
+ assistant_utils,
286
+ similarity_check,
287
+ ):
288
+ # delete existing integrations of the same type
289
+ for integration_type in IntegrationType:
290
+ integration_utils.delete_integrations_by_type(
291
+ integration_type, CredentialTypes.KEYCLOAK, test_project_name
292
+ )
293
+ # create a new integration
294
+ general_integration(
295
+ integration_type=IntegrationType.USER,
296
+ credential_type=CredentialTypes.KEYCLOAK,
297
+ credential_values=CredentialsUtil.keycloak_credentials(),
298
+ project_name=test_project_name,
299
+ )
300
+ # create an assistant
301
+ keycloak_assistant = assistant(
302
+ Toolkit.ACCESS_MANAGEMENT,
303
+ AccessManagementTool.KEYCLOAK,
304
+ project_name=test_project_name,
305
+ )
306
+
307
+ response = assistant_utils.ask_assistant(keycloak_assistant, KEYCLOAK_TOOL_PROMPT)
308
+
309
+ similarity_check.check_similarity(response, KEYCLOAK_TOOL_RESPONSE)
@@ -46,6 +46,7 @@ from codemie_test_harness.tests.utils.base_utils import (
46
46
  f"User integration: {CredentialTypes.TELEGRAM}",
47
47
  f"User integration: {CredentialTypes.SERVICE_NOW}",
48
48
  f"User integration: {CredentialTypes.KUBERNETES}",
49
+ f"User integration: {CredentialTypes.KEYCLOAK}",
49
50
  ],
50
51
  )
51
52
  @pytest.mark.regression
@@ -150,6 +151,7 @@ def test_integration_after_creation(
150
151
  f"User integration: {CredentialTypes.TELEGRAM}",
151
152
  f"User integration: {CredentialTypes.SERVICE_NOW}",
152
153
  f"User integration: {CredentialTypes.KUBERNETES}",
154
+ f"User integration: {CredentialTypes.KEYCLOAK}",
153
155
  ],
154
156
  )
155
157
  @pytest.mark.tescase("EPMCDME-2375")
@@ -336,6 +338,7 @@ def test_integration_during_creation_with_invalid_credentials(
336
338
  f"User integration: {CredentialTypes.TELEGRAM}",
337
339
  f"User integration: {CredentialTypes.SERVICE_NOW}",
338
340
  f"User integration: {CredentialTypes.KUBERNETES}",
341
+ f"User integration: {CredentialTypes.KEYCLOAK}",
339
342
  ],
340
343
  )
341
344
  @pytest.mark.tescase("EPMCDME-2373")
@@ -0,0 +1,120 @@
1
+ KEYCLOAK_DIRECT_TOOL_PROMPT = {
2
+ "method": "GET",
3
+ "relative_url": "/users/profile",
4
+ "params": "",
5
+ }
6
+
7
+ KEYCLOAK_DIRECT_TOOL_RESPONSE = """
8
+ {
9
+ "attributes": [
10
+ {
11
+ "name": "username",
12
+ "displayName": "${username}",
13
+ "validations": {
14
+ "length": {
15
+ "min": 3,
16
+ "max": 255
17
+ },
18
+ "username-prohibited-characters": {},
19
+ "up-username-not-idn-homograph": {}
20
+ },
21
+ "permissions": {
22
+ "view": [
23
+ "admin",
24
+ "user"
25
+ ],
26
+ "edit": [
27
+ "admin",
28
+ "user"
29
+ ]
30
+ },
31
+ "multivalued": false
32
+ },
33
+ {
34
+ "name": "email",
35
+ "displayName": "${email}",
36
+ "validations": {
37
+ "email": {},
38
+ "length": {
39
+ "max": 255
40
+ }
41
+ },
42
+ "required": {
43
+ "roles": [
44
+ "user"
45
+ ]
46
+ },
47
+ "permissions": {
48
+ "view": [
49
+ "admin",
50
+ "user"
51
+ ],
52
+ "edit": [
53
+ "admin",
54
+ "user"
55
+ ]
56
+ },
57
+ "multivalued": false
58
+ },
59
+ {
60
+ "name": "firstName",
61
+ "displayName": "${firstName}",
62
+ "validations": {
63
+ "length": {
64
+ "max": 255
65
+ },
66
+ "person-name-prohibited-characters": {}
67
+ },
68
+ "required": {
69
+ "roles": [
70
+ "user"
71
+ ]
72
+ },
73
+ "permissions": {
74
+ "view": [
75
+ "admin",
76
+ "user"
77
+ ],
78
+ "edit": [
79
+ "admin",
80
+ "user"
81
+ ]
82
+ },
83
+ "multivalued": false
84
+ },
85
+ {
86
+ "name": "lastName",
87
+ "displayName": "${lastName}",
88
+ "validations": {
89
+ "length": {
90
+ "max": 255
91
+ },
92
+ "person-name-prohibited-characters": {}
93
+ },
94
+ "required": {
95
+ "roles": [
96
+ "user"
97
+ ]
98
+ },
99
+ "permissions": {
100
+ "view": [
101
+ "admin",
102
+ "user"
103
+ ],
104
+ "edit": [
105
+ "admin",
106
+ "user"
107
+ ]
108
+ },
109
+ "multivalued": false
110
+ }
111
+ ],
112
+ "groups": [
113
+ {
114
+ "name": "user-metadata",
115
+ "displayHeader": "User metadata",
116
+ "displayDescription": "Attributes, which refer to user metadata"
117
+ }
118
+ ]
119
+ }
120
+ """
@@ -91,6 +91,10 @@ valid_integrations = [
91
91
  CredentialTypes.SERVICE_NOW,
92
92
  CredentialsUtil.servicenow_credentials(),
93
93
  ),
94
+ (
95
+ CredentialTypes.KEYCLOAK,
96
+ CredentialsUtil.keycloak_credentials(),
97
+ ),
94
98
  pytest.param(
95
99
  CredentialTypes.KUBERNETES,
96
100
  CredentialsUtil.kubernetes_credentials(),
@@ -0,0 +1,35 @@
1
+ KEYCLOAK_TOOL_PROMPT = "Get information about all users"
2
+
3
+ KEYCLOAK_TOOL_RESPONSE = """
4
+ 1. **User 1:**
5
+ - **ID:** 8246cdb1-a480-487c-9d6a-6873331dcffe
6
+ - **Username:** codemie-autotests-1@epam.com
7
+ - **First Name:** Codemie
8
+ - **Last Name:** Autotests-1
9
+ - **Email:** codemie-autotests-1@epam.com
10
+ - **Email Verified:** false
11
+ - **Created Timestamp:** 1756980669356
12
+ - **Enabled:** true
13
+ - **Access Permissions:**
14
+ - Manage Group Membership: true
15
+ - View: true
16
+ - Map Roles: true
17
+ - Impersonate: true
18
+ - Manage: true
19
+
20
+ 2. **User 2:**
21
+ - **ID:** e5710bb7-e3a5-4910-bd64-e9dcb75b1bfa
22
+ - **Username:** codemie-autotests-2@epam.com
23
+ - **First Name:** Codemie
24
+ - **Last Name:** Autotests-2
25
+ - **Email:** codemie-autotests-2@epam.com
26
+ - **Email Verified:** false
27
+ - **Created Timestamp:** 1756980685292
28
+ - **Enabled:** true
29
+ - **Access Permissions:**
30
+ - Manage Group Membership: true
31
+ - View: true
32
+ - Map Roles: true
33
+ - Impersonate: true
34
+ - Manage: true
35
+ """
@@ -564,6 +564,34 @@ class CredentialsUtil:
564
564
  cred.value = "wrong_token"
565
565
  return credentials
566
566
 
567
+ @staticmethod
568
+ def keycloak_credentials() -> List[CredentialValues]:
569
+ keycloak_creds = AwsParameterStore.get_cloud_provider_credentials("keycloak")
570
+ return [
571
+ CredentialValues(
572
+ key="url", value=keycloak_creds.get("keycloak_admin", {}).get("url")
573
+ ),
574
+ CredentialValues(
575
+ key="realm", value=keycloak_creds.get("keycloak_admin", {}).get("realm")
576
+ ),
577
+ CredentialValues(
578
+ key="client_id",
579
+ value=keycloak_creds.get("keycloak_admin", {}).get("client_id"),
580
+ ),
581
+ CredentialValues(
582
+ key="client_secret",
583
+ value=keycloak_creds.get("keycloak_admin", {}).get("client_secret"),
584
+ ),
585
+ ]
586
+
587
+ @staticmethod
588
+ def invalid_keycloak_credentials() -> List[CredentialValues]:
589
+ credentials = CredentialsUtil.keycloak_credentials()
590
+ for cred in credentials:
591
+ if cred.key == "client_secret":
592
+ cred.value = "wrong_secret"
593
+ return credentials
594
+
567
595
  @staticmethod
568
596
  def jira_cloud_jql() -> str:
569
597
  jira_creds = AwsParameterStore.get_cloud_provider_credentials("jira")
@@ -0,0 +1,28 @@
1
+ import pytest
2
+
3
+ from codemie_test_harness.tests.enums.tools import Toolkit, AccessManagementTool
4
+ from codemie_test_harness.tests.test_data.keycloak_tool_test_data import (
5
+ KEYCLOAK_TOOL_PROMPT,
6
+ KEYCLOAK_TOOL_RESPONSE,
7
+ )
8
+
9
+
10
+ @pytest.mark.regression
11
+ def test_workflow_with_assistant_with_keycloak_tool(
12
+ assistant,
13
+ workflow_with_assistant,
14
+ workflow_utils,
15
+ keycloak_integration,
16
+ similarity_check,
17
+ ):
18
+ assistant = assistant(
19
+ Toolkit.ACCESS_MANAGEMENT,
20
+ AccessManagementTool.KEYCLOAK,
21
+ settings=keycloak_integration,
22
+ )
23
+
24
+ workflow_with_assistant = workflow_with_assistant(assistant, KEYCLOAK_TOOL_PROMPT)
25
+ response = workflow_utils.execute_workflow(
26
+ workflow_with_assistant.id, assistant.name
27
+ )
28
+ similarity_check.check_similarity(response, KEYCLOAK_TOOL_RESPONSE)
@@ -3,6 +3,8 @@ import os
3
3
  import pytest
4
4
 
5
5
  from codemie_sdk.models.integration import CredentialTypes
6
+
7
+ from codemie_test_harness.tests.enums.integrations import DataBaseDialect
6
8
  from codemie_test_harness.tests.enums.tools import DataManagementTool, Toolkit
7
9
  from codemie_test_harness.tests.test_data.data_management_tools_test_data import (
8
10
  ELASTIC_TOOL_TASK,
@@ -46,7 +48,7 @@ def test_workflow_with_assistant_with_elastic_tools(
46
48
  @pytest.mark.parametrize(
47
49
  "db_dialect",
48
50
  sql_tools_test_data,
49
- ids=[f"{row}" for row in sql_tools_test_data],
51
+ ids=[DataBaseDialect.MY_SQL, DataBaseDialect.POSTGRES, DataBaseDialect.MS_SQL],
50
52
  )
51
53
  @pytest.mark.skipif(
52
54
  os.getenv("ENV") == "local", reason="Skipping this test on local environment"
@@ -0,0 +1,74 @@
1
+ import copy
2
+ import json
3
+ import random
4
+
5
+ import pytest
6
+
7
+ from codemie_test_harness.tests.enums.tools import AccessManagementTool
8
+ from codemie_test_harness.tests.test_data.direct_tools.keycloak_tool_test_data import (
9
+ KEYCLOAK_DIRECT_TOOL_PROMPT,
10
+ KEYCLOAK_DIRECT_TOOL_RESPONSE,
11
+ )
12
+ from codemie_test_harness.tests.utils.base_utils import get_random_name
13
+
14
+
15
+ @pytest.mark.regression
16
+ @pytest.mark.skip(reason="Need to investigate codemie-tools for fix")
17
+ def test_workflow_with_keycloak_tool_direct(
18
+ keycloak_integration, workflow_utils, workflow_with_tool, similarity_check
19
+ ):
20
+ assistant_and_state_name = get_random_name()
21
+
22
+ test_workflow = workflow_with_tool(
23
+ assistant_and_state_name,
24
+ AccessManagementTool.KEYCLOAK,
25
+ integration=keycloak_integration,
26
+ )
27
+ response = workflow_utils.execute_workflow(
28
+ test_workflow.id,
29
+ assistant_and_state_name,
30
+ user_input=json.dumps(KEYCLOAK_DIRECT_TOOL_PROMPT),
31
+ )
32
+ similarity_check.check_similarity(response, KEYCLOAK_DIRECT_TOOL_RESPONSE)
33
+
34
+
35
+ @pytest.mark.regression
36
+ def test_workflow_with_keycloak_tool_with_hardcoded_args(
37
+ keycloak_integration, workflow_utils, workflow_with_tool, similarity_check
38
+ ):
39
+ assistant_and_state_name = get_random_name()
40
+
41
+ test_workflow = workflow_with_tool(
42
+ assistant_and_state_name,
43
+ AccessManagementTool.KEYCLOAK,
44
+ integration=keycloak_integration,
45
+ tool_args=KEYCLOAK_DIRECT_TOOL_PROMPT,
46
+ )
47
+ response = workflow_utils.execute_workflow(
48
+ test_workflow.id, assistant_and_state_name
49
+ )
50
+ similarity_check.check_similarity(response, KEYCLOAK_DIRECT_TOOL_RESPONSE)
51
+
52
+
53
+ @pytest.mark.regression
54
+ @pytest.mark.skip(reason="Need to investigate codemie-tools for fix")
55
+ def test_workflow_with_keycloak_tool_with_overriding_args(
56
+ keycloak_integration, workflow_utils, workflow_with_tool, similarity_check
57
+ ):
58
+ assistant_and_state_name = get_random_name()
59
+
60
+ args_copy = copy.deepcopy(KEYCLOAK_DIRECT_TOOL_PROMPT)
61
+ args_copy = {key: random.randint(1, 10) for key in args_copy}
62
+
63
+ test_workflow = workflow_with_tool(
64
+ assistant_and_state_name,
65
+ AccessManagementTool.KEYCLOAK,
66
+ integration=keycloak_integration,
67
+ tool_args=args_copy,
68
+ )
69
+ response = workflow_utils.execute_workflow(
70
+ test_workflow.id,
71
+ assistant_and_state_name,
72
+ user_input=json.dumps(KEYCLOAK_DIRECT_TOOL_PROMPT),
73
+ )
74
+ similarity_check.check_similarity(response, KEYCLOAK_DIRECT_TOOL_RESPONSE)
@@ -0,0 +1,29 @@
1
+ import pytest
2
+
3
+ from codemie_test_harness.tests.enums.tools import AccessManagementTool
4
+ from codemie_test_harness.tests.test_data.keycloak_tool_test_data import (
5
+ KEYCLOAK_TOOL_PROMPT,
6
+ KEYCLOAK_TOOL_RESPONSE,
7
+ )
8
+ from codemie_test_harness.tests.utils.base_utils import get_random_name
9
+
10
+
11
+ @pytest.mark.regression
12
+ def test_workflow_with_virtual_assistant_with_keycloak_tool(
13
+ keycloak_integration,
14
+ workflow_with_virtual_assistant,
15
+ workflow_utils,
16
+ similarity_check,
17
+ ):
18
+ assistant_and_state_name = get_random_name()
19
+
20
+ test_workflow = workflow_with_virtual_assistant(
21
+ assistant_and_state_name,
22
+ AccessManagementTool.KEYCLOAK,
23
+ integration=keycloak_integration,
24
+ task=KEYCLOAK_TOOL_PROMPT,
25
+ )
26
+ response = workflow_utils.execute_workflow(
27
+ test_workflow.id, assistant_and_state_name
28
+ )
29
+ similarity_check.check_similarity(response, KEYCLOAK_TOOL_RESPONSE)
@@ -3,6 +3,8 @@ import os
3
3
  import pytest
4
4
 
5
5
  from codemie_sdk.models.integration import CredentialTypes
6
+
7
+ from codemie_test_harness.tests.enums.integrations import DataBaseDialect
6
8
  from codemie_test_harness.tests.enums.tools import DataManagementTool
7
9
  from codemie_test_harness.tests.test_data.data_management_tools_test_data import (
8
10
  ELASTIC_TOOL_TASK,
@@ -51,7 +53,7 @@ def test_workflow_with_elastic_tools(
51
53
  @pytest.mark.parametrize(
52
54
  "db_dialect",
53
55
  sql_tools_test_data,
54
- ids=[f"{row}" for row in sql_tools_test_data],
56
+ ids=[DataBaseDialect.MY_SQL, DataBaseDialect.POSTGRES, DataBaseDialect.MS_SQL],
55
57
  )
56
58
  @pytest.mark.skipif(
57
59
  os.getenv("ENV") == "local", reason="Skipping this test on local environment"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: codemie-test-harness
3
- Version: 0.1.147
3
+ Version: 0.1.149
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.147)
16
+ Requires-Dist: codemie-sdk-python (==0.1.149)
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)
@@ -23,6 +23,8 @@ codemie_test_harness/tests/assistant/default_integrations/test_default_integrati
23
23
  codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_with_datasource.py,sha256=pYbhC7wSt5ekL-OERggxiuaAZYvxAtT2QdKiKfLVzi4,9809
24
24
  codemie_test_harness/tests/assistant/test_assistants.py,sha256=eSLZ6hIaQZcFs32V65_ZZwhsbZztslmoxgV2BzyPy6I,12157
25
25
  codemie_test_harness/tests/assistant/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ codemie_test_harness/tests/assistant/tools/access_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ codemie_test_harness/tests/assistant/tools/access_management/test_keycloak_tool.py,sha256=-SahC4w2EwgTpE4K6h3IIFOMr48ONtp7MyFvw1ZR7v0,695
26
28
  codemie_test_harness/tests/assistant/tools/ado/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
29
  codemie_test_harness/tests/assistant/tools/ado/test_assistant_for_ado_test_plan_tools.py,sha256=jfkd8KoVRhyQ5PnjU5gdtmHp34oaayBFxFE-B329RDc,4925
28
30
  codemie_test_harness/tests/assistant/tools/ado/test_assistant_for_ado_wiki_tools.py,sha256=3WHax84U7DKT0rn377eIV_cmSJcTSJQxecRBaEcUMts,3464
@@ -32,7 +34,7 @@ codemie_test_harness/tests/assistant/tools/cloud/test_cloud_tools.py,sha256=mymG
32
34
  codemie_test_harness/tests/assistant/tools/codebase/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
35
  codemie_test_harness/tests/assistant/tools/codebase/test_codebase_tools.py,sha256=KbQqf9fQGN1sPM7nKTkIsq07NpYClSm7O1wAp3rGQJg,1624
34
36
  codemie_test_harness/tests/assistant/tools/datamanagement/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- codemie_test_harness/tests/assistant/tools/datamanagement/test_assistant_with_data_management_tools.py,sha256=I8SMMWt0ci6vF1mIbd_pYJF--zGiy8L7rutwwz7tMAw,2576
37
+ codemie_test_harness/tests/assistant/tools/datamanagement/test_assistant_with_data_management_tools.py,sha256=DQ13-x2hduqakOIayvCpgKaq95D60FhFdTs1VjIe3A8,2683
36
38
  codemie_test_harness/tests/assistant/tools/filemanagement/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
39
  codemie_test_harness/tests/assistant/tools/filemanagement/test_assistant_with_file_management_tools.py,sha256=CrnJMvfQS3qPxpklaYBonof3W1J729wt1UefaM4tL3g,3826
38
40
  codemie_test_harness/tests/assistant/tools/git/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -55,7 +57,7 @@ codemie_test_harness/tests/assistant/tools/servicenow/__init__.py,sha256=47DEQpj
55
57
  codemie_test_harness/tests/assistant/tools/servicenow/test_servicenow_tools.py,sha256=JV_n6COaCsd0_rxQBJvvLZfPdo8BsCbG8Ti-UpzFvfQ,644
56
58
  codemie_test_harness/tests/assistant/tools/vcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
59
  codemie_test_harness/tests/assistant/tools/vcs/test_assistant_with_vcs_tools.py,sha256=5-QybLWmYSqHG4Sqr-IN-vNcStV4skSwCJQN44Nfats,922
58
- codemie_test_harness/tests/conftest.py,sha256=QPqNG47RE7tqzqMW21VMlEeijY2q9PYQNwbTauDkTmY,28638
60
+ codemie_test_harness/tests/conftest.py,sha256=8B0Jf0xoX2pt64WQY4h0p7eKfReypRWpftZ50jSDdG0,28966
59
61
  codemie_test_harness/tests/conversations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
62
  codemie_test_harness/tests/conversations/test_conversations_endpoints.py,sha256=SQraRVrjjE4mYTs4EuGzMrO96DuOuKTiYQ4ZRBhHx70,3913
61
63
  codemie_test_harness/tests/e2e/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -63,14 +65,14 @@ codemie_test_harness/tests/e2e/test_e2e.py,sha256=RUvSu_uNInU1OFfkNft3-Cmd0KZV7J
63
65
  codemie_test_harness/tests/enums/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
66
  codemie_test_harness/tests/enums/integrations.py,sha256=hG_cEKN0N5gtGHyrh3wuCpNAWhPyNOJaKsAw16iNshg,164
65
67
  codemie_test_harness/tests/enums/model_types.py,sha256=k07srBYIF9uRwbLWY9pBNYzi0s3Jdt8ajES9p-UmrYo,1185
66
- codemie_test_harness/tests/enums/tools.py,sha256=pGsHRGmPcLUqNtR2bKdRgsxdHw7HylXOWd9CPKPGOb0,5072
68
+ codemie_test_harness/tests/enums/tools.py,sha256=wt8dAKXOA3YOuyzwmTi1oIGVNoGFWfRNllPfenN2nh8,5233
67
69
  codemie_test_harness/tests/integrations/__init__.py,sha256=5vnZbxvYQ1Y91O8DJG3QfBHWcdYsMii59cMBzsvHBCg,237
68
70
  codemie_test_harness/tests/integrations/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- codemie_test_harness/tests/integrations/project/test_default_integrations.py,sha256=A83Gk6hBl4DTC28UeC9945fwgl3KO2JE80A8Ts2yI4k,8712
70
- codemie_test_harness/tests/integrations/project/test_project_integrations.py,sha256=egg2c4W2JPuEMiFEqtuLcYliUY2CS5Gpd7ly254nhro,13925
71
+ codemie_test_harness/tests/integrations/project/test_default_integrations.py,sha256=PcX06eyD5X1Ph-UxR0HtTz_OCwIizL_XJI-SKEd5uvA,9906
72
+ codemie_test_harness/tests/integrations/project/test_project_integrations.py,sha256=-rL_egAXw7Z0Z3ecnjyPsIGseuJG2unuJa8mroiB_0M,14105
71
73
  codemie_test_harness/tests/integrations/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- codemie_test_harness/tests/integrations/user/test_default_integrations.py,sha256=0sSpbTTz_kxBIMJQl6gt0NMA-M6zuobi9D8YHuM39w0,8694
73
- codemie_test_harness/tests/integrations/user/test_user_integrations.py,sha256=Gz7-lvrbahikAnh5jhZpA1tzrZegkYBRx-R4xjOiU7c,13771
74
+ codemie_test_harness/tests/integrations/user/test_default_integrations.py,sha256=YpkEqJ9DLHMh0pp4xec6RZxa7IoDdU4885hPOPq1cG0,9885
75
+ codemie_test_harness/tests/integrations/user/test_user_integrations.py,sha256=TjtPLOs6OrzyJwZNNJlEtOG-udej1QHyhGQt1VqqeHc,13942
74
76
  codemie_test_harness/tests/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
77
  codemie_test_harness/tests/llm/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
78
  codemie_test_harness/tests/llm/assistants/test_llm.py,sha256=pLF1ETtwQI3y2uz08wfhr3fGIADFAbbGxEwosHhLjzE,3246
@@ -106,6 +108,7 @@ codemie_test_harness/tests/test_data/direct_tools/codebase_tools_test_data.py,sh
106
108
  codemie_test_harness/tests/test_data/direct_tools/data_management_tools_test_data.py,sha256=Eeba0oxKUmBEin2Scbv3VnLOEQRLmK6QR0qk5cRYRNM,1583
107
109
  codemie_test_harness/tests/test_data/direct_tools/direct_tools_test_data.py,sha256=y9awl1IA6EXGXyz05QzcNdt5z7Rk9J5LzIbfi4CFE3s,3233
108
110
  codemie_test_harness/tests/test_data/direct_tools/file_management_tools_test_data.py,sha256=8Y8D_pmHVnzhSnYNeiJng3dQYj5k1GkBZ8-BLHlB5kE,1380
111
+ codemie_test_harness/tests/test_data/direct_tools/keycloak_tool_test_data.py,sha256=6lU1YC6DSV6e_3VNQEVvtA4o3_lSFgOQik4T0u-TF1g,2979
109
112
  codemie_test_harness/tests/test_data/direct_tools/notification_tools_test_data.py,sha256=Blr7qIBEMxAh2_WRvFQr1hYt6wnez03v1b2SpEWha-o,1533
110
113
  codemie_test_harness/tests/test_data/direct_tools/open_api_tools_test_data.py,sha256=UwXVrwD3MnOIS2wwikNDk1EZNYR14p_IjhOOUwjYHOI,497
111
114
  codemie_test_harness/tests/test_data/direct_tools/project_management_tools_test_data.py,sha256=Nugg9rk-qnDFwwY_ISU0mxuz7nTxTHTMcyvp8ZRtjC8,20869
@@ -134,7 +137,8 @@ codemie_test_harness/tests/test_data/files/test.yaml,sha256=3NDQyzwkRM5d6eCYMScN
134
137
  codemie_test_harness/tests/test_data/git_tools_test_data.py,sha256=7U05vLqkh5uJ0l_KJeHis549id1Of99K0jCsWOb0nXM,8485
135
138
  codemie_test_harness/tests/test_data/google_datasource_test_data.py,sha256=fhMJVTU0udINKtBQ750c_c279NzibGiZumnIaCPLtBo,511
136
139
  codemie_test_harness/tests/test_data/index_test_data.py,sha256=jSJ7YSNisFADONRKSwkLUhuOLrSRe_fZisWdjflOjE4,996
137
- codemie_test_harness/tests/test_data/integrations_test_data.py,sha256=dPadoQCurmOtqhq5hcPe1hhuSZ6NYa4IZwdWMiMx2Tw,6599
140
+ codemie_test_harness/tests/test_data/integrations_test_data.py,sha256=Iu48BhQZsRgsBmvNyyDj_vwaUvK1JwEtb5KpgTkhQnc,6694
141
+ codemie_test_harness/tests/test_data/keycloak_tool_test_data.py,sha256=uF8YqHGgLpQVxKdpKXLe-7F-ipEGQiHHh28nZvvVGM8,1244
138
142
  codemie_test_harness/tests/test_data/llm_test_data.py,sha256=SJIBGtC8Ha7T0S7G9598PvHzzQIR6gg4HnNCtgYmLYw,2200
139
143
  codemie_test_harness/tests/test_data/mcp_server_test_data.py,sha256=m6PImS_J2gPNY5ijf9MG_eOX_LxJjTZ23AXQDgaK_Oc,7151
140
144
  codemie_test_harness/tests/test_data/notification_tools_test_data.py,sha256=Rqo-5u7PULDJddidjqcJfnsus6-JbDABk9147JX0pqs,855
@@ -211,7 +215,7 @@ codemie_test_harness/tests/ui/test_workflow_templates.py,sha256=A6eaR-7M5VXoPlUJ
211
215
  codemie_test_harness/tests/ui/test_workflows.py,sha256=_UQT9soqxV68aqFt0V3KJ3iJFA55kzE891EJIER9kk8,3464
212
216
  codemie_test_harness/tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
217
  codemie_test_harness/tests/utils/assistant_utils.py,sha256=jy3dFF4ZiT22Wippl1a5jIEAAyJ71P0ss8AIHPefz6k,6511
214
- codemie_test_harness/tests/utils/aws_parameters_store.py,sha256=uwhvrk4qYYWLILS082SFAqQaGmhrW6aPmmJo-dPTN84,20637
218
+ codemie_test_harness/tests/utils/aws_parameters_store.py,sha256=fiOFvgdhEOdq0zO6xStQUPYrxkhkUCo5SS8ZejVbLBI,21711
215
219
  codemie_test_harness/tests/utils/base_utils.py,sha256=tfishCUxO3iEuasWOifoF9_fXspm4uIHS26Ryqu-NxA,5998
216
220
  codemie_test_harness/tests/utils/client_factory.py,sha256=Yyg2iXe7g7fIfIUbOH8z_8qgVo_lB-nYLOfCV5ONXFw,641
217
221
  codemie_test_harness/tests/utils/constants.py,sha256=lb6mgLjt0GM85Khs18rL1jnE9ILx8L811ykNhpF6IDA,1111
@@ -235,6 +239,8 @@ codemie_test_harness/tests/utils/workflow_utils.py,sha256=qKvI2fFiSo_RirFiWLyGRC
235
239
  codemie_test_harness/tests/utils/yaml_utils.py,sha256=y9fUf4u4G4SoCktPOwaC5x71iaDKhktbz_XUfI9kNis,1661
236
240
  codemie_test_harness/tests/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
241
  codemie_test_harness/tests/workflow/assistant_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
242
+ codemie_test_harness/tests/workflow/assistant_tools/access_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
+ codemie_test_harness/tests/workflow/assistant_tools/access_management/test_workflow_with_assistant_with_keycloak_tool.py,sha256=qkW4wUqdWJDIL3zmrvJ1TvY8xgq0hE1EcEBXkyuUVRo,832
238
244
  codemie_test_harness/tests/workflow/assistant_tools/ado/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
239
245
  codemie_test_harness/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_test_plan_tools.py,sha256=3vco4wU0sEj6e9KXnPj812Ltxc44LB_GiRzm4GVxi-8,4893
240
246
  codemie_test_harness/tests/workflow/assistant_tools/ado/test_workflow_with_assistant_with_ado_wiki_tools.py,sha256=Tz5OUah3FaFBliKuBdlS1Wn9nwWDAkGkJRKgFPjJAU0,3454
@@ -244,7 +250,7 @@ codemie_test_harness/tests/workflow/assistant_tools/cloud/test_workflow_with_ass
244
250
  codemie_test_harness/tests/workflow/assistant_tools/codebase/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
251
  codemie_test_harness/tests/workflow/assistant_tools/codebase/test_worfklow_with_assistant_codebase_tools.py,sha256=d_4CJbikU5QzeRjwk0GyY0HE_iI_ojSG0gNCss2SVHQ,1962
246
252
  codemie_test_harness/tests/workflow/assistant_tools/data_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
247
- codemie_test_harness/tests/workflow/assistant_tools/data_management/test_workflow_with_assistant_with_data_management_tools.py,sha256=jBTVA13jvHxa4a926PD5Ljlf4FSHvptjMVdE_6MUFoY,2849
253
+ codemie_test_harness/tests/workflow/assistant_tools/data_management/test_workflow_with_assistant_with_data_management_tools.py,sha256=jDpCLegJDi8D_iMtoPu5K7ooa-sqBOwqyh-91lT-wzE,2957
248
254
  codemie_test_harness/tests/workflow/assistant_tools/default_integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
249
255
  codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool.py,sha256=05YTrr9IqR9gR-jPVdNNzbSiwWbK7yHOUunPttRwoTk,8153
250
256
  codemie_test_harness/tests/workflow/assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py,sha256=QmgFweqg-pSQs29O4jnanVlUZjoVejqbO35oqV2MGzk,8419
@@ -276,6 +282,7 @@ codemie_test_harness/tests/workflow/direct_tools_calling/__init__.py,sha256=47DE
276
282
  codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
277
283
  codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool.py,sha256=uWhdAnVqk-WrSB9QrHZyJLIQPvLhHayfEL1OZugU00A,8232
278
284
  codemie_test_harness/tests/workflow/direct_tools_calling/default_integrations/test_default_integrations_for_tool_kit.py,sha256=kbCExIw1BBgNjmLNPpwJMncyNvA2Lq3xZQoTVr6K9QI,8437
285
+ codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_access_management_tool.py,sha256=HtAYfbVhIAmVY200avGS4_ziNR0geKAx8U35Vtf9ICE,2507
279
286
  codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_ado_test_plan_tools.py,sha256=UUSgyhE7GKAkyCQMUm7Y2VkQkiR7-Fr5robBpLvoH-M,2685
280
287
  codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_ado_wiki_tools.py,sha256=FOQEqm0u4UvRAfjJFo2API-qySGy4sqKD-hwE1Lm6Js,2744
281
288
  codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_ado_work_item_tools.py,sha256=4h3z3tUTqBLZPjDQCbnW2CkoGX0gEjZlDkYbLHSilZA,2799
@@ -292,6 +299,8 @@ codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_serv
292
299
  codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_vcs_tools.py,sha256=8qKTiFvL0wNBpDv5mUalsYfPVCfq_eoTzQTQdMs5SOY,3005
293
300
  codemie_test_harness/tests/workflow/test_workflows.py,sha256=haGPZqkV0PPBENN_pHc6x6gn84VdjWOrniuadFATKA0,1141
294
301
  codemie_test_harness/tests/workflow/virtual_assistant_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
302
+ codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
303
+ codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management/test_workflow_with_keycloak_tool.py,sha256=aHz3MFmDHU6yNLdSAc9NMEAJsEo3hLMS7SO3YKX0ORc,921
295
304
  codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
305
  codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_test_plan_tools.py,sha256=ge7JJVTWrdoXsGq8nhgbC4fATnq4YP-fVZm2ZSMJ6eo,5785
297
306
  codemie_test_harness/tests/workflow/virtual_assistant_tools/ado/test_workflow_with_ado_wiki_tools.py,sha256=zsGsfdVoNcMLLajy0WQ-I-Y7ZEXbdBq2Y1_wtWuxKeY,4148
@@ -301,7 +310,7 @@ codemie_test_harness/tests/workflow/virtual_assistant_tools/cloud/test_workflow_
301
310
  codemie_test_harness/tests/workflow/virtual_assistant_tools/codebase/__init__.py,sha256=kCzJLR44IfB9ZncaLNOtyUqlzvyOG3BXclsDFS5MaQg,46
302
311
  codemie_test_harness/tests/workflow/virtual_assistant_tools/codebase/test_workflow_with_codebase_tools.py,sha256=xDuIH03ZEsnbUTp3Rz775mcXZPKrTvXbCQXpDNypWIk,3091
303
312
  codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/__init__.py,sha256=Vk3MBJAVfJA8uxRJdY3aH_5lCWkTBcE_l9xw5FzUt7I,53
304
- codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/test_workflow_with_data_management_tools.py,sha256=IXPDzG3ZCpTPi-HjD5h72NQbgdb8a1gRIi9929P6W0M,3137
313
+ codemie_test_harness/tests/workflow/virtual_assistant_tools/data_management/test_workflow_with_data_management_tools.py,sha256=Znpd8WsAfsemSgAGaOBz2Ou2x31USdga3n5NIkDHt_U,3245
305
314
  codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
306
315
  codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool.py,sha256=mQKv_R98aiUXlPWhQruPBLPtin4gvBq8aykOvQOLRxc,8091
307
316
  codemie_test_harness/tests/workflow/virtual_assistant_tools/default_integrations/test_default_integrations_for_tool_kit.py,sha256=gC0Qj98ekHtKRRiNgtZTkb2k8TJJ5_ZVzvUQ_9r6k6c,8377
@@ -327,7 +336,7 @@ codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/__init__.
327
336
  codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py,sha256=Cxe5Yuy9JE_IEsnQOThpVIZQqpfLuHfDkF6JwLngDc8,890
328
337
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
338
  codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py,sha256=tm0NvUf_UtzLPTYJWykYpsNoxoVs-Eh80guDmRwImwg,1106
330
- codemie_test_harness-0.1.147.dist-info/METADATA,sha256=p7qB5ZcTZmcvbvhjgT0nucOvVLqFQRZV54T2v0GCy68,8998
331
- codemie_test_harness-0.1.147.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
332
- codemie_test_harness-0.1.147.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
333
- codemie_test_harness-0.1.147.dist-info/RECORD,,
339
+ codemie_test_harness-0.1.149.dist-info/METADATA,sha256=OI6YmvBvp-IxM9jGPP-TzNi50E-WmAOagHFD7b9nHFg,8998
340
+ codemie_test_harness-0.1.149.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
341
+ codemie_test_harness-0.1.149.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
342
+ codemie_test_harness-0.1.149.dist-info/RECORD,,