package org.apereo.cas.services; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.io.FileUtils; import org.apereo.cas.authentication.principal.Principal; import org.junit.Test; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.*; import static org.mockito.Mockito.*; /** * @author Misagh Moayyed * @since 4.1.0 */ public class PrincipalAttributeRegisteredServiceUsernameProviderTests { private static final File JSON_FILE = new File(FileUtils.getTempDirectoryPath(), "principalAttributeRegisteredServiceUsernameProvider.json"); private static final ObjectMapper MAPPER = new ObjectMapper(); @Test public void verifyUsernameByPrincipalAttribute() { final PrincipalAttributeRegisteredServiceUsernameProvider provider = new PrincipalAttributeRegisteredServiceUsernameProvider("cn"); final Map<String, Object> attrs = new HashMap<>(); attrs.put("userid", "u1"); attrs.put("cn", "TheName"); final Principal p = mock(Principal.class); when(p.getId()).thenReturn("person"); when(p.getAttributes()).thenReturn(attrs); final String id = provider.resolveUsername(p, RegisteredServiceTestUtils.getService("usernameAttributeProviderService"), RegisteredServiceTestUtils.getRegisteredService("usernameAttributeProviderService")); assertEquals(id, "TheName"); } @Test public void verifyUsernameByPrincipalAttributeNotFound() { final PrincipalAttributeRegisteredServiceUsernameProvider provider = new PrincipalAttributeRegisteredServiceUsernameProvider("cn"); final Map<String, Object> attrs = new HashMap<>(); attrs.put("userid", "u1"); final Principal p = mock(Principal.class); when(p.getId()).thenReturn("person"); when(p.getAttributes()).thenReturn(attrs); final String id = provider.resolveUsername(p, RegisteredServiceTestUtils.getService("usernameAttributeProviderService"), RegisteredServiceTestUtils.getRegisteredService("usernameAttributeProviderService")); assertEquals(id, p.getId()); } @Test public void verifyEquality() { final PrincipalAttributeRegisteredServiceUsernameProvider provider = new PrincipalAttributeRegisteredServiceUsernameProvider("cn"); final PrincipalAttributeRegisteredServiceUsernameProvider provider2 = new PrincipalAttributeRegisteredServiceUsernameProvider("cn"); assertEquals(provider, provider2); } @Test public void verifySerializeAPrincipalAttributeRegisteredServiceUsernameProviderToJson() throws IOException { final PrincipalAttributeRegisteredServiceUsernameProvider providerWritten = new PrincipalAttributeRegisteredServiceUsernameProvider("cn"); MAPPER.writeValue(JSON_FILE, providerWritten); final RegisteredServiceUsernameAttributeProvider providerRead = MAPPER.readValue(JSON_FILE, PrincipalAttributeRegisteredServiceUsernameProvider.class); assertEquals(providerWritten, providerRead); } }