Skip to content

Commit 32c7526

Browse files
committed
Check embedded data spec reference (fixes #1)
1 parent f52adf4 commit 32c7526

File tree

7 files changed

+25
-138
lines changed

7 files changed

+25
-138
lines changed

aas_test_engines/test_cases/v3_0/model.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
is_any_uri,
1818
is_xs_date_time,
1919
)
20+
from aas_test_engines.result import Level
2021
import re
2122

2223
# TODO: AASd-021
@@ -434,6 +435,26 @@ class EmbeddedDataSpecification:
434435
data_specification: Reference
435436
data_specification_content: DataSpecificationContent
436437

438+
def check_reference(self):
439+
deprecated = {
440+
"https://adminshell.io/DataSpecificationTemplates/DataSpecificationIec61360/3/0",
441+
"http://adminshell.io/DataSpecificationTemplates/DataSpecificationIec61360/3/0",
442+
"https://adminshell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0",
443+
"http://adminshell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0",
444+
}
445+
expected = "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIec61360/3"
446+
if len(self.data_specification.keys) != 1:
447+
raise CheckConstraintException("dataSpecification/keys must have exactly one entry", Level.WARNING)
448+
key = self.data_specification.keys[0].value.raw_value
449+
if key in deprecated:
450+
raise CheckConstraintException(
451+
f"dataSpecification/keys[0] has deprecated value {key}, expected {expected}", Level.WARNING
452+
)
453+
if key != expected:
454+
raise CheckConstraintException(
455+
f"dataSpecification/keys[0] has unexpected value {key}, expected {expected}", Level.WARNING
456+
)
457+
437458

438459
@dataclass
439460
class HasDataSpecification:

aas_test_engines/test_cases/v3_0/parse.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020

2121

2222
class CheckConstraintException(Exception):
23-
pass
23+
def __init__(self, msg: str, level: Level = Level.ERROR):
24+
super().__init__(msg)
25+
self.level = level
2426

2527

