package com.nimbusds.jwt; import java.util.Set; import junit.framework.TestCase; import net.minidev.json.JSONObject; /** * Tests JWT claims set serialisation and parsing. * * @author Vladimir Dzhuvinov * @version $version$ (2012-09-27) */ public class ClaimsSetTest extends TestCase { public void testReservedNames() { Set<String> names = ClaimsSet.getReservedNames(); assertTrue(names.contains("exp")); assertTrue(names.contains("nbf")); assertTrue(names.contains("iat")); assertTrue(names.contains("iss")); assertTrue(names.contains("aud")); assertTrue(names.contains("prn")); assertTrue(names.contains("jti")); assertTrue(names.contains("typ")); assertEquals(8, names.size()); } public void testRun() { ClaimsSet cs = new ClaimsSet(); // exp assertEquals("exp init check", -1, cs.getExpirationTimeClaim()); cs.setExpirationTimeClaim(123l); assertEquals("exp set check", 123l, cs.getExpirationTimeClaim()); // nbf assertEquals("nbf init check", -1, cs.getNotBeforeClaim()); cs.setNotBeforeClaim(123l); assertEquals("nbf set check", 123l, cs.getNotBeforeClaim()); // iat assertEquals("iat init check", -1, cs.getIssuedAtClaim()); cs.setIssuedAtClaim(123l); assertEquals("iat set check", 123l, cs.getIssuedAtClaim()); // iss assertNull("iss init check", cs.getIssuerClaim()); cs.setIssuerClaim("http://issuer.com"); assertEquals("iss set check", "http://issuer.com", cs.getIssuerClaim()); // aud assertNull("aud init check", cs.getAudienceClaim()); cs.setAudienceClaim("http://audience.com"); assertEquals("aud set check", "http://audience.com", cs.getAudienceClaim()); // prn assertNull("prn init check", cs.getPrincipalClaim()); cs.setPrincipalClaim("http://principal.com"); assertEquals("prn set check", "http://principal.com", cs.getPrincipalClaim()); // jti assertNull("jti init check", cs.getJWTIDClaim()); cs.setJWTIDClaim("123"); assertEquals("jti set check", "123", cs.getJWTIDClaim()); // typ assertNull("typ init check", cs.getTypeClaim()); cs.setTypeClaim("JWT"); assertEquals("typ set check", "JWT", cs.getTypeClaim()); // custom claims assertTrue(cs.getCustomClaims().isEmpty()); // x-custom cs.setCustomClaim("x-custom", "abc"); assertEquals("abc", (String)cs.getCustomClaim("x-custom")); assertEquals(1, cs.getCustomClaims().size()); // serialise JSONObject json = cs.toJSONObject(); assertEquals(9, json.size()); // parse back try { cs = ClaimsSet.parse(json); } catch (java.text.ParseException e) { fail(e.getMessage()); } assertEquals("exp parse check", 123l, cs.getExpirationTimeClaim()); assertEquals("nbf parse check", 123l, cs.getNotBeforeClaim()); assertEquals("iat parse check", 123l, cs.getIssuedAtClaim()); assertEquals("iss parse check", "http://issuer.com", cs.getIssuerClaim()); assertEquals("aud parse check", "http://audience.com", cs.getAudienceClaim()); assertEquals("prn parse check", "http://principal.com", cs.getPrincipalClaim()); assertEquals("jti parse check", "123", cs.getJWTIDClaim()); assertEquals("typ parse check", "JWT", cs.getTypeClaim()); assertEquals("abc", (String)cs.getCustomClaim("x-custom")); assertEquals(1, cs.getCustomClaims().size()); } }