Skip to content

Commit

Permalink
Merge pull request #161 from auth0/fix-claim-isnull
Browse files Browse the repository at this point in the history
Fix Claim.isNull() method for JSON Objects
  • Loading branch information
lbalmaceda authored Apr 12, 2017
2 parents 1f35900 + 283b899 commit 3193e62
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 9 deletions.
2 changes: 1 addition & 1 deletion lib/src/main/java/com/auth0/jwt/impl/JsonNodeClaim.java
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ public <T> T as(Class<T> tClazz) throws JWTDecodeException {

@Override
public boolean isNull() {
return !(data.isArray() || data.canConvertToLong() || data.isTextual() || data.isNumber() || data.isBoolean());
return false;
}

/**
Expand Down
5 changes: 5 additions & 0 deletions lib/src/main/java/com/auth0/jwt/interfaces/Claim.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
*/
public interface Claim {

/**
* Whether this Claim has a null value or not.
*
* @return whether this Claim has a null value or not.
*/
boolean isNull();

/**
Expand Down
4 changes: 2 additions & 2 deletions lib/src/test/java/com/auth0/jwt/JWTDecoderTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -192,11 +192,11 @@ public void shouldGetValidClaim() throws Exception {
}

@Test
public void shouldGetNullClaimIfClaimValueIsNull() throws Exception {
public void shouldNotGetNullClaimIfClaimIsEmptyObject() throws Exception {
DecodedJWT jwt = JWTDecoder.decode("eyJhbGciOiJIUzI1NiJ9.eyJvYmplY3QiOnt9fQ.d3nUeeL_69QsrHL0ZWij612LHEQxD8EZg1rNoY3a4aI");
assertThat(jwt, is(notNullValue()));
assertThat(jwt.getClaim("object"), is(notNullValue()));
assertThat(jwt.getClaim("object").isNull(), is(true));
assertThat(jwt.getClaim("object").isNull(), is(false));
}

@Test
Expand Down
79 changes: 73 additions & 6 deletions lib/src/test/java/com/auth0/jwt/impl/JsonNodeClaimTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@
import org.junit.Test;
import org.junit.rules.ExpectedException;

import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.*;

import static com.auth0.jwt.impl.JWTParser.getDefaultObjectMapper;
import static com.auth0.jwt.impl.JsonNodeClaim.claimFromNode;
Expand Down Expand Up @@ -268,12 +265,82 @@ public void shouldReturnBaseClaimWhenParsingNullValue() throws Exception {
}

@Test
public void shouldReturnValidButNullClaimIfTreeIsEmpty() throws Exception {
public void shouldReturnNonNullClaimWhenParsingObject() throws Exception {
JsonNode value = mapper.valueToTree(new Object());
Claim claim = claimFromNode(value);

assertThat(claim, is(notNullValue()));
assertThat(claim, is(instanceOf(JsonNodeClaim.class)));
assertThat(claim.isNull(), is(true));
assertThat(claim.isNull(), is(false));
}

@Test
public void shouldReturnNonNullClaimWhenParsingArray() throws Exception {
JsonNode value = mapper.valueToTree(new String[]{});
Claim claim = claimFromNode(value);

assertThat(claim, is(notNullValue()));
assertThat(claim, is(instanceOf(JsonNodeClaim.class)));
assertThat(claim.isNull(), is(false));
}

@Test
public void shouldReturnNonNullClaimWhenParsingList() throws Exception {
JsonNode value = mapper.valueToTree(new ArrayList<String>());
Claim claim = claimFromNode(value);

assertThat(claim, is(notNullValue()));
assertThat(claim, is(instanceOf(JsonNodeClaim.class)));
assertThat(claim.isNull(), is(false));
}

@Test
public void shouldReturnNonNullClaimWhenParsingStringValue() throws Exception {
JsonNode value = mapper.valueToTree("");
Claim claim = claimFromNode(value);

assertThat(claim, is(notNullValue()));
assertThat(claim, is(instanceOf(JsonNodeClaim.class)));
assertThat(claim.isNull(), is(false));
}

@Test
public void shouldReturnNonNullClaimWhenParsingIntValue() throws Exception {
JsonNode value = mapper.valueToTree(Integer.MAX_VALUE);
Claim claim = claimFromNode(value);

assertThat(claim, is(notNullValue()));
assertThat(claim, is(instanceOf(JsonNodeClaim.class)));
assertThat(claim.isNull(), is(false));
}

@Test
public void shouldReturnNonNullClaimWhenParsingDoubleValue() throws Exception {
JsonNode value = mapper.valueToTree(Double.MAX_VALUE);
Claim claim = claimFromNode(value);

assertThat(claim, is(notNullValue()));
assertThat(claim, is(instanceOf(JsonNodeClaim.class)));
assertThat(claim.isNull(), is(false));
}

@Test
public void shouldReturnNonNullClaimWhenParsingDateValue() throws Exception {
JsonNode value = mapper.valueToTree(new Date());
Claim claim = claimFromNode(value);

assertThat(claim, is(notNullValue()));
assertThat(claim, is(instanceOf(JsonNodeClaim.class)));
assertThat(claim.isNull(), is(false));
}

@Test
public void shouldReturnNonNullClaimWhenParsingBooleanValue() throws Exception {
JsonNode value = mapper.valueToTree(Boolean.TRUE);
Claim claim = claimFromNode(value);

assertThat(claim, is(notNullValue()));
assertThat(claim, is(instanceOf(JsonNodeClaim.class)));
assertThat(claim.isNull(), is(false));
}
}

0 comments on commit 3193e62

Please sign in to comment.