2628
INVALID = object()
@@ -193,7 +195,7 @@ def check_constraints(obj, result: AasTestResult, path: AdapterPath = AdapterPat
193195
try:
194196
fn()
195197
except CheckConstraintException as e:
196-
result.append(AasTestResult(f"{e} @ {path}", level=Level.ERROR))
198+
result.append(AasTestResult(f"{e} @ {path}", level=e.level))
197199
for field in fields(obj):
198200
value = getattr(obj, field.name)
199201
if isinstance(value, list):

test/fixtures/aasx/invalid/Invalid_xml/aasx/the_aas.xml

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -44,34 +44,6 @@
4444
<valueType>xs:long</valueType>
4545
</qualifier>
4646
</qualifiers>
47-
<embeddedDataSpecifications>
48-
<embeddedDataSpecification>
49-
<dataSpecification>
50-
<type>ModelReference</type>
51-
<keys>
52-
<key>
53-
<type>Submodel</type>
54-
<value>urn:another-company15:2bd0986b</value>
55-
</key>
56-
</keys>
57-
</dataSpecification>
58-
<dataSpecificationContent>
59-
<dataSpecificationIec61360>
60-
<preferredName>
61-
<langStringPreferredNameTypeIec61360>
62-
<language>X-33DQI-g</language>
63-
<text>something_7e795ee2</text>
64-
</langStringPreferredNameTypeIec61360>
65-
<langStringPreferredNameTypeIec61360>
66-
<language>en-UK</language>
67-
<text>Something random in English c8512bdf</text>
68-
</langStringPreferredNameTypeIec61360>
69-
</preferredName>
70-
<value>something_4e9c19b7</value>
71-
</dataSpecificationIec61360>
72-
</dataSpecificationContent>
73-
</embeddedDataSpecification>
74-
</embeddedDataSpecifications>
7547
<valueType>xs:decimal</valueType>
7648
<value>0061707</value>
7749
<valueId>

test/fixtures/aasx/invalid/rel_target_not_exists/aasx/the_aas.json

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,6 @@
1818
"text": "something_535aeb51"
1919
}
2020
],
21-
"embeddedDataSpecifications": [
22-
{
23-
"dataSpecification": {
24-
"keys": [
25-
{
26-
"type": "Submodel",
27-
"value": "urn:another-company15:2bd0986b"
28-
}
29-
],
30-
"type": "ModelReference"
31-
},
32-
"dataSpecificationContent": {
33-
"modelType": "DataSpecificationIec61360",
34-
"preferredName": [
35-
{
36-
"language": "X-33DQI-g",
37-
"text": "something_7e795ee2"
38-
},
39-
{
40-
"language": "en-UK",
41-
"text": "Something random in English c8512bdf"
42-
}
43-
],
44-
"value": "something_4e9c19b7"
45-
}
46-
}
47-
],
4821
"extensions": [
4922
{
5023
"name": "something_aa1af8b3"

test/fixtures/aasx/valid/deprecated_rel/aasx/the_aas.json

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,6 @@
1818
"text": "something_535aeb51"
1919
}
2020
],
21-
"embeddedDataSpecifications": [
22-
{
23-
"dataSpecification": {
24-
"keys": [
25-
{
26-
"type": "Submodel",
27-
"value": "urn:another-company15:2bd0986b"
28-
}
29-
],
30-
"type": "ModelReference"
31-
},
32-
"dataSpecificationContent": {
33-
"modelType": "DataSpecificationIec61360",
34-
"preferredName": [
35-
{
36-
"language": "X-33DQI-g",
37-
"text": "something_7e795ee2"
38-
},
39-
{
40-
"language": "en-UK",
41-
"text": "Something random in English c8512bdf"
42-
}
43-
],
44-
"value": "something_4e9c19b7"
45-
}
46-
}
47-
],
4821
"extensions": [
4922
{
5023
"name": "something_aa1af8b3"

test/fixtures/aasx/valid/json/aasx/the_aas.json

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,6 @@
1818
"text": "something_535aeb51"
1919
}
2020
],
21-
"embeddedDataSpecifications": [
22-
{
23-
"dataSpecification": {
24-
"keys": [
25-
{
26-
"type": "Submodel",
27-
"value": "urn:another-company15:2bd0986b"
28-
}
29-
],
30-
"type": "ModelReference"
31-
},
32-
"dataSpecificationContent": {
33-
"modelType": "DataSpecificationIec61360",
34-
"preferredName": [
35-
{
36-
"language": "X-33DQI-g",
37-
"text": "something_7e795ee2"
38-
},
39-
{
40-
"language": "en-UK",
41-
"text": "Something random in English c8512bdf"
42-
}
43-
],
44-
"value": "something_4e9c19b7"
45-
}
46-
}
47-
],
4821
"extensions": [
4922
{
5023
"name": "something_aa1af8b3"

test/fixtures/aasx/valid/recursive/aasx/the_aas.json

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,6 @@
1818
"text": "something_535aeb51"
1919
}
2020
],
21-
"embeddedDataSpecifications": [
22-
{
23-
"dataSpecification": {
24-
"keys": [
25-
{
26-
"type": "Submodel",
27-
"value": "urn:another-company15:2bd0986b"
28-
}
29-
],
30-
"type": "ModelReference"
31-
},
32-
"dataSpecificationContent": {
33-
"modelType": "DataSpecificationIec61360",
34-
"preferredName": [
35-
{
36-
"language": "X-33DQI-g",
37-
"text": "something_7e795ee2"
38-
},
39-
{
40-
"language": "en-UK",
41-
"text": "Something random in English c8512bdf"
42-
}
43-
],
44-
"value": "something_4e9c19b7"
45-
}
46-
}
47-
],
4821
"extensions": [
4922
{
5023
"name": "something_aa1af8b3"

0 commit comments

Comments
 (0)