codemie-test-harness 0.1.147__py3-none-any.whl → 0.1.148__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 (21) 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/conftest.py +11 -0
  4. codemie_test_harness/tests/enums/tools.py +7 -0
  5. codemie_test_harness/tests/integrations/project/test_default_integrations.py +37 -0
  6. codemie_test_harness/tests/integrations/project/test_project_integrations.py +3 -0
  7. codemie_test_harness/tests/integrations/user/test_default_integrations.py +37 -0
  8. codemie_test_harness/tests/integrations/user/test_user_integrations.py +3 -0
  9. codemie_test_harness/tests/test_data/direct_tools/keycloak_tool_test_data.py +120 -0
  10. codemie_test_harness/tests/test_data/integrations_test_data.py +4 -0
  11. codemie_test_harness/tests/test_data/keycloak_tool_test_data.py +35 -0
  12. codemie_test_harness/tests/utils/aws_parameters_store.py +28 -0
  13. codemie_test_harness/tests/workflow/assistant_tools/access_management/__init__.py +0 -0
  14. codemie_test_harness/tests/workflow/assistant_tools/access_management/test_workflow_with_assistant_with_keycloak_tool.py +28 -0
  15. codemie_test_harness/tests/workflow/direct_tools_calling/test_workflow_with_access_management_tool.py +74 -0
  16. codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management/__init__.py +0 -0
  17. codemie_test_harness/tests/workflow/virtual_assistant_tools/access_management/test_workflow_with_keycloak_tool.py +29 -0
  18. {codemie_test_harness-0.1.147.dist-info → codemie_test_harness-0.1.148.dist-info}/METADATA +2 -2
  19. {codemie_test_harness-0.1.147.dist-info → codemie_test_harness-0.1.148.dist-info}/RECORD +21 -12
  20. {codemie_test_harness-0.1.147.dist-info → codemie_test_harness-0.1.148.dist-info}/WHEEL +0 -0
  21. {codemie_test_harness-0.1.147.dist-info → codemie_test_harness-0.1.148.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)
@@ -379,6 +379,17 @@ def service_now_integration(integration_utils):
379
379
  integration_utils.delete_integration(integration)
380
380
 
381
381
 
382
+ @pytest.fixture(scope="module")
383
+ def keycloak_integration(integration_utils):
384
+ credential_values = CredentialsUtil.keycloak_credentials()
385
+ integration = integration_utils.create_integration(
386
+ CredentialTypes.KEYCLOAK, credential_values
387
+ )
388
+ yield integration
389
+ if integration:
390
+ integration_utils.delete_integration(integration)
391
+
392
+
382
393
  @pytest.fixture(scope="function")
383
394
  def general_integration(integration_utils):
384
395
  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)
@@ -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)
@@ -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.148
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.148)
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
@@ -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=BRq0QKY9OHpqUGe6D-sfckCS8EW6vdHn8iDcb3qYOsk,28994
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
@@ -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
@@ -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.148.dist-info/METADATA,sha256=2y0snuPrG9cFdIjTDfnL5Z71Nhaq026a-Kjei0P-36k,8998
340
+ codemie_test_harness-0.1.148.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
341
+ codemie_test_harness-0.1.148.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
342
+ codemie_test_harness-0.1.148.dist-info/RECORD,,