Skip to content

Commit e256525

Browse files
authored
test: migrate StrKeyTest to Kotlin. (#718)
* test: migrate `StrKeyTest` to Kotlin. * add kotest-framework-datatest * more test
1 parent b0bec79 commit e256525

File tree

4 files changed

+490
-769
lines changed

4 files changed

+490
-769
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ dependencies {
5959

6060
testImplementation("io.kotest:kotest-runner-junit5:5.9.1")
6161
testImplementation("io.kotest:kotest-assertions-core:5.9.1")
62+
testImplementation("io.kotest:kotest-framework-datatest:5.9.1")
6263
}
6364

6465
tasks {
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
package org.stellar.sdk;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.fail;
5+
6+
import org.junit.Test;
7+
import org.stellar.sdk.xdr.AccountID;
8+
import org.stellar.sdk.xdr.CryptoKeyType;
9+
import org.stellar.sdk.xdr.MuxedAccount;
10+
11+
public class DeprecatedStrKeyTest {
12+
@Test
13+
public void testEncodeToXDRMuxedAccountMAddress() {
14+
String unmuxedAddress = "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ";
15+
AccountID account = StrKey.encodeToXDRAccountId(unmuxedAddress);
16+
17+
String muxedAddress = "MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK";
18+
MuxedAccount muxedAccount = StrKey.encodeToXDRMuxedAccount(muxedAddress);
19+
assertEquals(CryptoKeyType.KEY_TYPE_MUXED_ED25519, muxedAccount.getDiscriminant());
20+
assertEquals(account.getAccountID().getEd25519(), muxedAccount.getMed25519().getEd25519());
21+
assertEquals(
22+
-9223372036854775808L,
23+
muxedAccount.getMed25519().getId().getUint64().getNumber().longValue());
24+
25+
assertEquals(muxedAddress, StrKey.encodeMuxedAccount(muxedAccount));
26+
}
27+
28+
@Test
29+
public void testEncodeAccountIdToMuxed() {
30+
String unmuxedAddress = "GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ";
31+
AccountID account = StrKey.encodeToXDRAccountId(unmuxedAddress);
32+
33+
MuxedAccount muxedAccount = StrKey.encodeToXDRMuxedAccount(unmuxedAddress);
34+
assertEquals(CryptoKeyType.KEY_TYPE_ED25519, muxedAccount.getDiscriminant());
35+
assertEquals(account.getAccountID().getEd25519(), muxedAccount.getEd25519());
36+
}
37+
38+
@Test
39+
public void testEncodeToXDRMuxedAccountInvalidAddress() {
40+
// https://github.com/stellar/go/blob/2b876cd781b6dd0c218dcdd4f300900f87b3889e/strkey/main_test.go#L86
41+
try {
42+
StrKey.encodeToXDRMuxedAccount("XBU2RRGLXH3E5CQHTD3ODLDF2BWDCYUSSBLLZ5GNW7JXHDIYKXZWGTOG");
43+
fail();
44+
} catch (IllegalArgumentException e) {
45+
assertEquals("Version byte is invalid", e.getMessage());
46+
}
47+
48+
try {
49+
StrKey.encodeToXDRMuxedAccount("MBU2RRGLXH3E5CQHTD3ODLDF2BWDCYUSSBLLZ5GNW7JXHDIYKXZWGTOG");
50+
fail();
51+
} catch (IllegalArgumentException e) {
52+
assertEquals("Invalid data length, expected 40 bytes, got 32", e.getMessage());
53+
}
54+
55+
try {
56+
StrKey.encodeToXDRMuxedAccount(
57+
"MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUR");
58+
fail();
59+
} catch (IllegalArgumentException ignored) {
60+
}
61+
62+
try {
63+
StrKey.encodeToXDRMuxedAccount("GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZA");
64+
fail();
65+
} catch (IllegalArgumentException ignored) {
66+
}
67+
68+
try {
69+
StrKey.encodeToXDRMuxedAccount("G47QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVP2I");
70+
fail();
71+
} catch (IllegalArgumentException ignored) {
72+
}
73+
74+
try {
75+
StrKey.encodeToXDRMuxedAccount(
76+
"MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLKA");
77+
fail();
78+
} catch (IllegalArgumentException ignored) {
79+
}
80+
81+
try {
82+
StrKey.encodeToXDRMuxedAccount(
83+
"M47QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUQ");
84+
fail();
85+
} catch (IllegalArgumentException ignored) {
86+
}
87+
88+
try {
89+
StrKey.encodeToXDRMuxedAccount(
90+
"M47QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUQ");
91+
fail();
92+
} catch (IllegalArgumentException ignored) {
93+
}
94+
95+
try {
96+
StrKey.encodeToXDRMuxedAccount(
97+
"MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUK");
98+
fail();
99+
} catch (IllegalArgumentException ignored) {
100+
}
101+
102+
try {
103+
StrKey.encodeToXDRMuxedAccount(
104+
"MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAACJUO");
105+
fail();
106+
} catch (IllegalArgumentException ignored) {
107+
}
108+
109+
try {
110+
StrKey.encodeToXDRMuxedAccount("");
111+
fail();
112+
} catch (IllegalArgumentException ignored) {
113+
}
114+
115+
try {
116+
StrKey.encodeToXDRMuxedAccount("SBCVMMCBEDB64TVJZFYJOJAERZC4YVVUOE6SYR2Y76CBTENGUSGWRRVO");
117+
fail();
118+
} catch (IllegalArgumentException ignored) {
119+
}
120+
121+
try {
122+
StrKey.encodeToXDRMuxedAccount(
123+
"MCEO75Y6YKE53HM6N46IJYH3LK3YYFZ4QWGNUKCSSIQSH3KOAD7BEAAAAAAAAAAAPNT2W___");
124+
fail();
125+
} catch (IllegalArgumentException ignored) {
126+
}
127+
128+
try {
129+
StrKey.encodeToXDRMuxedAccount(
130+
"MDWZCOEQRODFCH6ISYQPWY67L3ULLWS5ISXYYL5GH43W7YFMTLB64AAAAAAAAAAAAHGLW===");
131+
fail();
132+
} catch (IllegalArgumentException ignored) {
133+
}
134+
135+
try {
136+
StrKey.encodeToXDRMuxedAccount(
137+
" MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVAAAAAAAAAAAAAJLK");
138+
fail();
139+
} catch (IllegalArgumentException ignored) {
140+
}
141+
}
142+
}

0 commit comments

Comments
 (0)