mirror of https://github.com/jwtk/jjwt.git
Updated Claims implementation as well as put/putAll to better handle specification dates.
This commit is contained in:
parent
56f507fb59
commit
d330f2d4cc
|
@ -117,6 +117,15 @@ public class DefaultClaims extends JwtMap implements Claims {
|
|||
Claims.NOT_BEFORE.equals(claimName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object put(String s, Object o) {
|
||||
if (o instanceof Date && isSpecDate(s)) { //since 0.10.0
|
||||
Date date = (Date)o;
|
||||
return setDateAsSeconds(s, date);
|
||||
}
|
||||
return super.put(s, o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T get(String claimName, Class<T> requiredType) {
|
||||
|
||||
|
|
|
@ -31,12 +31,13 @@ public class JwtMap implements Map<String, Object> {
|
|||
private final Map<String, Object> map;
|
||||
|
||||
public JwtMap() {
|
||||
this(new LinkedHashMap<String, Object>());
|
||||
this.map = new LinkedHashMap<>();
|
||||
}
|
||||
|
||||
public JwtMap(Map<String, Object> map) {
|
||||
this();
|
||||
Assert.notNull(map, "Map argument cannot be null.");
|
||||
this.map = map;
|
||||
putAll(map);
|
||||
}
|
||||
|
||||
protected String getString(String name) {
|
||||
|
@ -118,12 +119,12 @@ public class JwtMap implements Map<String, Object> {
|
|||
}
|
||||
}
|
||||
|
||||
protected void setDateAsSeconds(String name, Date d) {
|
||||
protected Object setDateAsSeconds(String name, Date d) {
|
||||
if (d == null) {
|
||||
map.remove(name);
|
||||
return map.remove(name);
|
||||
} else {
|
||||
long seconds = d.getTime() / 1000;
|
||||
map.put(name, seconds);
|
||||
return map.put(name, seconds);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -173,7 +174,7 @@ public class JwtMap implements Map<String, Object> {
|
|||
return;
|
||||
}
|
||||
for (String s : m.keySet()) {
|
||||
map.put(s, m.get(s));
|
||||
put(s, m.get(s));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -192,4 +192,93 @@ class DefaultClaimsTest {
|
|||
assertEquals(expected, claims.getNotBefore())
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPutWithIat() {
|
||||
long millis = System.currentTimeMillis()
|
||||
long seconds = millis / 1000 as long
|
||||
Date now = new Date(millis)
|
||||
claims.put('iat', now) //this should convert 'now' to seconds since epoch
|
||||
assertEquals seconds, claims.get('iat') //conversion should have happened
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPutAllWithIat() {
|
||||
long millis = System.currentTimeMillis()
|
||||
long seconds = millis / 1000 as long
|
||||
Date now = new Date(millis)
|
||||
claims.putAll([iat: now]) //this should convert 'now' to seconds since epoch
|
||||
assertEquals seconds, claims.get('iat') //conversion should have happened
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConstructorWithIat() {
|
||||
long millis = System.currentTimeMillis()
|
||||
long seconds = millis / 1000 as long
|
||||
Date now = new Date(millis)
|
||||
this.claims = new DefaultClaims([iat: now]) //this should convert 'now' to seconds since epoch
|
||||
assertEquals seconds, claims.get('iat') //conversion should have happened
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPutWithNbf() {
|
||||
long millis = System.currentTimeMillis()
|
||||
long seconds = millis / 1000 as long
|
||||
Date now = new Date(millis)
|
||||
claims.put('nbf', now) //this should convert 'now' to seconds since epoch
|
||||
assertEquals seconds, claims.get('nbf') //conversion should have happened
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPutAllWithNbf() {
|
||||
long millis = System.currentTimeMillis()
|
||||
long seconds = millis / 1000 as long
|
||||
Date now = new Date(millis)
|
||||
claims.putAll([nbf: now]) //this should convert 'now' to seconds since epoch
|
||||
assertEquals seconds, claims.get('nbf') //conversion should have happened
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConstructorWithNbf() {
|
||||
long millis = System.currentTimeMillis()
|
||||
long seconds = millis / 1000 as long
|
||||
Date now = new Date(millis)
|
||||
this.claims = new DefaultClaims([nbf: now]) //this should convert 'now' to seconds since epoch
|
||||
assertEquals seconds, claims.get('nbf') //conversion should have happened
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPutWithExp() {
|
||||
long millis = System.currentTimeMillis()
|
||||
long seconds = millis / 1000 as long
|
||||
Date now = new Date(millis)
|
||||
claims.put('exp', now) //this should convert 'now' to seconds since epoch
|
||||
assertEquals seconds, claims.get('exp') //conversion should have happened
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPutAllWithExp() {
|
||||
long millis = System.currentTimeMillis()
|
||||
long seconds = millis / 1000 as long
|
||||
Date now = new Date(millis)
|
||||
claims.putAll([exp: now]) //this should convert 'now' to seconds since epoch
|
||||
assertEquals seconds, claims.get('exp') //conversion should have happened
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConstructorWithExp() {
|
||||
long millis = System.currentTimeMillis()
|
||||
long seconds = millis / 1000 as long
|
||||
Date now = new Date(millis)
|
||||
this.claims = new DefaultClaims([exp: now]) //this should convert 'now' to seconds since epoch
|
||||
assertEquals seconds, claims.get('exp') //conversion should have happened
|
||||
}
|
||||
|
||||
@Test
|
||||
void testPutWithNonSpecDate() {
|
||||
long millis = System.currentTimeMillis()
|
||||
Date now = new Date(millis)
|
||||
claims.put('foo', now)
|
||||
assertEquals now, claims.get('foo') //conversion should NOT have occurred
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue