Skip to content

Commit 2f537c2

Browse files
committed
added unit test + assertions
1 parent aa14c74 commit 2f537c2

File tree

1 file changed

+78
-7
lines changed

1 file changed

+78
-7
lines changed

Tests/web3swiftTests/localTests/BIP44Tests.swift

Lines changed: 78 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,57 +8,106 @@ import Web3Core
88
@testable import web3swift
99

1010
final class BIP44Tests: LocalTestCase {
11+
private var accountZeroScannedAddresses: [String]!
12+
private var accountZeroAndOneScannedAddresses: [String]!
1113
private var mockTransactionChecker: MockTransactionChecker!
1214

1315
override func setUpWithError() throws {
1416
try super.setUpWithError()
1517
mockTransactionChecker = MockTransactionChecker()
18+
accountZeroScannedAddresses = ["0x31a4aD7593D06D049b3Cc07aB5430264Bf7e069f",
19+
"0x2b4fb04d485446ade5889e77b0cbC2c71075209c",
20+
"0x93DDC6583D4BF6e9b309cfBdC681A78F8B5f37Ff",
21+
"0xab2bBC1392f957F7A5DDCE89b64f30064D39C08b",
22+
"0x5Ae1794fFD14bebF34e0BA65815dF9DCB0FD11a8",
23+
"0x4894C017C7fEfB53A9dc3Cf707d098EBCFD8BdF1",
24+
"0x29cC28Cd30e21e73B51389792453818DaCe33f65",
25+
"0x6B3cB8CFBC89ab7A1D9Ccb53537020c53dD4f6E0",
26+
"0xD5FD55fcB93a47Ef176062ac8265E28A5f09887D",
27+
"0xa8A99549A522aF52a2050e081100ef3D42228B55",
28+
"0x2007f83D32cd82b013b9d0d33Ac9e5Ae725367C5",
29+
"0x80a9A6Dd42D67Dd2EEC5c3D6568Fd16e7c964948",
30+
"0xC7781cd86F6336CfE56Fc243f1a9544595dC984E",
31+
"0x7E3eDEB0201D5A5cAF2b50749a7C7843374c312F",
32+
"0x800853194B31Bf5D621Be0b402E8c2b3b402a2Ed",
33+
"0x73BE98d0a3702E8279ca087B2564b6977389C242",
34+
"0x3eFC4765C5BaB65947864fDf4669b7fb8073d89B",
35+
"0xd521A57ea2bAA6396AE916aD2bC4972a9b3635EB",
36+
"0x561192570145C499f0951dEc0a4Df80D0D0A96bb",
37+
"0x4DdBe17BB1b0056941A1425739978e44D462D7DD"]
38+
accountZeroAndOneScannedAddresses = ["0x31a4aD7593D06D049b3Cc07aB5430264Bf7e069f",
39+
"0x3C7b0FadC415d0be5EBa971DC7Dcc39DdDcd4AF7",
40+
"0x73C13e421eF367c4F55BBC02a8e2a2b12e82f717",
41+
"0xE9D8f89452CF0a0d501B9C798cE696C3a1BAE535",
42+
"0x662e78FD3C77A9B8e693f5DC75398C9c0E7233a6",
43+
"0xBEDF61A3466b40f2591702c91cF888843C81e576",
44+
"0xb406aD2666D36716a847c27BAA6d742ECdA85F23",
45+
"0x069c7bF73d17aeb7b8Ff490177A6eefB7aCcb4a8",
46+
"0xa9dbD111007cAfF0804b98195F7f9231bcBEdf86",
47+
"0x2DDDf0447Eb85ae4B16815B010a7007cd30f0A64",
48+
"0x35ff1f3dcb02B6F137A654a419bFb66FE74dFDFE",
49+
"0xd3A77dE492A58386129546469D0E3D3C67Dd520E",
50+
"0x1c011fEfb24210EB1415DD87C161591f5040d71A",
51+
"0x6C289DCE390863ed58bBd56948950f4D96c7Ab8f",
52+
"0xbB13176bf7571D15E1600077F4da6eD22075676b",
53+
"0x618c1ddD96a3Dc2Bd1E90F7053bCc48986A412f7",
54+
"0x5220836980697693fE2137b64e545f926856feAe",
55+
"0xC49D7d886CA02C438c413ceabE6C1f8138ED6ef8",
56+
"0x049e9466CD2417A615e98DD7233eeec4Fcf5632D",
57+
"0x111FbB56b0B5c97F2896Ee722A917b261bCC77fC",
58+
"0xF3F66e5C119620eBDbD7Fb48B4b5d365De5c9750"]
1659
}
1760

1861
override func tearDownWithError() throws {
1962
try super.tearDownWithError()
2063
mockTransactionChecker = nil
64+
accountZeroScannedAddresses = nil
65+
accountZeroAndOneScannedAddresses = nil
2166
}
22-
23-
//MARK: - warns false
2467

2568
func testDeriveNoWarn() async throws {
2669
let rootNode = try rootNode()
2770

2871
let childNode = try await rootNode.derive(path: "m/44'/60'/8096'/0/1", warns: false, transactionChecker: mockTransactionChecker)
29-
72+
3073
XCTAssertEqual(try XCTUnwrap(childNode).publicKey.toHexString(), "035785d4918449c87892371c0f9ccf6e4eda40a7fb0f773f1254c064d3bba64026")
74+
XCTAssertEqual(mockTransactionChecker.addresses.count, 0)
3175
}
3276

33-
//MARK: - warns true
34-
3577
func testDeriveInvalidPath() async throws {
3678
let rootNode = try rootNode()
3779

3880
let childNode = try? await rootNode.derive(path: "", warns: true, transactionChecker: mockTransactionChecker)
3981

4082
XCTAssertNil(childNode)
83+
XCTAssertEqual(mockTransactionChecker.addresses.count, 0)
4184
}
4285

86+
//MARK: - address
87+
4388
func testAccountZeroCanBeDerivedAlways() async throws {
4489
let rootNode = try rootNode()
4590

4691
let childNode = try await rootNode.derive(path: "m/44'/60'/0'/0/255", warns: true, transactionChecker: mockTransactionChecker)
4792

4893
XCTAssertEqual(try XCTUnwrap(childNode).publicKey.toHexString(), "0262fba1af8f149258123265318114066decf50d16c1222a9d657b7de2296c2734")
94+
XCTAssertEqual(mockTransactionChecker.addresses.count, 0)
4995
}
5096

5197
func testAccountOneWithoutTransactionsInAccountZeroWarns() async throws {
5298
do {
5399
let rootNode = try rootNode()
54100
let path = "m/44'/60'/1'/0/0"
55-
mockTransactionChecker.results = false.times(n: 20)
101+
var results = false.times(n: 20)
102+
results.append(true)
103+
mockTransactionChecker.results = results
56104

57105
let _ = try await rootNode.derive(path: path, warns: true, transactionChecker: mockTransactionChecker)
58106

59107
XCTFail("Child must not be created usign warns true for the path: \(path)")
60108
} catch BIP44Error.warning {
61109
XCTAssertTrue(true)
110+
XCTAssertEqual(mockTransactionChecker.addresses, accountZeroScannedAddresses)
62111
}
63112
}
64113

@@ -71,8 +120,9 @@ final class BIP44Tests: LocalTestCase {
71120
mockTransactionChecker.results = results
72121

73122
let childNode = try await rootNode.derive(path: path, warns: true, transactionChecker: mockTransactionChecker)
74-
123+
75124
XCTAssertEqual(try XCTUnwrap(childNode).publicKey.toHexString(), "036cd8f1bad46fa7caf7a80d48528b90db2a3b7a5c9a18d74d61b286e03850abf4")
125+
XCTAssertEqual(mockTransactionChecker.addresses, accountZeroScannedAddresses)
76126
} catch BIP44Error.warning {
77127
XCTFail("BIP44Error.warning must not be thrown")
78128
}
@@ -92,6 +142,27 @@ final class BIP44Tests: LocalTestCase {
92142
XCTFail("Child must not be created usign warns true for the path: \(path)")
93143
} catch BIP44Error.warning {
94144
XCTAssertTrue(true)
145+
XCTAssertEqual(mockTransactionChecker.addresses, accountZeroAndOneScannedAddresses)
146+
XCTAssertEqual(mockTransactionChecker.addresses.count, 21)
147+
}
148+
}
149+
150+
//MARK: - change + addressIndex
151+
152+
func testAccountOneAndInternalAndNotZeroAddressIndexWithTransactionsInAccountZeroNotWarns() async throws {
153+
do {
154+
let rootNode = try rootNode()
155+
let path = "m/44'/60'/1'/1/128"
156+
var results = false.times(n: 19)
157+
results.append(true)
158+
mockTransactionChecker.results = results
159+
160+
let childNode = try await rootNode.derive(path: path, warns: true, transactionChecker: mockTransactionChecker)
161+
162+
XCTAssertEqual(try XCTUnwrap(childNode).publicKey.toHexString(), "0282134e44d4c040a4b4c1a780d8302955096cf1d5e738b161c83f0ce1b863c14e")
163+
XCTAssertEqual(mockTransactionChecker.addresses, accountZeroScannedAddresses)
164+
} catch BIP44Error.warning {
165+
XCTFail("BIP44Error.warning must not be thrown")
95166
}
96167
}
97168

0 commit comments

Comments
 (0)