Skip to content

Commit 9a5e54a

Browse files
committed
Fix didpeer regex, fix test test_peer_did_2_encode_decode, fix service id deabbreviation
Signed-off-by: Patrik Stas <[email protected]>
1 parent 1e8bcad commit 9a5e54a

File tree

3 files changed

+22
-18
lines changed

3 files changed

+22
-18
lines changed

did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/encoding.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ mod tests {
142142
use crate::{
143143
helpers::convert_to_hashmap,
144144
peer_did::{numalgos::numalgo2::Numalgo2, PeerDid},
145-
resolver::{options::PublicKeyEncoding},
145+
resolver::options::PublicKeyEncoding,
146146
};
147147

148148
fn create_verification_method(

did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/mod.rs

+9-10
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ impl Numalgo for Numalgo2 {
5454
#[cfg(test)]
5555
mod test {
5656
use did_doc::schema::did_doc::DidDocument;
57-
use serde_json::{from_value, json};
5857
use pretty_assertions::assert_eq;
58+
use serde_json::{from_value, json};
5959

6060
use crate::{
6161
peer_did::{numalgos::numalgo2::Numalgo2, PeerDid},
@@ -64,44 +64,43 @@ mod test {
6464

6565
#[test]
6666
fn test_peer_did_2_encode_decode() {
67+
let expected_did_peer = "did:peer:2.Ez6MkkukgyKAdBN46UAHvia2nxmioo74F6YdvW1nBT1wfKKha.Vz6MkfoapUdLHHgSMq5PYhdHYCoqGuRku2i17cQ9zAoR5cLSm.SeyJpZCI6IiNmb29iYXIiLCJ0IjpbImRpZC1jb21tdW5pY2F0aW9uIl0sInMiOiJodHRwOi8vZHVtbXl1cmwub3JnLyIsInIiOlsiIzZNa2t1a2d5Il0sImEiOlsiZGlkY29tbS9haXAyO2Vudj1yZmMxOSJdfQ";
6768
let value = json!({
68-
"id": "did:peer:2.Ez6MkkukgyKAdBN46UAHvia2nxmioo74F6YdvW1nBT1wfKKha.Vz6MkfoapUdLHHgSMq5PYhdHYCoqGuRku2i17cQ9zAoR5cLSm.SeyJpZCI6IiMwIiwidCI6WyJkaWQtY29tbXVuaWNhdGlvbiJdLCJzIjoiaHR0cDovL2R1bW15dXJsLm9yZy8iLCJhIjpbImRpZGNvbW0vYWlwMjtlbnY9cmZjMTkiXX0",
69+
"id": expected_did_peer,
6970
"verificationMethod": [
7071
{
7172
"id": "#6MkfoapU",
72-
"controller": "did:example:123456789abcdefghi",
73+
"controller": expected_did_peer,
7374
"type": "Ed25519VerificationKey2020",
7475
"publicKeyBase58": "2MKmtP5qx8wtiaYr24KhMiHH5rV3cpkkvPF4LXT4h7fP"
7576
}
7677
],
7778
"keyAgreement": [
7879
{
7980
"id": "#6Mkkukgy",
80-
"controller": "did:example:123456789abcdefghi",
81+
"controller": expected_did_peer,
8182
"type": "Ed25519VerificationKey2020",
8283
"publicKeyBase58": "7TVeP4vBqpZdMfTE314x7gAoyXnPgfPZozsFcjyeQ6vC"
8384
}
8485
],
8586
"service": [
8687
{
87-
"id": "#0",
88+
"id": "#foobar",
8889
"type": [
8990
"did-communication"
9091
],
9192
"serviceEndpoint": "http://dummyurl.org/",
92-
"routingKeys": [],
93+
"routingKeys": ["#6Mkkukgy"],
9394
"accept": [
9495
"didcomm/aip2;env=rfc19"
9596
],
96-
"priority": 0,
97-
"recipientKeys": [
98-
"did:key:z6MkkukgyKAdBN46UAHvia2nxmioo74F6YdvW1nBT1wfKKha"
99-
]
10097
}
10198
]
10299
});
103100
let ddo_original: DidDocument = from_value(value).unwrap();
104101
let did_peer: PeerDid<Numalgo2> = PeerDid::from_did_doc(ddo_original.clone()).unwrap();
102+
assert_eq!(did_peer.to_string(), expected_did_peer);
103+
105104
let ddo_decoded: DidDocument = did_peer.to_did_doc(PublicKeyEncoding::Base58).unwrap();
106105
assert_eq!(ddo_original, ddo_decoded);
107106
}

did_core/did_methods/did_peer/src/peer_did/numalgos/numalgo2/service_abbreviation.rs

+12-7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use did_doc::schema::{
55
service_accept_type::ServiceAcceptType, service_key_kind::ServiceKeyKind,
66
typed::ServiceType, Service,
77
},
8+
types::uri::Uri,
89
utils::OneOrList,
910
};
1011
use serde::{Deserialize, Serialize};
@@ -18,7 +19,7 @@ pub struct ServiceAbbreviatedDidPeer2 {
1819
// https://identity.foundation/peer-did-method-spec/#generating-a-didpeer2
1920
// > For use with did:peer:2, service id attributes MUST be relative.
2021
// > The service MAY omit the id; however, this is NOT RECOMMEDED (clarified).
21-
id: Option<String>,
22+
id: Option<Uri>,
2223
#[serde(rename = "t")]
2324
service_type: OneOrList<String>,
2425
#[serde(rename = "s")]
@@ -35,7 +36,7 @@ pub struct ServiceAbbreviatedDidPeer2 {
3536

3637
impl ServiceAbbreviatedDidPeer2 {
3738
pub fn new(
38-
id: Option<String>,
39+
id: Option<Uri>,
3940
service_type: OneOrList<String>,
4041
service_endpoint: Url,
4142
routing_keys: Vec<ServiceKeyKind>,
@@ -124,7 +125,7 @@ pub(crate) fn abbreviate_service(
124125
}
125126
};
126127
Ok(ServiceAbbreviatedDidPeer2::new(
127-
Some(service.id().to_string()),
128+
Some(service.id().clone()),
128129
service_types_abbreviated,
129130
service_endpoint,
130131
routing_keys,
@@ -161,7 +162,10 @@ pub(crate) fn deabbreviate_service(
161162

162163
// todo: >>> we created custom error for uniresid wrapper, now we'll need conversion across the
163164
// board.
164-
let id = format!("#service-{}", index).parse()?;
165+
let id = abbreviated
166+
.id
167+
.clone()
168+
.unwrap_or(format!("#service-{}", index).parse()?);
165169

166170
let mut service = Service::new(
167171
id,
@@ -187,6 +191,7 @@ mod tests {
187191
service_accept_type::ServiceAcceptType, service_key_kind::ServiceKeyKind,
188192
typed::ServiceType, Service,
189193
},
194+
types::uri::Uri,
190195
utils::OneOrList,
191196
};
192197
use serde_json::json;
@@ -199,7 +204,7 @@ mod tests {
199204
#[test]
200205
fn test_deabbreviate_service_type_value_dm() {
201206
let service_abbreviated = ServiceAbbreviatedDidPeer2 {
202-
id: Some("#service-0".into()),
207+
id: Some(Uri::new("#service-0").unwrap()),
203208
service_type: OneOrList::One("dm".to_string()),
204209
service_endpoint: Url::parse("https://example.org").unwrap(),
205210
routing_keys: vec![],
@@ -220,9 +225,9 @@ mod tests {
220225
let accept = vec![ServiceAcceptType::DIDCommV1];
221226
let service_endpoint = Url::parse("https://example.com/endpoint").unwrap();
222227
let service_type = OneOrList::One(ServiceType::Other("foobar".to_string()));
223-
let service_id = "#service-0";
228+
let service_id = Uri::new("#service-0").unwrap();
224229
let service_abbreviated = ServiceAbbreviatedDidPeer2 {
225-
id: Some(service_id.into()),
230+
id: Some(service_id),
226231
service_type: OneOrList::One("foobar".to_string()),
227232
service_endpoint: service_endpoint.clone(),
228233
routing_keys: routing_keys.clone(),

0 commit comments

Comments
 (0)