3from pathlib
import Path
4from aas_http_client.classes.wrapper.sdk_wrapper
import IdEncoding, Level, create_by_config, SdkWrapper, create_by_dict, create_by_url
5from basyx.aas
import model
8from urllib.parse
import urlparse
13JAVA_SERVER_PORTS = [8075]
14PYTHON_SERVER_PORTS = [5080, 80]
15DOTNET_SERVER_PORTS = [5043]
17AIMC_SM_ID =
"https://fluid40.de/ids/sm/7644_4034_2556_2369"
18SM_ID =
"fluid40/sm_http_client_unit_tests"
19SHELL_ID =
"fluid40/aas_http_client_unit_tests"
22 "./tests/server_configs/test_java_server_config.json",
23 "./tests/server_configs/test_java_server_alias_config.json",
24 "./tests/server_configs/test_dotnet_server_config.json",
25 "./tests/server_configs/test_python_server_config.json"
32@pytest.fixture(params=CONFIG_FILES, scope="module")
35 file = Path(request.param).resolve()
38 raise FileNotFoundError(f
"Configuration file {file} does not exist.")
40 wrapper = create_by_config(file, basic_auth_password=
"")
42 rand = random.randint(0, 10)
44 wrapper.set_encoded_ids(IdEncoding.encoded)
46 wrapper.set_encoded_ids(IdEncoding.encoded)
48 except Exception
as e:
49 raise RuntimeError(
"Unable to connect to server.")
51 shells = wrapper.get_all_asset_administration_shells()
53 raise RuntimeError(
"No shells found on server. Please check the server configuration.")
57@pytest.fixture(scope="module")
60 return model_builder.create_base_submodel_element_property(
"sme_property_string", model.datatypes.String,
"Sample String Value", description=
"This is a sample string property for unit testing.", display_name=
"Sample String Property")
62@pytest.fixture(scope="module")
65 return model_builder.create_base_submodel_element_property(
"sme_property_bool", model.datatypes.Boolean,
True, description=
"This is a sample boolean property for unit testing.", display_name=
"Sample Boolean Property" )
67@pytest.fixture(scope="module")
70 return model_builder.create_base_submodel_element_property(
"sme_property_int", model.datatypes.Integer, 262, description=
"This is a sample integer property for unit testing.", display_name=
"Sample Integer Property")
72@pytest.fixture(scope="module")
75 return model_builder.create_base_submodel_element_property(
"sme_property_float", model.datatypes.Float, 262.3, description=
"This is a sample float property for unit testing.", display_name=
"Sample Float Property")
77@pytest.fixture(scope="module")
80 submodel = model_builder.create_base_submodel(identifier=SM_ID, id_short=
"sm_http_client_unit_tests", display_name=
"Submodel HTTP Client Unit Tests", description=
"This is a sample Submodel created for unit testing of the AAS HTTP Client.")
81 submodel.category =
"Unit Test"
84@pytest.fixture(scope="module")
85def shared_aas(shared_sm: model.Submodel) -> model.AssetAdministrationShell:
87 aas = model_builder.create_base_aas(identifier=SHELL_ID, id_short=
"aas_http_client_unit_tests", global_asset_identifier=SHELL_ID, display_name=
"AAS HTTP Client Unit Tests", description=
"This is a sample AAS created for unit testing of the AAS HTTP Client.")
90 sdk_tools.add_submodel_to_aas(aas, shared_sm)
95 base_url: str = wrapper.base_url
96 new_client: SdkWrapper = create_by_url(base_url=base_url)
97 assert new_client
is not None
100 base_url: str = wrapper.base_url
102 config_dict: dict = {
106 new_client: SdkWrapper = create_by_dict(configuration=config_dict)
107 assert new_client
is not None
110 client = wrapper.get_client()
111 assert client
is not None
112 root = client.get_root()
113 assert root
is not None
116 assert wrapper
is not None
119 result = wrapper.get_all_asset_administration_shells()
120 assert result
is not None
122 for shell
in result.results:
125 if wrapper.get_encoded_ids() == IdEncoding.encoded:
126 shell_id = encoder.encode_base_64(shell_id)
129 delete_result = wrapper.delete_asset_administration_shell_by_id(shell_id)
132 shells_result = wrapper.get_all_asset_administration_shells()
133 assert len(shells_result.results) == 0
136 result = wrapper.get_all_submodels()
137 assert result
is not None
139 for submodel
in result.results:
140 submodel_id = submodel.id
142 if wrapper.get_encoded_ids() == IdEncoding.encoded:
143 submodel_id = encoder.encode_base_64(submodel_id)
146 delete_result = wrapper.delete_submodel_by_id(submodel_id)
149 submodels_result = wrapper.get_all_submodels()
150 assert len(submodels_result.results) == 0
153 shells = wrapper.get_all_asset_administration_shells()
154 assert shells
is not None
155 assert len(shells.results) == 0
158 shell = wrapper.post_asset_administration_shell(shared_aas)
160 assert shell
is not None
161 assert shell.id == SHELL_ID
162 assert shell.id_short == shared_aas.id_short
164 shells = wrapper.get_all_asset_administration_shells()
165 assert shells
is not None
166 assert len(shells.results) == 1
167 assert shells.results[0].id_short == shared_aas.id_short
168 assert shells.results[0].id == SHELL_ID
173 if wrapper.get_encoded_ids() == IdEncoding.encoded:
174 shell_id = encoder.encode_base_64(shell_id)
176 shell = wrapper.get_asset_administration_shell_by_id(shell_id)
178 assert shell
is not None
179 assert shell.id_short == shared_aas.id_short
180 assert shell.id == SHELL_ID
183 shell = wrapper.get_asset_administration_shell_by_id(
"non_existent_id")
188 aas = model.AssetAdministrationShell(id_=shared_aas.asset_information.global_asset_id, asset_information=shared_aas.asset_information)
189 aas.id_short = shared_aas.id_short
191 description_text =
"Put description for unit tests"
192 aas.description = model.MultiLanguageTextType({
"en": description_text})
193 aas.submodel = shared_aas.submodel
197 if wrapper.get_encoded_ids() == IdEncoding.encoded:
198 shell_id = encoder.encode_base_64(shell_id)
200 result = wrapper.put_asset_administration_shell_by_id(shell_id, aas)
204 shell = wrapper.get_asset_administration_shell_by_id(shell_id)
206 assert shell
is not None
207 assert shell.id_short == shared_aas.id_short
208 assert shell.id == SHELL_ID
210 assert shell.description.get(
"en",
"") == description_text
211 assert shell.description.get(
"en",
"") != shared_aas.description.get(
"en",
"")
213 assert len(shell.submodel) == len(shared_aas.submodel)
220 wrapper.put_asset_administration_shell_by_id(shell_id, shared_aas)
224 id_short =
"put_short_id"
225 identifier = f
"fluid40/{id_short}"
226 asset_info = model_builder.create_base_asset_information(identifier)
227 aas = model.AssetAdministrationShell(id_=asset_info.global_asset_id, asset_information=asset_info)
228 aas.id_short = id_short
230 description_text = {
"en":
"Updated description for unit tests"}
231 aas.description = model.MultiLanguageTextType(description_text)
235 if wrapper.get_encoded_ids() == IdEncoding.encoded:
236 shell_id = encoder.encode_base_64(SHELL_ID)
238 parsed = urlparse(wrapper.base_url)
239 if int(parsed.port)
in PYTHON_SERVER_PORTS:
243 result = wrapper.put_asset_administration_shell_by_id(shell_id, aas)
247 shell = wrapper.get_asset_administration_shell_by_id(shell_id)
248 assert shell.description.get(
"en",
"") != description_text
249 assert shell.description.get(
"en",
"") == shared_aas.description.get(
"en",
"")
254 if wrapper.get_encoded_ids() == IdEncoding.encoded:
255 shell_id = encoder.encode_base_64(SHELL_ID)
257 reference = wrapper.get_asset_administration_shell_by_id_reference_aas_repository(shell_id)
259 assert reference
is not None
260 assert len(reference.key) == 1
261 assert reference.key[0].value == SHELL_ID
266 if wrapper.get_encoded_ids() == IdEncoding.encoded:
267 shell_id = encoder.encode_base_64(SHELL_ID)
269 submodel = wrapper.get_submodel_by_id_aas_repository(shell_id, shared_sm.id)
271 assert submodel
is None
274 submodels = wrapper.get_all_submodels()
275 assert submodels
is not None
276 assert len(submodels.results) == 0
279 submodel = wrapper.post_submodel(shared_sm)
281 assert submodel
is not None
282 assert submodel.id == SM_ID
283 assert submodel.id_short == shared_sm.id_short
285 submodels = wrapper.get_all_submodels()
286 assert submodels
is not None
287 assert len(submodels.results) == 1
288 assert submodels.results[0].id_short == shared_sm.id_short
289 assert submodels.results[0].id == SM_ID
292 sm_template_file = Path(f
"./tests/test_data/aimc.json").resolve()
294 with Path.open(sm_template_file,
"r", encoding=
"utf-8")
as f:
295 sm_data = json.load(f)
297 submodel = sdk_tools.convert_to_object(sm_data)
299 result = wrapper.post_submodel(submodel)
301 assert result
is not None
302 assert result.id == AIMC_SM_ID
304 get_result = wrapper.get_all_submodels()
305 assert get_result
is not None
306 submodels = get_result.results
307 assert len(submodels) == 2
313 if wrapper.get_encoded_ids() == IdEncoding.encoded:
314 shell_id = encoder.encode_base_64(SHELL_ID)
315 sm_id = encoder.encode_base_64(SM_ID)
317 submodel = wrapper.get_submodel_by_id_aas_repository(shell_id, sm_id)
319 parsed = urlparse(wrapper.base_url)
320 if int(parsed.port)
in JAVA_SERVER_PORTS:
322 assert submodel
is None
324 assert submodel
is not None
325 assert submodel.id_short == shared_sm.id_short
326 assert submodel.id == SM_ID
331 if wrapper.get_encoded_ids() == IdEncoding.encoded:
332 sm_id = encoder.encode_base_64(SM_ID)
334 submodel = wrapper.get_submodel_by_id(sm_id)
336 assert submodel
is not None
337 assert submodel.id_short == shared_sm.id_short
338 assert submodel.id == SM_ID
341 result = wrapper.get_submodel_by_id(
"non_existent_id")
343 assert result
is None
348 if wrapper.get_encoded_ids() == IdEncoding.encoded:
349 sm_id = encoder.encode_base_64(AIMC_SM_ID)
351 result = wrapper.get_submodel_by_id(sm_id)
353 assert result
is not None
354 assert result.id == AIMC_SM_ID
359 if wrapper.get_encoded_ids() == IdEncoding.encoded:
360 sm_id = encoder.encode_base_64(AIMC_SM_ID)
362 result = wrapper.get_submodel_by_id(sm_id, level=Level.core)
364 assert result
is not None
365 assert result.id == AIMC_SM_ID
369 sm = model.Submodel(shared_sm.id_short)
370 sm.id_short = shared_sm.id_short
372 description_text =
"Patched description for unit tests"
373 sm.description = model.MultiLanguageTextType({
"en": description_text})
377 if wrapper.get_encoded_ids() == IdEncoding.encoded:
378 sm_id = encoder.encode_base_64(SM_ID)
380 result = wrapper.patch_submodel_by_id(sm_id, sm)
382 parsed = urlparse(wrapper.base_url)
383 if int(parsed.port)
in JAVA_SERVER_PORTS
or int(parsed.port)
in PYTHON_SERVER_PORTS:
389 submodel = wrapper.get_submodel_by_id(sm_id)
390 assert submodel
is not None
391 assert submodel.id_short == shared_sm.id_short
392 assert submodel.id == SM_ID
394 assert submodel.description.get(
"en",
"") == description_text
395 assert submodel.description.get(
"en",
"") != shared_sm.description.get(
"en",
"")
397 assert submodel.display_name == shared_sm.display_name
398 assert len(submodel.submodel_element) == len(shared_sm.submodel_element)
401 sm = model.Submodel(SM_ID)
402 sm.id_short = shared_sm.id_short
404 description_text =
"Put via shell description for unit tests"
405 sm.description = model.MultiLanguageTextType({
"en": description_text})
406 sm.display_name = shared_sm.display_name
411 if wrapper.get_encoded_ids() == IdEncoding.encoded:
412 shell_id = encoder.encode_base_64(SHELL_ID)
413 sm_id = encoder.encode_base_64(SM_ID)
415 result = wrapper.put_submodel_by_id_aas_repository(shell_id, sm_id, sm)
417 parsed = urlparse(wrapper.base_url)
418 if int(parsed.port)
in JAVA_SERVER_PORTS:
424 submodel = wrapper.get_submodel_by_id_aas_repository(shell_id, sm_id)
425 assert submodel
is not None
426 assert submodel.id_short == shared_sm.id_short
427 assert submodel.id == SM_ID
429 assert submodel.description.get(
"en",
"") == description_text
430 assert submodel.description.get(
"en",
"") != shared_sm.description.get(
"en",
"")
432 assert submodel.display_name == shared_sm.display_name
434 assert submodel.category
is None
435 assert len(submodel.submodel_element) == 0
438 wrapper.put_submodel_by_id_aas_repository(shell_id, sm_id, shared_sm)
441 sm = model.Submodel(shared_sm.id)
442 sm.id_short = shared_sm.id_short
444 description_text =
"Put description for unit tests"
445 sm.description = model.MultiLanguageTextType({
"en": description_text})
446 sm.display_name = shared_sm.display_name
450 if wrapper.get_encoded_ids() == IdEncoding.encoded:
451 sm_id = encoder.encode_base_64(SM_ID)
453 result = wrapper.put_submodels_by_id(sm_id, sm)
457 submodel = wrapper.get_submodel_by_id(sm_id)
458 assert submodel
is not None
459 assert submodel.id_short == shared_sm.id_short
460 assert submodel.id == SM_ID
462 assert submodel.description.get(
"en",
"") == description_text
463 assert submodel.description.get(
"en",
"") != shared_sm.description.get(
"en",
"")
467 assert submodel.category
is None
468 assert len(submodel.submodel_element) == 0
471 wrapper.put_submodels_by_id(sm_id, shared_sm)
476 if wrapper.get_encoded_ids() == IdEncoding.encoded:
477 sm_id = encoder.encode_base_64(SM_ID)
479 submodel_elements = wrapper.get_all_submodel_elements_submodel_repository(sm_id)
481 assert submodel_elements
is not None
482 assert len(submodel_elements.results) == 0
487 if wrapper.get_encoded_ids() == IdEncoding.encoded:
488 sm_id = encoder.encode_base_64(SM_ID)
490 submodel_element = wrapper.post_submodel_element_submodel_repo(sm_id, shared_sme_string)
492 assert submodel_element
is not None
494 assert isinstance(submodel_element, model.Property)
495 property: model.Property = submodel_element
496 assert property.value == shared_sme_string.value
498 assert submodel_element.id_short == shared_sme_string.id_short
499 assert submodel_element.description.get(
"en",
"") == shared_sme_string.description.get(
"en",
"")
500 assert submodel_element.display_name.get(
"en",
"") == shared_sme_string.display_name.get(
"en",
"")
501 assert submodel_element.value == shared_sme_string.value
503 submodel_elements = wrapper.get_all_submodel_elements_submodel_repository(sm_id)
505 assert submodel_elements
is not None
506 assert len(submodel_elements.results) == 1
511 if wrapper.get_encoded_ids() == IdEncoding.encoded:
512 sm_id = encoder.encode_base_64(SM_ID)
514 submodel_element = wrapper.post_submodel_element_submodel_repo(sm_id, shared_sme_bool)
516 assert submodel_element
is not None
518 assert isinstance(submodel_element, model.Property)
519 property: model.Property = submodel_element
520 assert property.value == shared_sme_bool.value
522 assert submodel_element.id_short == shared_sme_bool.id_short
523 assert submodel_element.description.get(
"en",
"") == shared_sme_bool.description.get(
"en",
"")
524 assert submodel_element.display_name.get(
"en",
"") == shared_sme_bool.display_name.get(
"en",
"")
525 assert submodel_element.value == shared_sme_bool.value
527 submodel_elements = wrapper.get_all_submodel_elements_submodel_repository(sm_id)
529 assert submodel_elements
is not None
530 assert len(submodel_elements.results) == 2
535 if wrapper.get_encoded_ids() == IdEncoding.encoded:
536 sm_id = encoder.encode_base_64(SM_ID)
538 submodel_element = wrapper.post_submodel_element_submodel_repo(sm_id, shared_sme_int)
540 assert submodel_element
is not None
542 assert isinstance(submodel_element, model.Property)
543 property: model.Property = submodel_element
544 assert property.value == shared_sme_int.value
546 assert submodel_element.id_short == shared_sme_int.id_short
547 assert submodel_element.description.get(
"en",
"") == shared_sme_int.description.get(
"en",
"")
548 assert submodel_element.display_name.get(
"en",
"") == shared_sme_int.display_name.get(
"en",
"")
549 assert submodel_element.value == shared_sme_int.value
551 submodel_elements = wrapper.get_all_submodel_elements_submodel_repository(sm_id)
553 assert submodel_elements
is not None
554 assert len(submodel_elements.results) == 3
559 if wrapper.get_encoded_ids() == IdEncoding.encoded:
560 sm_id = encoder.encode_base_64(SM_ID)
562 submodel_element = wrapper.post_submodel_element_submodel_repo(sm_id, shared_sme_float)
564 assert submodel_element
is not None
566 assert isinstance(submodel_element, model.Property)
567 property: model.Property = submodel_element
568 assert property.value == shared_sme_float.value
570 assert submodel_element.id_short == shared_sme_float.id_short
571 assert submodel_element.description.get(
"en",
"") == shared_sme_float.description.get(
"en",
"")
572 assert submodel_element.display_name.get(
"en",
"") == shared_sme_float.display_name.get(
"en",
"")
573 assert submodel_element.value == shared_sme_float.value
575 submodel_elements = wrapper.get_all_submodel_elements_submodel_repository(sm_id)
577 assert submodel_elements
is not None
578 assert len(submodel_elements.results) == 4
583 if wrapper.get_encoded_ids() == IdEncoding.encoded:
584 sm_id = encoder.encode_base_64(SM_ID)
586 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_string.id_short)
588 assert submodel_element
is not None
590 assert isinstance(submodel_element, model.Property)
592 assert submodel_element.id_short == shared_sme_string.id_short
593 assert submodel_element.description.get(
"en",
"") == shared_sme_string.description.get(
"en",
"")
594 assert submodel_element.display_name.get(
"en",
"") == shared_sme_string.display_name.get(
"en",
"")
595 assert submodel_element.value == shared_sme_string.value
600 if wrapper.get_encoded_ids() == IdEncoding.encoded:
601 sm_id = encoder.encode_base_64(SM_ID)
603 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_bool.id_short)
605 assert submodel_element
is not None
607 assert isinstance(submodel_element, model.Property)
609 assert submodel_element.id_short == shared_sme_bool.id_short
610 assert submodel_element.description.get(
"en",
"") == shared_sme_bool.description.get(
"en",
"")
611 assert submodel_element.display_name.get(
"en",
"") == shared_sme_bool.display_name.get(
"en",
"")
612 assert submodel_element.value == shared_sme_bool.value
617 if wrapper.get_encoded_ids() == IdEncoding.encoded:
618 sm_id = encoder.encode_base_64(SM_ID)
620 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_int.id_short)
622 assert submodel_element
is not None
624 assert isinstance(submodel_element, model.Property)
626 assert submodel_element.id_short == shared_sme_int.id_short
627 assert submodel_element.description.get(
"en",
"") == shared_sme_int.description.get(
"en",
"")
628 assert submodel_element.display_name.get(
"en",
"") == shared_sme_int.display_name.get(
"en",
"")
629 assert submodel_element.value == shared_sme_int.value
634 if wrapper.get_encoded_ids() == IdEncoding.encoded:
635 sm_id = encoder.encode_base_64(SM_ID)
637 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_float.id_short)
639 assert submodel_element
is not None
641 assert isinstance(submodel_element, model.Property)
643 assert submodel_element.id_short == shared_sme_float.id_short
644 assert submodel_element.description.get(
"en",
"") == shared_sme_float.description.get(
"en",
"")
645 assert submodel_element.display_name.get(
"en",
"") == shared_sme_float.display_name.get(
"en",
"")
646 assert submodel_element.value == shared_sme_float.value
649 new_value =
"Patched String Value"
653 if wrapper.get_encoded_ids() == IdEncoding.encoded:
654 sm_id = encoder.encode_base_64(SM_ID)
656 submodel_element: model.Property = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_string.id_short)
657 old_value = submodel_element.value
659 result = wrapper.patch_submodel_element_by_path_value_only_submodel_repo(sm_id, shared_sme_string.id_short, new_value)
661 parsed = urlparse(wrapper.base_url)
662 if int(parsed.port)
in PYTHON_SERVER_PORTS:
664 assert result
is False
666 assert result
is True
668 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_string.id_short)
670 assert submodel_element
is not None
671 assert submodel_element.id_short == shared_sme_string.id_short
672 assert submodel_element.description.get(
"en",
"") == shared_sme_string.description.get(
"en",
"")
673 assert submodel_element.display_name.get(
"en",
"") == shared_sme_string.display_name.get(
"en",
"")
675 assert isinstance(submodel_element, model.Property)
676 property: model.Property = submodel_element
677 assert property.value == new_value
678 assert property.value != old_value
685 if wrapper.get_encoded_ids() == IdEncoding.encoded:
686 sm_id = encoder.encode_base_64(SM_ID)
688 submodel_element: model.Property = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_bool.id_short)
689 old_value = submodel_element.value
691 result = wrapper.patch_submodel_element_by_path_value_only_submodel_repo(sm_id, shared_sme_bool.id_short, new_value)
693 parsed = urlparse(wrapper.base_url)
694 if int(parsed.port)
in PYTHON_SERVER_PORTS:
696 assert result
is False
698 assert result
is True
700 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_bool.id_short)
702 assert submodel_element
is not None
703 assert submodel_element.id_short == shared_sme_bool.id_short
704 assert submodel_element.description.get(
"en",
"") == shared_sme_bool.description.get(
"en",
"")
705 assert submodel_element.display_name.get(
"en",
"") == shared_sme_bool.display_name.get(
"en",
"")
707 assert isinstance(submodel_element, model.Property)
708 property: model.Property = submodel_element
709 assert property.value == json.loads(new_value)
710 assert property.value != old_value
717 if wrapper.get_encoded_ids() == IdEncoding.encoded:
718 sm_id = encoder.encode_base_64(SM_ID)
720 submodel_element: model.Property = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_int.id_short)
721 old_value = submodel_element.value
723 result = wrapper.patch_submodel_element_by_path_value_only_submodel_repo(sm_id, shared_sme_int.id_short, new_value)
725 parsed = urlparse(wrapper.base_url)
726 if int(parsed.port)
in PYTHON_SERVER_PORTS:
728 assert result
is False
730 assert result
is True
732 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_int.id_short)
734 assert submodel_element
is not None
735 assert submodel_element.id_short == shared_sme_int.id_short
736 assert submodel_element.description.get(
"en",
"") == shared_sme_int.description.get(
"en",
"")
737 assert submodel_element.display_name.get(
"en",
"") == shared_sme_int.display_name.get(
"en",
"")
739 assert isinstance(submodel_element, model.Property)
740 property: model.Property = submodel_element
741 assert property.value == int(new_value)
742 assert property.value != old_value
749 if wrapper.get_encoded_ids() == IdEncoding.encoded:
750 sm_id = encoder.encode_base_64(SM_ID)
752 submodel_element: model.Property = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_float.id_short)
753 old_value = submodel_element.value
755 result = wrapper.patch_submodel_element_by_path_value_only_submodel_repo(sm_id, shared_sme_float.id_short, new_value)
757 parsed = urlparse(wrapper.base_url)
758 if int(parsed.port)
in PYTHON_SERVER_PORTS:
760 assert result
is False
762 assert result
is True
764 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_float.id_short)
766 assert submodel_element
is not None
767 assert submodel_element.id_short == shared_sme_float.id_short
768 assert submodel_element.description.get(
"en",
"") == shared_sme_float.description.get(
"en",
"")
769 assert submodel_element.display_name.get(
"en",
"") == shared_sme_float.display_name.get(
"en",
"")
771 assert isinstance(submodel_element, model.Property)
772 property: model.Property = submodel_element
773 assert property.value == float(new_value)
774 assert property.value != old_value
775 assert property.value == 262.1
778 submodel_element_list = model.SubmodelElementList(id_short=
"sme_list_1", type_value_list_element=model.Property, value_type_list_element=model.datatypes.String)
782 if wrapper.get_encoded_ids() == IdEncoding.encoded:
783 sm_id = encoder.encode_base_64(SM_ID)
785 post_list_element_result = wrapper.post_submodel_element_submodel_repo(sm_id, submodel_element_list)
787 assert post_list_element_result
is not None
789 property = model_builder.create_base_submodel_element_property(
None, model.datatypes.String,
"Value in List")
791 result = wrapper.post_submodel_element_by_path_submodel_repo(sm_id, submodel_element_list.id_short, property)
793 assert result
is not None
794 assert result.id_short == property.id_short
796 submodel = wrapper.get_submodel_by_id(sm_id)
798 assert submodel
is not None
799 elements = submodel.submodel_element
800 assert len(elements) == 5
801 element = list(elements)[4]
802 assert element
is not None
803 assert isinstance(element, model.SubmodelElementList)
805 assert element.id_short == submodel_element_list.id_short
806 list_elements = element.value
807 assert len(list_elements) == 1
808 list_element = list(list_elements)[0]
809 assert isinstance(list_element, model.Property)
811 assert "hack" in list_element.id_short
812 assert list_element.value == property.value
815 submodel_element_collection = model.SubmodelElementCollection(id_short=
"sme_collection_1")
819 if wrapper.get_encoded_ids() == IdEncoding.encoded:
820 sm_id = encoder.encode_base_64(SM_ID)
822 first_result = wrapper.post_submodel_element_submodel_repo(sm_id, submodel_element_collection)
824 assert first_result
is not None
826 property = model_builder.create_base_submodel_element_property(
"sme_property_in_collection", model.datatypes.String,
"Value in List")
827 result = wrapper.post_submodel_element_by_path_submodel_repo(sm_id, submodel_element_collection.id_short, property)
829 assert result
is not None
830 assert result.id_short== property.id_short
832 submodel = wrapper.get_submodel_by_id(sm_id)
834 assert submodel
is not None
835 elements = submodel.submodel_element
836 assert len(elements) == 6
837 assert list(elements)[5].id_short == submodel_element_collection.id_short
838 list_elements = list(elements)[5].value
839 assert len(list_elements) == 1
840 assert list(list_elements)[0].id_short == property.id_short
841 assert list(list_elements)[0].value == property.value
843 base_url: str = wrapper.base_url
844 new_wrapper = create_by_url(base_url=base_url)
845 assert new_wrapper
is not None
847 sm = new_wrapper.get_submodel_by_id(AIMC_SM_ID)
850 decoded_id = encoder.encode_base_64(AIMC_SM_ID)
851 decoded_sm = new_wrapper.get_submodel_by_id(decoded_id)
852 assert decoded_sm
is not None
853 assert decoded_sm.id == AIMC_SM_ID
856 base_url: str = wrapper.base_url
857 new_wrapper: SdkWrapper = create_by_url(base_url=base_url)
858 assert new_wrapper
is not None
860 sm = new_wrapper.get_submodel_by_id(AIMC_SM_ID)
863 encoded_id = encoder.encode_base_64(AIMC_SM_ID)
864 encoded_sm = new_wrapper.get_submodel_by_id(encoded_id)
865 assert encoded_sm
is not None
866 assert encoded_sm.id == AIMC_SM_ID
869 base_url: str = wrapper.base_url
870 new_wrapper: SdkWrapper = create_by_url(base_url=base_url)
871 assert new_wrapper
is not None
873 sm = new_wrapper.get_asset_administration_shell_by_id(SHELL_ID)
876 encoded_id = encoder.encode_base_64(SHELL_ID)
877 encoded_sm = new_wrapper.get_asset_administration_shell_by_id(encoded_id)
878 assert encoded_sm
is not None
879 assert encoded_sm.id == SHELL_ID
882 parsed = urlparse(wrapper.base_url)
883 if int(parsed.port)
in JAVA_SERVER_PORTS
or int(parsed.port)
in PYTHON_SERVER_PORTS:
888 file_sme = model.File(
"file_sme", content_type=
"application/pdf")
892 if wrapper.get_encoded_ids() == IdEncoding.encoded:
893 sm_id = encoder.encode_base_64(SM_ID)
895 file_post_result = wrapper.post_submodel_element_submodel_repo(sm_id, file_sme)
896 assert file_post_result
is not None
898 filename =
"https.pdf"
899 file = Path(f
"./tests/test_data/{filename}").resolve()
900 result = wrapper.experimental_post_file_by_path_submodel_repo(sm_id, file_sme.id_short, file)
901 assert result
is True
903 result_sme = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, file_sme.id_short)
905 assert result_sme
is not None
906 assert result_sme.id_short == file_sme.id_short
908 assert result_sme.content_type == file_sme.content_type
909 assert result_sme.value == f
"/{filename}"
912 parsed = urlparse(wrapper.base_url)
913 if int(parsed.port)
in JAVA_SERVER_PORTS
or int(parsed.port)
in PYTHON_SERVER_PORTS:
920 if wrapper.get_encoded_ids() == IdEncoding.encoded:
921 sm_id = encoder.encode_base_64(SM_ID)
923 attachment = wrapper.experimental_get_file_by_path_submodel_repo(sm_id,
"file_sme")
924 assert attachment
is not None
925 assert attachment.content_type ==
"application/pdf"
926 assert isinstance(attachment.content, bytes)
927 assert len(attachment.content) > 0
928 assert attachment.content.startswith(b
"%PDF-1.7")
929 assert attachment.filename ==
"/https.pdf"
932 parsed = urlparse(wrapper.base_url)
933 if int(parsed.port)
in JAVA_SERVER_PORTS
or int(parsed.port)
in PYTHON_SERVER_PORTS:
938 filename =
"aimc.json"
939 file = Path(f
"./tests/test_data/{filename}").resolve()
943 if wrapper.get_encoded_ids() == IdEncoding.encoded:
944 sm_id = encoder.encode_base_64(SM_ID)
946 result = wrapper.experimental_put_file_by_path_submodel_repo(sm_id,
"file_sme", file)
947 assert result
is True
949 get_result = wrapper.experimental_get_file_by_path_submodel_repo(sm_id,
"file_sme")
950 assert get_result
is not None
951 assert len(get_result.content) > 0
952 assert get_result.content.startswith(b
"{\n")
953 assert get_result.filename == f
"/{filename}"
954 assert get_result.content_type ==
"application/json"
956 result_sme = wrapper.get_submodel_element_by_path_submodel_repo(sm_id,
"file_sme")
957 assert result_sme
is not None
958 assert result_sme.value == f
"/{filename}"
961 parsed = urlparse(wrapper.base_url)
962 if int(parsed.port)
in JAVA_SERVER_PORTS
or int(parsed.port)
in PYTHON_SERVER_PORTS:
969 if wrapper.get_encoded_ids() == IdEncoding.encoded:
970 sm_id = encoder.encode_base_64(SM_ID)
972 result = wrapper.experimental_delete_file_by_path_submodel_repo(sm_id,
"file_sme")
973 assert result
is True
975 get_result = wrapper.experimental_get_file_by_path_submodel_repo(sm_id,
"file_sme")
976 assert get_result
is None
978 result_sme = wrapper.get_submodel_element_by_path_submodel_repo(sm_id,
"file_sme")
979 assert result_sme
is not None
980 assert result_sme.value ==
None
983 parsed = urlparse(wrapper.base_url)
984 if int(parsed.port)
in PYTHON_SERVER_PORTS:
990 if wrapper.get_encoded_ids() == IdEncoding.encoded:
991 shell_id = encoder.encode_base_64(SHELL_ID)
993 result = wrapper.get_thumbnail_aas_repository(shell_id)
994 assert result
is None
997 parsed = urlparse(wrapper.base_url)
998 if int(parsed.port)
in PYTHON_SERVER_PORTS:
1004 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1005 shell_id = encoder.encode_base_64(SHELL_ID)
1007 filename =
"Pen_Machine.png"
1008 file = Path(f
"./tests/test_data/{filename}").resolve()
1010 result = wrapper.put_thumbnail_aas_repository(shell_id, file.name, file)
1011 assert result
is True
1014 parsed = urlparse(wrapper.base_url)
1015 if int(parsed.port)
in PYTHON_SERVER_PORTS:
1021 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1022 shell_id = encoder.encode_base_64(SHELL_ID)
1024 result = wrapper.get_thumbnail_aas_repository(shell_id)
1025 assert result
is not None
1027 assert len(result.content) > 0
1028 assert result.content.startswith(b
"\x89PNG\r\n\x1a\n")
1029 assert result.filename ==
"thumbnail"
1030 assert result.content_type ==
"image/png"
1033 parsed = urlparse(wrapper.base_url)
1034 if int(parsed.port)
in PYTHON_SERVER_PORTS:
1040 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1041 shell_id = encoder.encode_base_64(SHELL_ID)
1043 result = wrapper.delete_thumbnail_aas_repository(shell_id)
1044 assert result
is True
1046 get_result = wrapper.get_thumbnail_aas_repository(shell_id)
1047 assert get_result
is None
1052 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1053 shell_id = encoder.encode_base_64(SHELL_ID)
1055 result = wrapper.get_all_submodel_references_aas_repository(shell_id)
1056 assert result
is not None
1057 references = result.results
1058 assert len(references) == 1
1063 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1064 shell_id = encoder.encode_base_64(SHELL_ID)
1068 temp_sml_ref = model.ModelReference.from_referable(model_builder.create_base_submodel(identifier=id, id_short=id_short))
1070 result = wrapper.post_submodel_reference_aas_repository(shell_id, temp_sml_ref)
1072 assert result
is not None
1073 assert len(result.get(
"keys", [])) > 0
1074 key: dict = result.get(
"keys", [])[0]
1075 assert key.get(
"value",
"") == id
1076 assert key.get(
"type",
"") ==
"Submodel"
1078 check_result = wrapper.get_all_submodel_references_aas_repository(shell_id)
1079 assert check_result
is not None
1080 assert len(check_result.results) == 2
1084 sm_id =
"temp_sm_id"
1086 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1087 shell_id = encoder.encode_base_64(SHELL_ID)
1088 sm_id = encoder.encode_base_64(sm_id)
1090 result = wrapper.delete_submodel_reference_by_id_aas_repository(shell_id, sm_id)
1092 assert result
is True
1094 get_result = wrapper.get_all_submodel_references_aas_repository(shell_id)
1095 assert get_result
is not None
1096 assert len(get_result.results) == 1
1101 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1102 sm_id = encoder.encode_base_64(SM_ID)
1104 sme: model.Property = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_string.id_short)
1105 old_value = sme.value
1107 new_value =
"New Value via PUT"
1108 shared_sme_string.value = new_value
1110 result = wrapper.put_submodel_element_by_path_submodel_repo(sm_id, shared_sme_string.id_short, shared_sme_string)
1112 assert result
is True
1114 sme = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_string.id_short)
1116 assert sme
is not None
1117 assert sme.id_short == shared_sme_string.id_short
1118 assert sme.value == new_value
1119 assert sme.value != old_value
1120 assert sme.description.get(
"en",
"") == shared_sme_string.description.get(
"en",
"")
1121 assert sme.display_name.get(
"en",
"") == shared_sme_string.display_name.get(
"en",
"")
1124 shared_sme_string.value =
"Sample String Value"
1125 wrapper.put_submodel_element_by_path_submodel_repo(sm_id, shared_sme_string.id_short, shared_sme_string)
1130 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1131 sm_id = encoder.encode_base_64(SM_ID)
1133 value = wrapper.get_submodel_element_by_path_value_only_submodel_repo(sm_id, shared_sme_string.id_short)
1135 parsed = urlparse(wrapper.base_url)
1136 if parsed.port
in PYTHON_SERVER_PORTS:
1138 assert value
is None
1141 assert value
is not None
1143 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_string.id_short)
1144 assert submodel_element
is not None
1145 prop: model.Property = submodel_element
1146 assert value == prop.value
1151 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1152 sm_id = encoder.encode_base_64(SM_ID)
1154 value = wrapper.get_submodel_element_by_path_value_only_submodel_repo(sm_id, shared_sme_int.id_short)
1156 parsed = urlparse(wrapper.base_url)
1157 if parsed.port
in PYTHON_SERVER_PORTS:
1159 assert value
is None
1162 assert value
is not None
1164 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_int.id_short)
1165 assert submodel_element
is not None
1166 prop: model.Property = submodel_element
1167 assert int(value) == prop.value
1172 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1173 sm_id = encoder.encode_base_64(SM_ID)
1175 value = wrapper.get_submodel_element_by_path_value_only_submodel_repo(sm_id, shared_sme_float.id_short)
1177 parsed = urlparse(wrapper.base_url)
1178 if parsed.port
in PYTHON_SERVER_PORTS:
1180 assert value
is None
1183 assert value
is not None
1185 submodel_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_float.id_short)
1186 assert submodel_element
is not None
1187 prop: model.Property = submodel_element
1188 assert float(value) == prop.value
1193 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1194 sm_id = encoder.encode_base_64(SM_ID)
1196 value = wrapper.get_submodel_element_by_path_value_only_submodel_repo(sm_id, shared_sme_bool.id_short)
1198 parsed = urlparse(wrapper.base_url)
1199 if parsed.port
in PYTHON_SERVER_PORTS:
1201 assert value
is None
1204 assert value
is not None
1206 sm_data = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_bool.id_short)
1207 assert sm_data
is not None
1213 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1214 sm_id = encoder.encode_base_64(SM_ID)
1216 response = wrapper.get_submodel_by_id_value_only(sm_id)
1218 parsed = urlparse(wrapper.base_url)
1219 if parsed.port
in PYTHON_SERVER_PORTS:
1221 assert response
is None
1223 elif parsed.port
in DOTNET_SERVER_PORTS:
1224 assert response
is not None
1225 value = response[shared_sm.id_short]
1227 assert response
is not None
1230 assert value
is not None
1231 assert len(value) > 3
1232 assert "sme_property_int" in value
1233 assert int(value[
"sme_property_int"]) == 263
1234 assert "sme_property_string" in value
1235 assert value[
"sme_property_string"] ==
"Sample String Value"
1236 assert "sme_property_float" in value
1237 assert float(value[
"sme_property_float"]) == 262.1
1242 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1243 sm_id = encoder.encode_base_64(SM_ID)
1246 shared_sme_string.id_short: shared_sme_string.value,
1247 shared_sme_int.id_short: str(shared_sme_int.value),
1248 shared_sme_float.id_short: str(shared_sme_float.value)
1253 patch_dict = value_dict
1255 parsed = urlparse(wrapper.base_url)
1256 if parsed.port
in PYTHON_SERVER_PORTS:
1260 if parsed.port
in JAVA_SERVER_PORTS:
1264 elif parsed.port
in DOTNET_SERVER_PORTS:
1265 patch_dict = value_dict
1267 result = wrapper.patch_submodel_by_id_value_only(sm_id, patch_dict)
1269 assert result
is True
1271 string_prop_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_string.id_short)
1272 int_prop_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_int.id_short)
1273 float_prop_element = wrapper.get_submodel_element_by_path_submodel_repo(sm_id, shared_sme_float.id_short)
1275 assert string_prop_element
is not None
1276 assert int_prop_element
is not None
1277 assert float_prop_element
is not None
1279 string_prop: model.Property = string_prop_element
1280 int_prop: model.Property = int_prop_element
1281 float_prop: model.Property = float_prop_element
1283 assert string_prop.value == shared_sme_string.value
1284 assert int(int_prop.value) == int(shared_sme_int.value)
1285 assert float(float_prop.value) == float(shared_sme_float.value)
1290 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1291 sm_id = encoder.encode_base_64(SM_ID)
1293 metadata = wrapper.get_submodel_by_id_metadata(sm_id)
1294 assert metadata
is not None
1296 submodel = wrapper.get_submodel_by_id(sm_id)
1297 assert submodel
is not None
1299 assert metadata.get(
"id",
"") == submodel.id
1300 assert metadata.get(
"idShort",
"") == submodel.id_short
1301 assert metadata.get(
"description", {})[0].get(
"text",
"") == submodel.description.get(
"en",
"")
1302 assert metadata.get(
"displayName", {})[0].get(
"text",
"") == submodel.display_name.get(
"en",
"")
1303 assert "submodelElements" not in metadata
1308 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1309 shell_id = encoder.encode_base_64(SHELL_ID)
1311 result = wrapper.delete_asset_administration_shell_by_id(shell_id)
1315 shells = wrapper.get_all_asset_administration_shells()
1316 assert shells
is not None
1317 assert len(shells.results) == 0
1322 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1323 sm_id = encoder.encode_base_64(SM_ID)
1325 result = wrapper.delete_submodel_by_id(sm_id)
1329 submodels = wrapper.get_all_submodels()
1330 assert submodels
is not None
1331 assert len(submodels.results) == 1
1336 if wrapper.get_encoded_ids() == IdEncoding.encoded:
1337 sm_id = encoder.encode_base_64(AIMC_SM_ID)
1339 result = wrapper.delete_submodel_by_id(sm_id)
1343 submodels = wrapper.get_all_submodels()
1344 assert submodels
is not None
1345 assert len(submodels.results) == 0
test_018a_patch_submodel_element_by_path_value_only_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_string)
test_031_delete_submodel_reference_by_id_aas_repository(SdkWrapper wrapper)
test_001a_connect(SdkWrapper wrapper)
test_000b_create_wrapper_by_dict(SdkWrapper wrapper)
test_032_put_submodel_element_by_path_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_string)
test_004a_get_asset_administration_shell_by_id(SdkWrapper wrapper, model.AssetAdministrationShell shared_aas)
test_023_put_file_content_by_path_submodel_repo(SdkWrapper wrapper)
test_025_get_thumbnail_aas_repository(SdkWrapper wrapper)
test_026_put_thumbnail_aas_repository(SdkWrapper wrapper)
test_018b_patch_submodel_element_by_path_value_only_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_bool)
test_033a_get_submodel_element_by_path_value_only_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_string)
test_017d_get_submodel_element_by_path_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_float)
test_016c_post_submodel_element_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_int)
test_005b_put_asset_administration_shell_by_id(SdkWrapper wrapper, model.AssetAdministrationShell shared_aas)
test_000a_create_wrapper_by_url(SdkWrapper wrapper)
test_005a_put_asset_administration_shell_by_id(SdkWrapper wrapper, model.AssetAdministrationShell shared_aas)
test_017c_get_submodel_element_by_path_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_int)
test_027_get_thumbnail_aas_repository(SdkWrapper wrapper)
test_021_post_file_by_path_submodel_repo(SdkWrapper wrapper)
test_020a_encoded_ids(SdkWrapper wrapper)
test_015_get_all_submodel_elements_submodel_repository(SdkWrapper wrapper)
test_018d_patch_submodel_element_by_path_value_only_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_float)
test_017a_get_submodel_element_by_path_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_string)
test_020b_encoded_ids(SdkWrapper wrapper)
test_002_get_all_asset_administration_shells(SdkWrapper wrapper)
test_019b_post_submodel_element_by_path_submodel_repo(SdkWrapper wrapper)
test_036_get_submodel_by_id_metadata(SdkWrapper wrapper, model.Submodel shared_sm)
test_007_get_submodel_by_id_aas_repository(SdkWrapper wrapper, model.Submodel shared_sm)
test_011b_get_submodel_by_id(SdkWrapper wrapper)
test_014_put_submodels_by_id(SdkWrapper wrapper, model.Submodel shared_sm)
test_016d_post_submodel_element_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_float)
model.AssetAdministrationShell shared_aas(model.Submodel shared_sm)
test_033c_get_submodel_element_by_path_value_only_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_float)
test_034_get_submodel_by_id_value_only(SdkWrapper wrapper, model.Submodel shared_sm)
model.Property shared_sme_int()
test_016b_post_submodel_element_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_bool)
model.Property shared_sme_float()
test_099a_delete_submodel_by_id(SdkWrapper wrapper)
test_035_patch_submodel_by_id_value_only(SdkWrapper wrapper, model.Submodel shared_sm, model.Property shared_sme_string, model.Property shared_sme_int, model.Property shared_sme_float)
model.Submodel shared_sm()
test_009a_post_submodel(SdkWrapper wrapper, model.Submodel shared_sm)
model.Property shared_sme_string()
test_029_get_all_submodel_references_aas_repository(SdkWrapper wrapper)
test_018c_patch_submodel_element_by_path_value_only_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_int)
test_011a_get_submodel_by_id(SdkWrapper wrapper, model.Submodel shared_sm)
test_024_delete_file_content_by_path_submodel_repo(SdkWrapper wrapper)
test_010_get_submodel_by_id_aas_repository(SdkWrapper wrapper, model.Submodel shared_sm)
test_099b_delete_submodel_by_id(SdkWrapper wrapper)
test_004b_get_asset_administration_shell_by_id(SdkWrapper wrapper)
test_001b_delete_all_asset_administration_shells(SdkWrapper wrapper)
test_006_get_asset_administration_shell_by_id_reference_aas_repository(SdkWrapper wrapper)
test_017b_get_submodel_element_by_path_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_bool)
model.Property shared_sme_bool()
test_033d_get_submodel_element_by_path_value_only_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_bool)
test_011d_get_submodel_by_id(SdkWrapper wrapper)
test_019a_post_submodel_element_by_path_submodel_repo(SdkWrapper wrapper)
test_008_get_all_submodels(SdkWrapper wrapper)
test_003_post_asset_administration_shell(SdkWrapper wrapper, model.AssetAdministrationShell shared_aas)
test_001c_delete_all_submodels(SdkWrapper wrapper)
test_033b_get_submodel_element_by_path_value_only_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_int)
test_000c_get_client(SdkWrapper wrapper)
test_009b_post_submodel(SdkWrapper wrapper)
test_011c_get_submodel_by_id(SdkWrapper wrapper)
test_013_put_submodel_by_id_aas_repository(SdkWrapper wrapper, model.Submodel shared_sm)
test_028_delete_thumbnail_aas_repository(SdkWrapper wrapper)
test_022_get_file_content_by_path_submodel_repo(SdkWrapper wrapper)
test_030_post_submodel_reference_aas_repository(SdkWrapper wrapper)
test_098_delete_asset_administration_shell_by_id(SdkWrapper wrapper)
test_012_patch_submodel_by_id(SdkWrapper wrapper, model.Submodel shared_sm)
SdkWrapper wrapper(request)
test_016a_post_submodel_element_submodel_repo(SdkWrapper wrapper, model.Property shared_sme_string)