Skip to content

Commit 9b8b01f

Browse files
marythoughtclaude
andcommitted
fix(sdk): add null checks and consolidate token tests
Address CodeRabbit review: - Add Objects.requireNonNull to all four factory methods - Consolidate forToken tests into a parameterized test - Add null-input contract test Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Mary Dickson <mary.dickson@virtru.com>
1 parent 9125b74 commit 9b8b01f

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

sdk/src/main/java/io/opentdf/platform/sdk/EntityIdentifiers.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import io.opentdf.platform.entity.EntityChain;
66
import io.opentdf.platform.entity.Token;
77

8+
import java.util.Objects;
9+
810
/**
911
* Convenience constructors for {@link EntityIdentifier}, mirroring the Go SDK helpers
1012
* in {@code authorization/v2.ForEmail}, {@code ForClientID}, etc.
@@ -33,6 +35,7 @@ private EntityIdentifiers() {}
3335
* Returns an EntityIdentifier for a subject identified by email address.
3436
*/
3537
public static EntityIdentifier forEmail(String email) {
38+
Objects.requireNonNull(email, "email must not be null");
3639
return fromEntity(Entity.newBuilder()
3740
.setEmailAddress(email)
3841
.setCategory(Entity.Category.CATEGORY_SUBJECT)
@@ -43,6 +46,7 @@ public static EntityIdentifier forEmail(String email) {
4346
* Returns an EntityIdentifier for a subject identified by client ID.
4447
*/
4548
public static EntityIdentifier forClientId(String clientId) {
49+
Objects.requireNonNull(clientId, "clientId must not be null");
4650
return fromEntity(Entity.newBuilder()
4751
.setClientId(clientId)
4852
.setCategory(Entity.Category.CATEGORY_SUBJECT)
@@ -53,6 +57,7 @@ public static EntityIdentifier forClientId(String clientId) {
5357
* Returns an EntityIdentifier for a subject identified by username.
5458
*/
5559
public static EntityIdentifier forUserName(String userName) {
60+
Objects.requireNonNull(userName, "userName must not be null");
5661
return fromEntity(Entity.newBuilder()
5762
.setUserName(userName)
5863
.setCategory(Entity.Category.CATEGORY_SUBJECT)
@@ -64,6 +69,7 @@ public static EntityIdentifier forUserName(String userName) {
6469
* The authorization service parses the token to derive the entity chain.
6570
*/
6671
public static EntityIdentifier forToken(String jwt) {
72+
Objects.requireNonNull(jwt, "jwt must not be null");
6773
return EntityIdentifier.newBuilder()
6874
.setToken(Token.newBuilder().setJwt(jwt).build())
6975
.build();

sdk/src/test/java/io/opentdf/platform/sdk/EntityIdentifiersTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,21 +53,21 @@ void forUserName(String userName) {
5353
assertEquals(Entity.Category.CATEGORY_SUBJECT, e.getCategory());
5454
}
5555

56-
@Test
57-
void forToken() {
58-
String jwt = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.test";
56+
@ParameterizedTest
57+
@ValueSource(strings = {"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.test", ""})
58+
void forToken(String jwt) {
5959
EntityIdentifier eid = EntityIdentifiers.forToken(jwt);
6060

6161
assertEquals(EntityIdentifier.IdentifierCase.TOKEN, eid.getIdentifierCase());
6262
assertEquals(jwt, eid.getToken().getJwt());
6363
}
6464

6565
@Test
66-
void forTokenEmptyString() {
67-
EntityIdentifier eid = EntityIdentifiers.forToken("");
68-
69-
assertEquals(EntityIdentifier.IdentifierCase.TOKEN, eid.getIdentifierCase());
70-
assertEquals("", eid.getToken().getJwt());
66+
void nullInputsThrow() {
67+
assertThrows(NullPointerException.class, () -> EntityIdentifiers.forEmail(null));
68+
assertThrows(NullPointerException.class, () -> EntityIdentifiers.forClientId(null));
69+
assertThrows(NullPointerException.class, () -> EntityIdentifiers.forUserName(null));
70+
assertThrows(NullPointerException.class, () -> EntityIdentifiers.forToken(null));
7171
}
7272

7373
private static EntityChain extractEntityChain(EntityIdentifier eid) {

0 commit comments

Comments
 (0)