package com.twilio.jwt.client;
import com.google.common.collect.Lists;
import com.twilio.jwt.Jwt;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import org.junit.Assert;
import org.junit.Test;
import java.util.Date;
import java.util.List;
/**
* Test class for {@link ClientCapability}.
*/
public class ClientCapabilityTest {
private static final String ACCOUNT_SID = "AC123";
private static final String SECRET = "secret";
@Test
public void testEmptyToken() {
Jwt jwt = new ClientCapability.Builder(ACCOUNT_SID, SECRET).build();
Claims claims =
Jwts.parser()
.setSigningKey(SECRET.getBytes())
.parseClaimsJws(jwt.toJwt())
.getBody();
Assert.assertEquals(ACCOUNT_SID, claims.getIssuer());
Assert.assertTrue(claims.getExpiration().getTime() > new Date().getTime());
}
@Test
public void testToken() {
List<Scope> scopes = Lists.newArrayList(
new IncomingClientScope("incomingClient"),
new EventStreamScope.Builder().build(),
new OutgoingClientScope.Builder("AP123").build()
);
Jwt jwt = new ClientCapability.Builder(ACCOUNT_SID, SECRET).scopes(scopes).build();
Claims claims =
Jwts.parser()
.setSigningKey(SECRET.getBytes())
.parseClaimsJws(jwt.toJwt())
.getBody();
Assert.assertEquals(ACCOUNT_SID, claims.getIssuer());
Assert.assertTrue(claims.getExpiration().getTime() > new Date().getTime());
Assert.assertEquals(
"scope:client:incoming?clientName=incomingClient " +
"scope:stream:subscribe?path=/2010-04-01/Events " +
"scope:client:outgoing?appSid=AP123",
claims.get("scope")
);
}
}