package org.cloudfoundry.identity.uaa.authentication;
import org.cloudfoundry.identity.uaa.constants.OriginKeys;
import org.cloudfoundry.identity.uaa.user.UaaAuthority;
import org.cloudfoundry.identity.uaa.util.JsonUtils;
import org.cloudfoundry.identity.uaa.zone.IdentityZoneHolder;
import org.junit.Test;
import java.util.Collections;
import java.util.LinkedList;
import static org.junit.Assert.assertEquals;
public class UaaAuthenticationSerializerDeserializerTest {
@Test
public void serializeUaaAuthentication() throws Exception {
UaaPrincipal p = new UaaPrincipal("user-id", "username", "user@example.com", OriginKeys.UAA, "", IdentityZoneHolder.get().getId());
UaaAuthentication auth = new UaaAuthentication(p, UaaAuthority.USER_AUTHORITIES, new UaaAuthenticationDetails(false, "clientId", OriginKeys.ORIGIN,"sessionId"));
auth.setAuthenticationMethods(Collections.singleton("pwd"));
auth.setAuthContextClassRef(Collections.singleton("test:uri"));
auth.setLastLoginSuccessTime(1485305759366l);
UaaAuthentication deserializedUaaAuthentication = JsonUtils.readValue(JsonUtils.writeValueAsString(auth), UaaAuthentication.class);
assertEquals(auth.getDetails(), deserializedUaaAuthentication.getDetails());
assertEquals(auth.getPrincipal(), deserializedUaaAuthentication.getPrincipal());
assertEquals("uaa.user", ((LinkedList) deserializedUaaAuthentication.getAuthorities()).get(0).toString());
assertEquals(Collections.EMPTY_SET, deserializedUaaAuthentication.getExternalGroups());
assertEquals(auth.getExpiresAt(), deserializedUaaAuthentication.getExpiresAt());
assertEquals(auth.getAuthenticatedTime(), deserializedUaaAuthentication.getAuthenticatedTime());
assertEquals(auth.isAuthenticated(), deserializedUaaAuthentication.isAuthenticated());
assertEquals(auth.getUserAttributesAsMap(), deserializedUaaAuthentication.getUserAttributesAsMap());
assertEquals(auth.getAuthenticationMethods(), deserializedUaaAuthentication.getAuthenticationMethods());
assertEquals(auth.getAuthContextClassRef(), deserializedUaaAuthentication.getAuthContextClassRef());
assertEquals(auth.getLastLoginSuccessTime(), deserializedUaaAuthentication.getLastLoginSuccessTime());
}
}