Skip to content

Commit 0342f91

Browse files
featEIP712): parser test
1 parent 354589f commit 0342f91

File tree

2 files changed

+124
-70
lines changed

2 files changed

+124
-70
lines changed
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
//
2+
// EIP712ParserTests.swift
3+
//
4+
//
5+
// Created by JeneaVranceanu on 18.10.2023.
6+
//
7+
8+
import Foundation
9+
import XCTest
10+
import web3swift
11+
import Web3Core
12+
13+
class EIP712ParserTests: XCTestCase {
14+
let testTypedDataPayload = """
15+
{
16+
"types":{
17+
"EIP712Domain":[
18+
{
19+
"name":"name",
20+
"type":"string"
21+
},
22+
{
23+
"name":"version",
24+
"type":"string"
25+
},
26+
{
27+
"name":"chainId",
28+
"type":"uint256"
29+
},
30+
{
31+
"name":"verifyingContract",
32+
"type":"address"
33+
}
34+
],
35+
"Person":[
36+
{
37+
"name":"name",
38+
"type":"string"
39+
},
40+
{
41+
"name":"wallet",
42+
"type":"address"
43+
}
44+
],
45+
"Mail":[
46+
{
47+
"name":"from",
48+
"type":"Person"
49+
},
50+
{
51+
"name":"to",
52+
"type":"Person"
53+
},
54+
{
55+
"name":"contents",
56+
"type":"string"
57+
}
58+
]
59+
},
60+
"primaryType":"Mail",
61+
"domain":{
62+
"name":"Ether Mail",
63+
"version":"1",
64+
"chainId":1,
65+
"verifyingContract":"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"
66+
},
67+
"message":{
68+
"from":{
69+
"name":"Cow",
70+
"wallet":"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"
71+
},
72+
"to":{
73+
"name":"Bob",
74+
"wallet":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"
75+
},
76+
"contents":"Hello, Bob!"
77+
}
78+
}
79+
"""
80+
81+
func testEIP712Parser() throws {
82+
let parsedEip712TypedData = try EIP712Parser.parse(testTypedDataPayload)
83+
84+
XCTAssertEqual(parsedEip712TypedData.types.count, 3)
85+
let eip712Domain = parsedEip712TypedData.types["EIP712Domain"]
86+
XCTAssertNotNil(eip712Domain)
87+
let person = parsedEip712TypedData.types["Person"]
88+
XCTAssertNotNil(person)
89+
let mail = parsedEip712TypedData.types["Mail"]
90+
XCTAssertNotNil(mail)
91+
92+
93+
XCTAssertNotNil(eip712Domain?.first { $0.name == "name" && $0.type == "string"})
94+
XCTAssertNotNil(eip712Domain?.first { $0.name == "version" && $0.type == "string"})
95+
XCTAssertNotNil(eip712Domain?.first { $0.name == "chainId" && $0.type == "uint256"})
96+
XCTAssertNotNil(eip712Domain?.first { $0.name == "verifyingContract" && $0.type == "address"})
97+
98+
99+
XCTAssertNotNil(person?.first { $0.name == "name" && $0.type == "string"})
100+
XCTAssertNotNil(person?.first { $0.name == "wallet" && $0.type == "address"})
101+
102+
XCTAssertNotNil(mail?.first { $0.name == "from" && $0.type == "Person"})
103+
XCTAssertNotNil(mail?.first { $0.name == "to" && $0.type == "Person"})
104+
XCTAssertNotNil(mail?.first { $0.name == "contents" && $0.type == "string"})
105+
106+
XCTAssertEqual(parsedEip712TypedData.primaryType, "Mail")
107+
108+
XCTAssertEqual(parsedEip712TypedData.domain.count, 4)
109+
XCTAssertEqual(parsedEip712TypedData.domain["name"] as? String, "Ether Mail")
110+
XCTAssertEqual(parsedEip712TypedData.domain["version"] as? String, "1")
111+
XCTAssertEqual(parsedEip712TypedData.domain["chainId"] as? Int, 1)
112+
XCTAssertEqual(parsedEip712TypedData.domain["verifyingContract"] as? String, "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC")
113+
114+
115+
XCTAssertEqual(parsedEip712TypedData.message.count, 3)
116+
XCTAssertEqual(parsedEip712TypedData.message["from"] as? [String : String],
117+
["name" : "Cow",
118+
"wallet" : "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"])
119+
XCTAssertEqual(parsedEip712TypedData.message["to"] as? [String : String],
120+
["name" : "Bob",
121+
"wallet" : "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"])
122+
XCTAssertEqual(parsedEip712TypedData.message["contents"] as? String, "Hello, Bob!")
123+
}
124+
}

Tests/web3swiftTests/localTests/EIP712Tests.swift

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -3,72 +3,6 @@ import Web3Core
33
@testable import web3swift
44

55
class EIP712Tests: XCTestCase {
6-
let testTypedDataPayload = """
7-
{
8-
"types":{
9-
"EIP712Domain":[
10-
{
11-
"name":"name",
12-
"type":"string"
13-
},
14-
{
15-
"name":"version",
16-
"type":"string"
17-
},
18-
{
19-
"name":"chainId",
20-
"type":"uint256"
21-
},
22-
{
23-
"name":"verifyingContract",
24-
"type":"address"
25-
}
26-
],
27-
"Person":[
28-
{
29-
"name":"name",
30-
"type":"string"
31-
},
32-
{
33-
"name":"wallet",
34-
"type":"address"
35-
}
36-
],
37-
"Mail":[
38-
{
39-
"name":"from",
40-
"type":"Person"
41-
},
42-
{
43-
"name":"to",
44-
"type":"Person"
45-
},
46-
{
47-
"name":"contents",
48-
"type":"string"
49-
}
50-
]
51-
},
52-
"primaryType":"Mail",
53-
"domain":{
54-
"name":"Ether Mail",
55-
"version":"1",
56-
"chainId":1,
57-
"verifyingContract":"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"
58-
},
59-
"message":{
60-
"from":{
61-
"name":"Cow",
62-
"wallet":"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"
63-
},
64-
"to":{
65-
"name":"Bob",
66-
"wallet":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"
67-
},
68-
"contents":"Hello, Bob!"
69-
}
70-
}
71-
"""
726

737
func testWithoutChainId() throws {
748
let to = EthereumAddress("0x3F06bAAdA68bB997daB03d91DBD0B73e196c5A4d")!
@@ -171,8 +105,4 @@ class EIP712Tests: XCTestCase {
171105
chainId: chainId)
172106
XCTAssertEqual(signature.toHexString(), "9ee2aadf14739e1cafc3bc1a0b48457c12419d5b480a8ffa86eb7df538c82d0753ca2a6f8024dea576b383cbcbe5e2b181b087e489298674bf6512756cabc5b01b")
173107
}
174-
175-
func testEIP712Parser() throws {
176-
try NSLog(String.init(describing: EIP712Parser.parse(testTypedDataPayload)))
177-
}
178108
}

0 commit comments

Comments
 (0)