Skip to content

Commit 9ccf56a

Browse files
committed
fix: unique ids for services in legacy peer
Signed-off-by: Daniel Bluhm <dbluhm@pm.me>
1 parent 084f206 commit 9ccf56a

File tree

2 files changed

+88
-7
lines changed

2 files changed

+88
-7
lines changed

aries_cloudagent/resolver/default/legacy_peer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,13 @@ def authentication_is_list_of_verification_methods_and_refs(value: dict) -> dict
115115
def didcomm_services_use_updated_conventions(value: dict) -> dict:
116116
"""Update DIDComm services to use updated conventions."""
117117
if "service" in value:
118-
for service in value["service"]:
118+
for index, service in enumerate(value["service"]):
119119
if "type" in service and service["type"] == "IndyAgent":
120120
service["type"] = "did-communication"
121121
if ";" in service["id"]:
122-
service["id"] = value["id"] + "#didcomm"
122+
service["id"] = value["id"] + f"#didcomm-{index}"
123123
if "#" not in service["id"]:
124-
service["id"] += "#didcomm"
124+
service["id"] += f"#didcomm-{index}"
125125
if "priority" in service and service["priority"] is None:
126126
service.pop("priority")
127127
return value

aries_cloudagent/resolver/default/tests/test_legacy_peer.py

Lines changed: 85 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ async def test_resolve_x_not_found(
173173
"authentication": ["did:sov:JNKL9kJxQi5pNCfA8QBXdJ#1"],
174174
"service": [
175175
{
176-
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ#didcomm",
176+
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ#didcomm-0",
177177
"type": "did-communication",
178178
"priority": 0,
179179
"recipientKeys": ["did:sov:JNKL9kJxQi5pNCfA8QBXdJ#1"],
@@ -229,7 +229,7 @@ async def test_resolve_x_not_found(
229229
"authentication": ["did:sov:5qXMeLdyWEQhieFUBNw5ux#1"],
230230
"service": [
231231
{
232-
"id": "did:sov:5qXMeLdyWEQhieFUBNw5ux#didcomm",
232+
"id": "did:sov:5qXMeLdyWEQhieFUBNw5ux#didcomm-0",
233233
"type": "did-communication",
234234
"recipientKeys": ["did:sov:5qXMeLdyWEQhieFUBNw5ux#1"],
235235
"serviceEndpoint": "http://172.17.0.1:9031/a2a/5b6dyY6PndLaCnWxZbeEYW/5b6dyY6PndLaCnWxZbeEYW/2f6aae0c-6b04-40ff-a25e-faecaea39f83",
@@ -276,7 +276,7 @@ async def test_resolve_x_not_found(
276276
"authentication": [],
277277
"service": [
278278
{
279-
"id": "did:sov:1H6d1WS29Bcfr7Bb9tZxA#didcomm",
279+
"id": "did:sov:1H6d1WS29Bcfr7Bb9tZxA#didcomm-0",
280280
"type": "did-communication",
281281
"priority": 0,
282282
"recipientKeys": ["did:sov:1H6d1WS29Bcfr7Bb9tZxA#cSwsDbSW"],
@@ -338,7 +338,7 @@ async def test_resolve_x_not_found(
338338
"authentication": ["did:sov:PkWfCgY4SSAYeSoaWx3RFP#1"],
339339
"service": [
340340
{
341-
"id": "did:sov:PkWfCgY4SSAYeSoaWx3RFP#didcomm",
341+
"id": "did:sov:PkWfCgY4SSAYeSoaWx3RFP#didcomm-0",
342342
"type": "did-communication",
343343
"priority": 0,
344344
"recipientKeys": ["did:sov:PkWfCgY4SSAYeSoaWx3RFP#1"],
@@ -409,6 +409,87 @@ async def test_resolve_x_not_found(
409409
],
410410
},
411411
),
412+
( # Doc with multiple services
413+
{
414+
"@context": "https://w3id.org/did/v1",
415+
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ",
416+
"publicKey": [
417+
{
418+
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ#1",
419+
"type": "Ed25519VerificationKey2018",
420+
"controller": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ",
421+
"publicKeyBase58": "AU2FFjtkVzjFuirgWieqGGqtNrAZWS9LDuB8TDp6EUrG",
422+
}
423+
],
424+
"authentication": [
425+
{
426+
"type": "Ed25519SignatureAuthentication2018",
427+
"publicKey": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ#1",
428+
}
429+
],
430+
"service": [
431+
{
432+
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ;indy",
433+
"type": "IndyAgent",
434+
"priority": 0,
435+
"recipientKeys": [
436+
"AU2FFjtkVzjFuirgWieqGGqtNrAZWS9LDuB8TDp6EUrG"
437+
],
438+
"routingKeys": [
439+
"9NnKFUZoYcCqYC2PcaXH3cnaGsoRfyGgyEHbvbLJYh8j"
440+
],
441+
"serviceEndpoint": "http://bob:3000",
442+
},
443+
{
444+
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ;indy-ws",
445+
"type": "IndyAgent",
446+
"priority": 1,
447+
"recipientKeys": [
448+
"AU2FFjtkVzjFuirgWieqGGqtNrAZWS9LDuB8TDp6EUrG"
449+
],
450+
"routingKeys": [
451+
"9NnKFUZoYcCqYC2PcaXH3cnaGsoRfyGgyEHbvbLJYh8j"
452+
],
453+
"serviceEndpoint": "ws://bob:3000",
454+
},
455+
],
456+
},
457+
{
458+
"@context": "https://w3id.org/did/v1",
459+
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ",
460+
"verificationMethod": [
461+
{
462+
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ#1",
463+
"type": "Ed25519VerificationKey2018",
464+
"controller": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ",
465+
"publicKeyBase58": "AU2FFjtkVzjFuirgWieqGGqtNrAZWS9LDuB8TDp6EUrG",
466+
}
467+
],
468+
"authentication": ["did:sov:JNKL9kJxQi5pNCfA8QBXdJ#1"],
469+
"service": [
470+
{
471+
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ#didcomm-0",
472+
"type": "did-communication",
473+
"priority": 0,
474+
"recipientKeys": ["did:sov:JNKL9kJxQi5pNCfA8QBXdJ#1"],
475+
"routingKeys": [
476+
"did:key:z6Mknq3MqipEt9hJegs6J9V7tiLa6T5H5rX3fFCXksJKTuv7#z6Mknq3MqipEt9hJegs6J9V7tiLa6T5H5rX3fFCXksJKTuv7"
477+
],
478+
"serviceEndpoint": "http://bob:3000",
479+
},
480+
{
481+
"id": "did:sov:JNKL9kJxQi5pNCfA8QBXdJ#didcomm-1",
482+
"type": "did-communication",
483+
"priority": 1,
484+
"recipientKeys": ["did:sov:JNKL9kJxQi5pNCfA8QBXdJ#1"],
485+
"routingKeys": [
486+
"did:key:z6Mknq3MqipEt9hJegs6J9V7tiLa6T5H5rX3fFCXksJKTuv7#z6Mknq3MqipEt9hJegs6J9V7tiLa6T5H5rX3fFCXksJKTuv7"
487+
],
488+
"serviceEndpoint": "ws://bob:3000",
489+
},
490+
],
491+
},
492+
),
412493
],
413494
)
414495
def test_corrections(self, input_doc: dict, expected: dict):

0 commit comments

Comments
 (0)