lucius-mcp 0.2.2__py3-none-any.whl → 0.3.0__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.
- {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/METADATA +8 -1
- {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/RECORD +38 -19
- src/client/__init__.py +10 -0
- src/client/client.py +289 -8
- src/client/generated/README.md +11 -0
- src/client/generated/__init__.py +4 -0
- src/client/generated/api/__init__.py +2 -0
- src/client/generated/api/test_layer_controller_api.py +1746 -0
- src/client/generated/api/test_layer_schema_controller_api.py +1415 -0
- src/client/generated/docs/TestLayerControllerApi.md +407 -0
- src/client/generated/docs/TestLayerSchemaControllerApi.md +350 -0
- src/client/overridden/test_case_custom_fields_v2.py +254 -0
- src/services/__init__.py +8 -0
- src/services/launch_service.py +278 -0
- src/services/search_service.py +1 -1
- src/services/test_case_service.py +512 -92
- src/services/test_layer_service.py +416 -0
- src/tools/__init__.py +35 -0
- src/tools/create_test_case.py +38 -19
- src/tools/create_test_layer.py +33 -0
- src/tools/create_test_layer_schema.py +39 -0
- src/tools/delete_test_layer.py +31 -0
- src/tools/delete_test_layer_schema.py +31 -0
- src/tools/get_custom_fields.py +2 -1
- src/tools/get_test_case_custom_fields.py +34 -0
- src/tools/launches.py +112 -0
- src/tools/list_test_layer_schemas.py +43 -0
- src/tools/list_test_layers.py +38 -0
- src/tools/search.py +6 -3
- src/tools/test_layers.py +21 -0
- src/tools/update_test_case.py +48 -23
- src/tools/update_test_layer.py +33 -0
- src/tools/update_test_layer_schema.py +40 -0
- src/utils/__init__.py +4 -0
- src/utils/links.py +13 -0
- {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/WHEEL +0 -0
- {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/entry_points.txt +0 -0
- {lucius_mcp-0.2.2.dist-info → lucius_mcp-0.3.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# src.client.generated.TestLayerSchemaControllerApi
|
|
2
|
+
|
|
3
|
+
All URIs are relative to *http://localhost*
|
|
4
|
+
|
|
5
|
+
Method | HTTP request | Description
|
|
6
|
+
------------- | ------------- | -------------
|
|
7
|
+
[**create8**](TestLayerSchemaControllerApi.md#create8) | **POST** /api/testlayerschema | Create a new test layer schema
|
|
8
|
+
[**delete8**](TestLayerSchemaControllerApi.md#delete8) | **DELETE** /api/testlayerschema/{id} | Delete test layer schema by id
|
|
9
|
+
[**find_all6**](TestLayerSchemaControllerApi.md#find_all6) | **GET** /api/testlayerschema | Find all test layer schemas for given project
|
|
10
|
+
[**find_one7**](TestLayerSchemaControllerApi.md#find_one7) | **GET** /api/testlayerschema/{id} | Find test layer schema by id
|
|
11
|
+
[**patch8**](TestLayerSchemaControllerApi.md#patch8) | **PATCH** /api/testlayerschema/{id} | Patch test layer schema
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# **create8**
|
|
15
|
+
> TestLayerSchemaDto create8(test_layer_schema_create_dto)
|
|
16
|
+
|
|
17
|
+
Create a new test layer schema
|
|
18
|
+
|
|
19
|
+
### Example
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
import src.client.generated
|
|
24
|
+
from src.client.generated.models.test_layer_schema_create_dto import TestLayerSchemaCreateDto
|
|
25
|
+
from src.client.generated.models.test_layer_schema_dto import TestLayerSchemaDto
|
|
26
|
+
from src.client.generated.rest import ApiException
|
|
27
|
+
from pprint import pprint
|
|
28
|
+
|
|
29
|
+
# Defining the host is optional and defaults to http://localhost
|
|
30
|
+
# See configuration.py for a list of all supported configuration parameters.
|
|
31
|
+
configuration = src.client.generated.Configuration(
|
|
32
|
+
host = "http://localhost"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# Enter a context with an instance of the API client
|
|
37
|
+
async with src.client.generated.ApiClient(configuration) as api_client:
|
|
38
|
+
# Create an instance of the API class
|
|
39
|
+
api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
|
|
40
|
+
test_layer_schema_create_dto = src.client.generated.TestLayerSchemaCreateDto() # TestLayerSchemaCreateDto |
|
|
41
|
+
|
|
42
|
+
try:
|
|
43
|
+
# Create a new test layer schema
|
|
44
|
+
api_response = await api_instance.create8(test_layer_schema_create_dto)
|
|
45
|
+
print("The response of TestLayerSchemaControllerApi->create8:\n")
|
|
46
|
+
pprint(api_response)
|
|
47
|
+
except Exception as e:
|
|
48
|
+
print("Exception when calling TestLayerSchemaControllerApi->create8: %s\n" % e)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### Parameters
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
Name | Type | Description | Notes
|
|
57
|
+
------------- | ------------- | ------------- | -------------
|
|
58
|
+
**test_layer_schema_create_dto** | [**TestLayerSchemaCreateDto**](TestLayerSchemaCreateDto.md)| |
|
|
59
|
+
|
|
60
|
+
### Return type
|
|
61
|
+
|
|
62
|
+
[**TestLayerSchemaDto**](TestLayerSchemaDto.md)
|
|
63
|
+
|
|
64
|
+
### Authorization
|
|
65
|
+
|
|
66
|
+
No authorization required
|
|
67
|
+
|
|
68
|
+
### HTTP request headers
|
|
69
|
+
|
|
70
|
+
- **Content-Type**: application/json
|
|
71
|
+
- **Accept**: */*
|
|
72
|
+
|
|
73
|
+
### HTTP response details
|
|
74
|
+
|
|
75
|
+
| Status code | Description | Response headers |
|
|
76
|
+
|-------------|-------------|------------------|
|
|
77
|
+
**200** | OK | - |
|
|
78
|
+
|
|
79
|
+
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
80
|
+
|
|
81
|
+
# **delete8**
|
|
82
|
+
> delete8(id)
|
|
83
|
+
|
|
84
|
+
Delete test layer schema by id
|
|
85
|
+
|
|
86
|
+
### Example
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
import src.client.generated
|
|
91
|
+
from src.client.generated.rest import ApiException
|
|
92
|
+
from pprint import pprint
|
|
93
|
+
|
|
94
|
+
# Defining the host is optional and defaults to http://localhost
|
|
95
|
+
# See configuration.py for a list of all supported configuration parameters.
|
|
96
|
+
configuration = src.client.generated.Configuration(
|
|
97
|
+
host = "http://localhost"
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
# Enter a context with an instance of the API client
|
|
102
|
+
async with src.client.generated.ApiClient(configuration) as api_client:
|
|
103
|
+
# Create an instance of the API class
|
|
104
|
+
api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
|
|
105
|
+
id = 56 # int |
|
|
106
|
+
|
|
107
|
+
try:
|
|
108
|
+
# Delete test layer schema by id
|
|
109
|
+
await api_instance.delete8(id)
|
|
110
|
+
except Exception as e:
|
|
111
|
+
print("Exception when calling TestLayerSchemaControllerApi->delete8: %s\n" % e)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
### Parameters
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
Name | Type | Description | Notes
|
|
120
|
+
------------- | ------------- | ------------- | -------------
|
|
121
|
+
**id** | **int**| |
|
|
122
|
+
|
|
123
|
+
### Return type
|
|
124
|
+
|
|
125
|
+
void (empty response body)
|
|
126
|
+
|
|
127
|
+
### Authorization
|
|
128
|
+
|
|
129
|
+
No authorization required
|
|
130
|
+
|
|
131
|
+
### HTTP request headers
|
|
132
|
+
|
|
133
|
+
- **Content-Type**: Not defined
|
|
134
|
+
- **Accept**: Not defined
|
|
135
|
+
|
|
136
|
+
### HTTP response details
|
|
137
|
+
|
|
138
|
+
| Status code | Description | Response headers |
|
|
139
|
+
|-------------|-------------|------------------|
|
|
140
|
+
**204** | No Content | - |
|
|
141
|
+
|
|
142
|
+
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
143
|
+
|
|
144
|
+
# **find_all6**
|
|
145
|
+
> PageTestLayerSchemaDto find_all6(project_id, page=page, size=size, sort=sort)
|
|
146
|
+
|
|
147
|
+
Find all test layer schemas for given project
|
|
148
|
+
|
|
149
|
+
### Example
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
```python
|
|
153
|
+
import src.client.generated
|
|
154
|
+
from src.client.generated.models.page_test_layer_schema_dto import PageTestLayerSchemaDto
|
|
155
|
+
from src.client.generated.rest import ApiException
|
|
156
|
+
from pprint import pprint
|
|
157
|
+
|
|
158
|
+
# Defining the host is optional and defaults to http://localhost
|
|
159
|
+
# See configuration.py for a list of all supported configuration parameters.
|
|
160
|
+
configuration = src.client.generated.Configuration(
|
|
161
|
+
host = "http://localhost"
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
# Enter a context with an instance of the API client
|
|
166
|
+
async with src.client.generated.ApiClient(configuration) as api_client:
|
|
167
|
+
# Create an instance of the API class
|
|
168
|
+
api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
|
|
169
|
+
project_id = 56 # int |
|
|
170
|
+
page = 0 # int | Zero-based page index (0..N) (optional) (default to 0)
|
|
171
|
+
size = 10 # int | The size of the page to be returned (optional) (default to 10)
|
|
172
|
+
sort = [id,ASC] # List[str] | Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria are supported. (optional) (default to [id,ASC])
|
|
173
|
+
|
|
174
|
+
try:
|
|
175
|
+
# Find all test layer schemas for given project
|
|
176
|
+
api_response = await api_instance.find_all6(project_id, page=page, size=size, sort=sort)
|
|
177
|
+
print("The response of TestLayerSchemaControllerApi->find_all6:\n")
|
|
178
|
+
pprint(api_response)
|
|
179
|
+
except Exception as e:
|
|
180
|
+
print("Exception when calling TestLayerSchemaControllerApi->find_all6: %s\n" % e)
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
### Parameters
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
Name | Type | Description | Notes
|
|
189
|
+
------------- | ------------- | ------------- | -------------
|
|
190
|
+
**project_id** | **int**| |
|
|
191
|
+
**page** | **int**| Zero-based page index (0..N) | [optional] [default to 0]
|
|
192
|
+
**size** | **int**| The size of the page to be returned | [optional] [default to 10]
|
|
193
|
+
**sort** | [**List[str]**](str.md)| Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria are supported. | [optional] [default to [id,ASC]]
|
|
194
|
+
|
|
195
|
+
### Return type
|
|
196
|
+
|
|
197
|
+
[**PageTestLayerSchemaDto**](PageTestLayerSchemaDto.md)
|
|
198
|
+
|
|
199
|
+
### Authorization
|
|
200
|
+
|
|
201
|
+
No authorization required
|
|
202
|
+
|
|
203
|
+
### HTTP request headers
|
|
204
|
+
|
|
205
|
+
- **Content-Type**: Not defined
|
|
206
|
+
- **Accept**: */*
|
|
207
|
+
|
|
208
|
+
### HTTP response details
|
|
209
|
+
|
|
210
|
+
| Status code | Description | Response headers |
|
|
211
|
+
|-------------|-------------|------------------|
|
|
212
|
+
**200** | OK | - |
|
|
213
|
+
|
|
214
|
+
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
215
|
+
|
|
216
|
+
# **find_one7**
|
|
217
|
+
> TestLayerSchemaDto find_one7(id)
|
|
218
|
+
|
|
219
|
+
Find test layer schema by id
|
|
220
|
+
|
|
221
|
+
### Example
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
```python
|
|
225
|
+
import src.client.generated
|
|
226
|
+
from src.client.generated.models.test_layer_schema_dto import TestLayerSchemaDto
|
|
227
|
+
from src.client.generated.rest import ApiException
|
|
228
|
+
from pprint import pprint
|
|
229
|
+
|
|
230
|
+
# Defining the host is optional and defaults to http://localhost
|
|
231
|
+
# See configuration.py for a list of all supported configuration parameters.
|
|
232
|
+
configuration = src.client.generated.Configuration(
|
|
233
|
+
host = "http://localhost"
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
# Enter a context with an instance of the API client
|
|
238
|
+
async with src.client.generated.ApiClient(configuration) as api_client:
|
|
239
|
+
# Create an instance of the API class
|
|
240
|
+
api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
|
|
241
|
+
id = 56 # int |
|
|
242
|
+
|
|
243
|
+
try:
|
|
244
|
+
# Find test layer schema by id
|
|
245
|
+
api_response = await api_instance.find_one7(id)
|
|
246
|
+
print("The response of TestLayerSchemaControllerApi->find_one7:\n")
|
|
247
|
+
pprint(api_response)
|
|
248
|
+
except Exception as e:
|
|
249
|
+
print("Exception when calling TestLayerSchemaControllerApi->find_one7: %s\n" % e)
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
### Parameters
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
Name | Type | Description | Notes
|
|
258
|
+
------------- | ------------- | ------------- | -------------
|
|
259
|
+
**id** | **int**| |
|
|
260
|
+
|
|
261
|
+
### Return type
|
|
262
|
+
|
|
263
|
+
[**TestLayerSchemaDto**](TestLayerSchemaDto.md)
|
|
264
|
+
|
|
265
|
+
### Authorization
|
|
266
|
+
|
|
267
|
+
No authorization required
|
|
268
|
+
|
|
269
|
+
### HTTP request headers
|
|
270
|
+
|
|
271
|
+
- **Content-Type**: Not defined
|
|
272
|
+
- **Accept**: */*
|
|
273
|
+
|
|
274
|
+
### HTTP response details
|
|
275
|
+
|
|
276
|
+
| Status code | Description | Response headers |
|
|
277
|
+
|-------------|-------------|------------------|
|
|
278
|
+
**200** | OK | - |
|
|
279
|
+
|
|
280
|
+
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
281
|
+
|
|
282
|
+
# **patch8**
|
|
283
|
+
> TestLayerSchemaDto patch8(id, test_layer_schema_patch_dto)
|
|
284
|
+
|
|
285
|
+
Patch test layer schema
|
|
286
|
+
|
|
287
|
+
### Example
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
```python
|
|
291
|
+
import src.client.generated
|
|
292
|
+
from src.client.generated.models.test_layer_schema_dto import TestLayerSchemaDto
|
|
293
|
+
from src.client.generated.models.test_layer_schema_patch_dto import TestLayerSchemaPatchDto
|
|
294
|
+
from src.client.generated.rest import ApiException
|
|
295
|
+
from pprint import pprint
|
|
296
|
+
|
|
297
|
+
# Defining the host is optional and defaults to http://localhost
|
|
298
|
+
# See configuration.py for a list of all supported configuration parameters.
|
|
299
|
+
configuration = src.client.generated.Configuration(
|
|
300
|
+
host = "http://localhost"
|
|
301
|
+
)
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
# Enter a context with an instance of the API client
|
|
305
|
+
async with src.client.generated.ApiClient(configuration) as api_client:
|
|
306
|
+
# Create an instance of the API class
|
|
307
|
+
api_instance = src.client.generated.TestLayerSchemaControllerApi(api_client)
|
|
308
|
+
id = 56 # int |
|
|
309
|
+
test_layer_schema_patch_dto = src.client.generated.TestLayerSchemaPatchDto() # TestLayerSchemaPatchDto |
|
|
310
|
+
|
|
311
|
+
try:
|
|
312
|
+
# Patch test layer schema
|
|
313
|
+
api_response = await api_instance.patch8(id, test_layer_schema_patch_dto)
|
|
314
|
+
print("The response of TestLayerSchemaControllerApi->patch8:\n")
|
|
315
|
+
pprint(api_response)
|
|
316
|
+
except Exception as e:
|
|
317
|
+
print("Exception when calling TestLayerSchemaControllerApi->patch8: %s\n" % e)
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
### Parameters
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
Name | Type | Description | Notes
|
|
326
|
+
------------- | ------------- | ------------- | -------------
|
|
327
|
+
**id** | **int**| |
|
|
328
|
+
**test_layer_schema_patch_dto** | [**TestLayerSchemaPatchDto**](TestLayerSchemaPatchDto.md)| |
|
|
329
|
+
|
|
330
|
+
### Return type
|
|
331
|
+
|
|
332
|
+
[**TestLayerSchemaDto**](TestLayerSchemaDto.md)
|
|
333
|
+
|
|
334
|
+
### Authorization
|
|
335
|
+
|
|
336
|
+
No authorization required
|
|
337
|
+
|
|
338
|
+
### HTTP request headers
|
|
339
|
+
|
|
340
|
+
- **Content-Type**: application/json
|
|
341
|
+
- **Accept**: */*
|
|
342
|
+
|
|
343
|
+
### HTTP response details
|
|
344
|
+
|
|
345
|
+
| Status code | Description | Response headers |
|
|
346
|
+
|-------------|-------------|------------------|
|
|
347
|
+
**200** | OK | - |
|
|
348
|
+
|
|
349
|
+
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
350
|
+
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
from typing import Annotated
|
|
2
|
+
|
|
3
|
+
from pydantic import Field, StrictFloat, StrictInt, StrictStr, validate_call
|
|
4
|
+
|
|
5
|
+
from src.client.generated.api.test_case_custom_field_controller_api import TestCaseCustomFieldControllerApi
|
|
6
|
+
from src.client.generated.api_client import ApiClient, RequestSerialized
|
|
7
|
+
from src.client.generated.models.custom_field_project_with_values_dto import CustomFieldProjectWithValuesDto
|
|
8
|
+
from src.client.generated.models.custom_field_value_with_cf_dto import CustomFieldValueWithCfDto
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class TestCaseCustomFieldV2ControllerApi(TestCaseCustomFieldControllerApi):
|
|
12
|
+
"""NOTE: This class a manual override for the auto generated by OpenAPI Generator
|
|
13
|
+
Ref: https://openapi-generator.tech
|
|
14
|
+
|
|
15
|
+
You are allowed to edit the class manually.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(self, api_client: ApiClient | None = None) -> None:
|
|
19
|
+
if api_client is None:
|
|
20
|
+
api_client = ApiClient.get_default()
|
|
21
|
+
self.api_client = api_client
|
|
22
|
+
super().__init__(api_client=api_client)
|
|
23
|
+
|
|
24
|
+
@validate_call
|
|
25
|
+
async def get_custom_fields_with_values3(
|
|
26
|
+
self,
|
|
27
|
+
test_case_id: StrictInt,
|
|
28
|
+
project_id: StrictInt,
|
|
29
|
+
_request_timeout: None
|
|
30
|
+
| Annotated[StrictFloat, Field(gt=0)]
|
|
31
|
+
| tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]] = None,
|
|
32
|
+
_request_auth: dict[StrictStr, object] | None = None,
|
|
33
|
+
_content_type: StrictStr | None = None,
|
|
34
|
+
_headers: dict[StrictStr, object] | None = None,
|
|
35
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
36
|
+
) -> list[CustomFieldProjectWithValuesDto]:
|
|
37
|
+
"""Find custom fields with values for test case
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
:param test_case_id: (required)
|
|
41
|
+
:type test_case_id: int
|
|
42
|
+
:param project_id: (required)
|
|
43
|
+
:type project_id: int
|
|
44
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
45
|
+
number provided, it will be total request
|
|
46
|
+
timeout. It can also be a pair (tuple) of
|
|
47
|
+
(connection, read) timeouts.
|
|
48
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
49
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
50
|
+
request; this effectively ignores the
|
|
51
|
+
authentication in the spec for a single request.
|
|
52
|
+
:type _request_auth: dict, optional
|
|
53
|
+
:param _content_type: force content-type for the request.
|
|
54
|
+
:type _content_type: str, Optional
|
|
55
|
+
:param _headers: set to override the headers for a single
|
|
56
|
+
request; this effectively ignores the headers
|
|
57
|
+
in the spec for a single request.
|
|
58
|
+
:type _headers: dict, optional
|
|
59
|
+
:param _host_index: set to override the host_index for a single
|
|
60
|
+
request; this effectively ignores the host_index
|
|
61
|
+
in the spec for a single request.
|
|
62
|
+
:type _host_index: int, optional
|
|
63
|
+
:return: Returns the result object.
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
_param = self._get_custom_fields_with_values3_serialize(
|
|
67
|
+
test_case_id=test_case_id,
|
|
68
|
+
project_id=project_id,
|
|
69
|
+
_request_auth=_request_auth,
|
|
70
|
+
_content_type=_content_type,
|
|
71
|
+
_headers=_headers,
|
|
72
|
+
_host_index=_host_index,
|
|
73
|
+
_query_params=[("v2", str(True))],
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
_response_types_map: dict[str, str | None] = {
|
|
77
|
+
"200": "List[CustomFieldProjectWithValuesDto]",
|
|
78
|
+
}
|
|
79
|
+
response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
|
|
80
|
+
await response_data.read()
|
|
81
|
+
return self.api_client.response_deserialize(
|
|
82
|
+
response_data=response_data,
|
|
83
|
+
response_types_map=_response_types_map,
|
|
84
|
+
).data
|
|
85
|
+
|
|
86
|
+
def _get_custom_fields_with_values3_serialize(
|
|
87
|
+
self,
|
|
88
|
+
test_case_id,
|
|
89
|
+
project_id,
|
|
90
|
+
_request_auth,
|
|
91
|
+
_content_type,
|
|
92
|
+
_headers,
|
|
93
|
+
_host_index,
|
|
94
|
+
_query_params: list[tuple[str, str]] | None = None,
|
|
95
|
+
) -> RequestSerialized:
|
|
96
|
+
if _query_params is None:
|
|
97
|
+
_query_params = []
|
|
98
|
+
_host = None
|
|
99
|
+
|
|
100
|
+
_collection_formats: dict[str, str] = {}
|
|
101
|
+
|
|
102
|
+
_path_params: dict[str, str] = {}
|
|
103
|
+
_header_params: dict[str, str | None] = _headers or {}
|
|
104
|
+
_form_params: list[tuple[str, str]] = []
|
|
105
|
+
_files: dict[str, str | bytes | list[str] | list[bytes] | list[tuple[str, bytes]]] = {}
|
|
106
|
+
_body_params: bytes | None = None
|
|
107
|
+
|
|
108
|
+
# process the path parameters
|
|
109
|
+
if test_case_id is not None:
|
|
110
|
+
_path_params["testCaseId"] = test_case_id
|
|
111
|
+
# process the query parameters
|
|
112
|
+
if project_id is not None:
|
|
113
|
+
_query_params.append(("projectId", project_id))
|
|
114
|
+
|
|
115
|
+
# set the HTTP header `Accept`
|
|
116
|
+
if "Accept" not in _header_params:
|
|
117
|
+
_header_params["Accept"] = self.api_client.select_header_accept(["*/*"])
|
|
118
|
+
|
|
119
|
+
# authentication setting
|
|
120
|
+
_auth_settings: list[str] = []
|
|
121
|
+
|
|
122
|
+
return self.api_client.param_serialize(
|
|
123
|
+
method="GET",
|
|
124
|
+
resource_path="/api/testcase/{testCaseId}/cfv",
|
|
125
|
+
path_params=_path_params,
|
|
126
|
+
query_params=_query_params,
|
|
127
|
+
header_params=_header_params,
|
|
128
|
+
body=_body_params,
|
|
129
|
+
post_params=_form_params,
|
|
130
|
+
files=_files,
|
|
131
|
+
auth_settings=_auth_settings,
|
|
132
|
+
collection_formats=_collection_formats,
|
|
133
|
+
_host=_host,
|
|
134
|
+
_request_auth=_request_auth,
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
@validate_call
|
|
138
|
+
async def update_cfvs_of_test_case(
|
|
139
|
+
self,
|
|
140
|
+
test_case_id: StrictInt,
|
|
141
|
+
custom_field_with_values_dto: list[CustomFieldValueWithCfDto],
|
|
142
|
+
_request_timeout: None
|
|
143
|
+
| Annotated[StrictFloat, Field(gt=0)]
|
|
144
|
+
| tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]] = None,
|
|
145
|
+
_request_auth: dict[StrictStr, object] | None = None,
|
|
146
|
+
_content_type: StrictStr | None = None,
|
|
147
|
+
_headers: dict[StrictStr, object] | None = None,
|
|
148
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
149
|
+
) -> None:
|
|
150
|
+
"""Update custom field values of test case
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
:param test_case_id: (required)
|
|
154
|
+
:type test_case_id: int
|
|
155
|
+
:param custom_field_with_values_dto: (required)
|
|
156
|
+
:type custom_field_with_values_dto: List[CustomFieldWithValuesDto]
|
|
157
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
158
|
+
number provided, it will be total request
|
|
159
|
+
timeout. It can also be a pair (tuple) of
|
|
160
|
+
(connection, read) timeouts.
|
|
161
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
162
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
163
|
+
request; this effectively ignores the
|
|
164
|
+
authentication in the spec for a single request.
|
|
165
|
+
:type _request_auth: dict, optional
|
|
166
|
+
:param _content_type: force content-type for the request.
|
|
167
|
+
:type _content_type: str, Optional
|
|
168
|
+
:param _headers: set to override the headers for a single
|
|
169
|
+
request; this effectively ignores the headers
|
|
170
|
+
in the spec for a single request.
|
|
171
|
+
:type _headers: dict, optional
|
|
172
|
+
:param _host_index: set to override the host_index for a single
|
|
173
|
+
request; this effectively ignores the host_index
|
|
174
|
+
in the spec for a single request.
|
|
175
|
+
:type _host_index: int, optional
|
|
176
|
+
:return: Returns the result object.
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
_param = self._update_cfvs_of_test_case_serialize(
|
|
180
|
+
test_case_id=test_case_id,
|
|
181
|
+
custom_field_with_values_dto=custom_field_with_values_dto,
|
|
182
|
+
_request_auth=_request_auth,
|
|
183
|
+
_content_type=_content_type,
|
|
184
|
+
_headers=_headers,
|
|
185
|
+
_host_index=_host_index,
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
_response_types_map: dict[str, str | None] = {
|
|
189
|
+
"200": None,
|
|
190
|
+
}
|
|
191
|
+
response_data = await self.api_client.call_api(*_param, _request_timeout=_request_timeout)
|
|
192
|
+
await response_data.read()
|
|
193
|
+
return self.api_client.response_deserialize(
|
|
194
|
+
response_data=response_data,
|
|
195
|
+
response_types_map=_response_types_map,
|
|
196
|
+
).data
|
|
197
|
+
|
|
198
|
+
def _update_cfvs_of_test_case_serialize(
|
|
199
|
+
self,
|
|
200
|
+
test_case_id,
|
|
201
|
+
custom_field_with_values_dto,
|
|
202
|
+
_request_auth,
|
|
203
|
+
_content_type,
|
|
204
|
+
_headers,
|
|
205
|
+
_host_index,
|
|
206
|
+
) -> RequestSerialized:
|
|
207
|
+
_host = None
|
|
208
|
+
|
|
209
|
+
_collection_formats: dict[str, str] = {
|
|
210
|
+
"CustomFieldValueWithCfDto": "",
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
_path_params: dict[str, str] = {}
|
|
214
|
+
_query_params: list[tuple[str, str]] = []
|
|
215
|
+
_header_params: dict[str, str | None] = _headers or {}
|
|
216
|
+
_form_params: list[tuple[str, str]] = []
|
|
217
|
+
_files: dict[str, str | bytes | list[str] | list[bytes] | list[tuple[str, bytes]]] = {}
|
|
218
|
+
_body_params: bytes | None = None
|
|
219
|
+
|
|
220
|
+
# process the path parameters
|
|
221
|
+
if test_case_id is not None:
|
|
222
|
+
_path_params["testCaseId"] = test_case_id
|
|
223
|
+
# process the query parameters
|
|
224
|
+
# process the header parameters
|
|
225
|
+
# process the form parameters
|
|
226
|
+
# process the body parameter
|
|
227
|
+
if custom_field_with_values_dto is not None:
|
|
228
|
+
_body_params = custom_field_with_values_dto
|
|
229
|
+
|
|
230
|
+
# set the HTTP header `Content-Type`
|
|
231
|
+
if _content_type:
|
|
232
|
+
_header_params["Content-Type"] = _content_type
|
|
233
|
+
else:
|
|
234
|
+
_default_content_type = self.api_client.select_header_content_type(["application/json"])
|
|
235
|
+
if _default_content_type is not None:
|
|
236
|
+
_header_params["Content-Type"] = _default_content_type
|
|
237
|
+
|
|
238
|
+
# authentication setting
|
|
239
|
+
_auth_settings: list[str] = []
|
|
240
|
+
|
|
241
|
+
return self.api_client.param_serialize(
|
|
242
|
+
method="POST",
|
|
243
|
+
resource_path="/api/testcase/{testCaseId}/cfv",
|
|
244
|
+
path_params=_path_params,
|
|
245
|
+
query_params=_query_params,
|
|
246
|
+
header_params=_header_params,
|
|
247
|
+
body=_body_params,
|
|
248
|
+
post_params=_form_params,
|
|
249
|
+
files=_files,
|
|
250
|
+
auth_settings=_auth_settings,
|
|
251
|
+
collection_formats=_collection_formats,
|
|
252
|
+
_host=_host,
|
|
253
|
+
_request_auth=_request_auth,
|
|
254
|
+
)
|
src/services/__init__.py
CHANGED
|
@@ -1 +1,9 @@
|
|
|
1
1
|
"""Service layer modules for lucius-mcp."""
|
|
2
|
+
|
|
3
|
+
from .attachment_service import AttachmentService
|
|
4
|
+
from .search_service import SearchService
|
|
5
|
+
from .shared_step_service import SharedStepService
|
|
6
|
+
from .test_case_service import TestCaseService
|
|
7
|
+
from .test_layer_service import TestLayerService
|
|
8
|
+
|
|
9
|
+
__all__ = ["AttachmentService", "SearchService", "SharedStepService", "TestCaseService", "TestLayerService"]
|