Skip to content

Commit f0a3a49

Browse files
yift-r3nikinagy
andauthored
CORE-19412: Add exception detailed message (#1573)
* CORE-19412: Add exception detailed message * Apply suggestions from code review Co-authored-by: Nikolett Nagy <[email protected]> --------- Co-authored-by: Nikolett Nagy <[email protected]>
1 parent b614eae commit f0a3a49

File tree

2 files changed

+55
-34
lines changed

2 files changed

+55
-34
lines changed

base/src/main/java/net/corda/v5/base/types/MemberX500Name.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,17 @@ public static Map<String, String> toAttributesMap(@NotNull String name) {
225225
// X500Principal is used to sanitise the syntax as the LdapName will let through a string like
226226
// "O=VALID, L=IN,VALID, C=DE, OU=VALID, CN=VALID" where the (L) has to be escaped.
227227
requireNotNull(name, "name must not be null");
228-
return toAttributesMap(new X500Principal(name));
228+
try {
229+
return toAttributesMap(new X500Principal(name));
230+
} catch (IllegalArgumentException e) {
231+
var message = "The name: \"" + name + "\" in not a valid X500 name. An example of a valid X500 name can be "
232+
+ "\"CN=Alice, OU=Accounting, O=R3, L=Seattle, ST=Washington, C=US\". See RFC 1779 for details.";
233+
throw new IllegalArgumentException(
234+
message,
235+
e
236+
);
237+
}
238+
229239
}
230240

231241
@NotNull
Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package net.corda.v5.base.types;
22

3-
import org.assertj.core.api.Assertions;
43
import org.junit.jupiter.api.Test;
54

65
import javax.security.auth.x500.X500Principal;
76
import java.util.Map;
87

98
import static java.util.Map.entry;
9+
import static org.assertj.core.api.Assertions.assertThat;
10+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
1011

1112
class MemberX500NameJavaApiTest {
1213

@@ -23,12 +24,12 @@ class MemberX500NameJavaApiTest {
2324
public void requiredArguments() {
2425
final MemberX500Name cordaX500Name = new MemberX500Name(organization, locality, country);
2526

26-
Assertions.assertThat(cordaX500Name.getCommonName()).isNull();
27-
Assertions.assertThat(cordaX500Name.getOrganizationUnit()).isNull();
28-
Assertions.assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
29-
Assertions.assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
30-
Assertions.assertThat(cordaX500Name.getState()).isNull();
31-
Assertions.assertThat(cordaX500Name.getCountry()).isEqualTo(country);
27+
assertThat(cordaX500Name.getCommonName()).isNull();
28+
assertThat(cordaX500Name.getOrganizationUnit()).isNull();
29+
assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
30+
assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
31+
assertThat(cordaX500Name.getState()).isNull();
32+
assertThat(cordaX500Name.getCountry()).isEqualTo(country);
3233
}
3334

3435
@Test
@@ -37,14 +38,14 @@ public void allArguments() {
3738
commonName, organizationUnit, organization, locality, state, country
3839
);
3940

40-
Assertions.assertThat(cordaX500Name.getCommonName()).isEqualTo(commonName);
41-
Assertions.assertThat(cordaX500Name.getOrganizationUnit()).isEqualTo(organizationUnit);
42-
Assertions.assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
43-
Assertions.assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
44-
Assertions.assertThat(cordaX500Name.getState()).isEqualTo(state);
45-
Assertions.assertThat(cordaX500Name.getCountry()).isEqualTo(country);
41+
assertThat(cordaX500Name.getCommonName()).isEqualTo(commonName);
42+
assertThat(cordaX500Name.getOrganizationUnit()).isEqualTo(organizationUnit);
43+
assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
44+
assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
45+
assertThat(cordaX500Name.getState()).isEqualTo(state);
46+
assertThat(cordaX500Name.getCountry()).isEqualTo(country);
4647

47-
Assertions.assertThat(cordaX500Name.getX500Principal()).isNotNull();
48+
assertThat(cordaX500Name.getX500Principal()).isNotNull();
4849
}
4950

5051
@Test
@@ -53,31 +54,31 @@ public void constructor_withCommonNameOrganizationLocalityAndCountry() {
5354
commonName, organization, locality, country
5455
);
5556

56-
Assertions.assertThat(cordaX500Name.getCommonName()).isEqualTo(commonName);
57-
Assertions.assertThat(cordaX500Name.getOrganizationUnit()).isNull();
58-
Assertions.assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
59-
Assertions.assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
60-
Assertions.assertThat(cordaX500Name.getState()).isNull();
61-
Assertions.assertThat(cordaX500Name.getCountry()).isEqualTo(country);
57+
assertThat(cordaX500Name.getCommonName()).isEqualTo(commonName);
58+
assertThat(cordaX500Name.getOrganizationUnit()).isNull();
59+
assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
60+
assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
61+
assertThat(cordaX500Name.getState()).isNull();
62+
assertThat(cordaX500Name.getCountry()).isEqualTo(country);
6263
}
6364

6465
@Test
6566
public void build() {
6667
final X500Principal principal = new X500Principal(name);
6768
final MemberX500Name cordaX500Name = MemberX500Name.build(principal);
6869

69-
Assertions.assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
70-
Assertions.assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
71-
Assertions.assertThat(cordaX500Name.getCountry()).isEqualTo(country);
70+
assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
71+
assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
72+
assertThat(cordaX500Name.getCountry()).isEqualTo(country);
7273
}
7374

7475
@Test
7576
public void parse() {
7677
final MemberX500Name cordaX500Name = MemberX500Name.parse(name);
7778

78-
Assertions.assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
79-
Assertions.assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
80-
Assertions.assertThat(cordaX500Name.getCountry()).isEqualTo(country);
79+
assertThat(cordaX500Name.getOrganization()).isEqualTo(organization);
80+
assertThat(cordaX500Name.getLocality()).isEqualTo(locality);
81+
assertThat(cordaX500Name.getCountry()).isEqualTo(country);
8182
}
8283

8384
@Test
@@ -86,19 +87,29 @@ public void x500Principal() {
8687

8788
final X500Principal principal = cordaX500Name.getX500Principal();
8889

89-
Assertions.assertThat(principal).isNotNull();
90+
assertThat(principal).isNotNull();
9091
}
9192

9293
@Test
9394
public void toAttributesMap() {
9495
final Map<String, String > map = MemberX500Name.toAttributesMap(
9596
"CN=alice, OU=Accounting, O=R3, L=Seattle, ST=Washington, C=US"
9697
);
97-
Assertions.assertThat(map).contains(entry("CN", "alice"));
98-
Assertions.assertThat(map).contains(entry("OU", "Accounting"));
99-
Assertions.assertThat(map).contains(entry("O", "R3"));
100-
Assertions.assertThat(map).contains(entry("L", "Seattle"));
101-
Assertions.assertThat(map).contains(entry("ST", "Washington"));
102-
Assertions.assertThat(map).contains(entry("C", "US"));
98+
assertThat(map).contains(entry("CN", "alice"));
99+
assertThat(map).contains(entry("OU", "Accounting"));
100+
assertThat(map).contains(entry("O", "R3"));
101+
assertThat(map).contains(entry("L", "Seattle"));
102+
assertThat(map).contains(entry("ST", "Washington"));
103+
assertThat(map).contains(entry("C", "US"));
104+
}
105+
106+
@Test
107+
public void parseFailsWithBadName() {
108+
assertThatThrownBy( ()-> {
109+
MemberX500Name.parse("B00CA01FD5DC");
110+
}
111+
).hasMessageContaining("B00CA01FD5DC")
112+
.isInstanceOf(IllegalArgumentException.class)
113+
.hasCauseInstanceOf(IllegalArgumentException.class);
103114
}
104115
}

0 commit comments

Comments
 (0)