Skip to content

Commit f2d30d3

Browse files
authored
add a test for parsing PortableDid (decentralized-identity#50)
* add a test for parsing PortableDid * remove portable did test in Web5Tests; add portable did test in Web5TestVectors * Update portabledid metadata to required
1 parent 921d962 commit f2d30d3

File tree

4 files changed

+44
-3
lines changed

4 files changed

+44
-3
lines changed

Sources/Web5/Dids/BearerDID.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public struct BearerDID {
105105
uri: did.uri,
106106
document: document,
107107
privateKeys: privateKeys,
108-
metadata: metadata
108+
metadata: metadata ?? [:]
109109
)
110110
}
111111
}

Sources/Web5/Dids/PortableDID.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ public struct PortableDID: Codable {
2020
let privateKeys: [Jwk]
2121

2222
/// Additional DID method specific information to be included
23-
let metadata: Metadata?
23+
let metadata: Metadata
2424
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import XCTest
2+
import AnyCodable
3+
@testable import Web5
4+
5+
final class Web5TestVectorsPortableDid: XCTestCase {
6+
7+
func test_parse() throws {
8+
9+
struct Output: Codable {}
10+
/// TestVector Input could not be optional.
11+
/// We need an optional structure to temporary store incomplete did json
12+
struct OptionalPortableDid: Codable {
13+
typealias Metadata = [String: AnyCodable]
14+
let uri: String?
15+
let document: DIDDocument?
16+
let privateKeys: [Jwk]?
17+
let metadata: Metadata?
18+
}
19+
20+
let testVector = try TestVector<OptionalPortableDid, Output>(
21+
fileName: "parse",
22+
subdirectory: "test-vectors/portable_did"
23+
)
24+
25+
testVector.run { vector in
26+
27+
guard let isError: Bool = vector.errors else {
28+
return XCTFail("Missing `errors` property")
29+
}
30+
31+
let data = try JSONEncoder().encode(vector.input)
32+
33+
if(isError) {
34+
XCTAssertThrowsError(try JSONDecoder().decode(PortableDID.self, from: data))
35+
} else {
36+
let dataModel = try JSONDecoder().decode(PortableDID.self, from: data)
37+
XCTAssertNotNil(dataModel);
38+
}
39+
}
40+
}
41+
}

Tests/Web5Tests/Dids/BearerDIDTests.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ final class BearerDIDTests: XCTestCase {
1212
XCTAssertNoDifference(portableDID.uri, didJWK.uri)
1313
XCTAssertNoDifference(portableDID.document, didJWK.document)
1414
XCTAssertNoDifference(portableDID.privateKeys.count, 1)
15-
XCTAssertNil(portableDID.metadata)
15+
XCTAssertNoDifference(portableDID.metadata, [:])
1616
}
1717

1818
func test_getSigner() throws {

0 commit comments

Comments
 (0)