package org.pac4j.oidc.credentials;
import com.nimbusds.jwt.JWTParser;
import com.nimbusds.oauth2.sdk.AuthorizationCode;
import com.nimbusds.oauth2.sdk.Scope;
import com.nimbusds.oauth2.sdk.token.BearerAccessToken;
import com.nimbusds.oauth2.sdk.token.RefreshToken;
import org.apache.commons.lang3.SerializationUtils;
import org.junit.Test;
import org.pac4j.core.util.TestsConstants;
import java.text.ParseException;
import static org.junit.Assert.*;
/**
* Tests {@link OidcCredentials}.
*
* @author Jerome Leleu
* @since 1.9.2
*/
public final class OidcCredentialsTests implements TestsConstants {
private final static String ID_TOKEN = "eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2p3dC1pZHAuZXhhbX"
+ "BsZS5jb20iLCJzdWIiOiJtYWlsdG86cGVyc29uQGV4YW1wbGUuY29tIiwibmJmIjoxNDQwMTEyMDE1LCJleHAiOjE0NDAxMTU2"
+ "MTUsImlhdCI6MTQ0MDExMjAxNSwianRpIjoiaWQxMjM0NTYiLCJ0eXAiOiJodHRwczovL2V4YW1wbGUuY29tL3JlZ2lzdGVyIn0.";
@Test
public void testSerialization() throws ParseException {
final OidcCredentials credentials = new OidcCredentials(CLIENT_NAME);
credentials.setCode(new AuthorizationCode(VALUE));
credentials.setAccessToken(new BearerAccessToken(VALUE, 0L, Scope.parse("oidc email")));
credentials.setRefreshToken(new RefreshToken(VALUE));
credentials.setIdToken(JWTParser.parse(ID_TOKEN));
byte[] result = SerializationUtils.serialize(credentials);
final OidcCredentials credentials2 = SerializationUtils.deserialize(result);
assertEquals(credentials.getAccessToken(), credentials2.getAccessToken());
assertEquals(credentials.getRefreshToken(), credentials2.getRefreshToken());
assertEquals(credentials.getIdToken().getParsedString(), credentials2.getIdToken().getParsedString());
}
}