Skip to content

Commit e298b2d

Browse files
authored
feat: align ContractRequestMessage behavior (#201)
1 parent d633aef commit e298b2d

File tree

5 files changed

+18
-22
lines changed

5 files changed

+18
-22
lines changed

artifacts/src/main/resources/negotiation/contract-request-message-schema.json

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,23 @@
3333
"$comment": "A URL indicating where messages to the consumer should be sent"
3434
}
3535
},
36+
"oneOf": [
37+
{
38+
"required": [
39+
"callbackAddress"
40+
]
41+
},
42+
{
43+
"required": [
44+
"providerPid"
45+
]
46+
}
47+
],
3648
"required": [
3749
"@context",
3850
"@type",
3951
"consumerPid",
40-
"offer",
41-
"callbackAddress"
52+
"offer"
4253
]
4354
}
4455
}

artifacts/src/main/resources/negotiation/example/contract-request-message.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,5 @@
2121
]
2222
}
2323
]
24-
},
25-
"callbackAddress": "https://example.com/callback"
24+
}
2625
}

artifacts/src/test/java/org/eclipse/dsp/schema/negotiation/InvalidContractRequestMessageSchemaTest.java

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ public class InvalidContractRequestMessageSchemaTest extends AbstractSchemaTest
2727
void verifyInvalidCases() {
2828
assertThat(schema.validate(INVALID_REQUEST_NO_OFFER, JSON).iterator().next().getType()).isEqualTo(REQUIRED);
2929
assertThat(schema.validate(INVALID_REQUEST_NO_ID, JSON).iterator().next().getType()).isEqualTo(REQUIRED);
30-
assertThat(schema.validate(INVALID_REQUEST_NO_CONSUMER_ID, JSON).iterator().next().getType()).isEqualTo(REQUIRED);
31-
assertThat(schema.validate(INVALID_REQUEST_NO_CALLBACK, JSON).iterator().next().getType()).isEqualTo(REQUIRED);
30+
assertThat(schema.validate(INVALID_REQUEST_NO_CALLBACK_NO_CONSUMER_PID, JSON))
31+
.extracting(this::errorExtractor)
32+
.contains(error("callbackAddress", REQUIRED), error("providerPid", REQUIRED));
3233
assertThat(schema.validate(INVALID_REQUEST_NO_TYPE, JSON).iterator().next().getType()).isEqualTo(REQUIRED);
3334
assertThat(schema.validate(INVALID_REQUEST_NO_CONTEXT, JSON).iterator().next().getType()).isEqualTo(REQUIRED);
3435
assertThat(schema.validate(INVALID_REQUEST_JUST_ID, JSON).iterator().next().getType()).isEqualTo(REQUIRED);
@@ -45,7 +46,6 @@ void setUp() {
4546
"https://w3id.org/dspace/2025/1/context.jsonld"
4647
],
4748
"@type": "ContractRequestMessage",
48-
"providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
4949
"consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
5050
"callbackAddress": "https://example.com/callback"
5151
}
@@ -65,20 +65,7 @@ void setUp() {
6565
}
6666
""";
6767

68-
private static final String INVALID_REQUEST_NO_CONSUMER_ID = """
69-
{
70-
"@context": [
71-
"https://w3id.org/dspace/2025/1/context.jsonld"
72-
],
73-
"@type": "ContractRequestMessage",
74-
"offer": {
75-
"@id": "urn:uuid:d526561f-528e-4d5a-ae12-9a9dd9b7a815"
76-
},
77-
"callbackAddress": "https://example.com/callback"
78-
}
79-
""";
80-
81-
private static final String INVALID_REQUEST_NO_CALLBACK = """
68+
private static final String INVALID_REQUEST_NO_CALLBACK_NO_CONSUMER_PID = """
8269
{
8370
"@context": [
8471
"https://w3id.org/dspace/2025/1/context.jsonld"
-2.18 KB
Loading

specifications/negotiation/message/diagram/contract-request-message.puml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ class "dspace:ContractRequestMessage" {
1111
@type : dspace:ContractRequestMessage
1212
dspace:providerPid : String
1313
dspace:consumerPid : String
14-
dspace:callbackAddress : String
1514
}
1615

1716
class odrl:Offer {

0 commit comments

Comments
 (0)