/* * ****************************************************************************** * Cloud Foundry * Copyright (c) [2009-2016] Pivotal Software, Inc. All Rights Reserved. * * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product includes a number of subcomponents with * separate copyright notices and license terms. Your use of these * subcomponents is subject to the terms and conditions of the * subcomponent's license, as noted in the LICENSE file. * ****************************************************************************** */ package org.cloudfoundry.identity.uaa.client; import org.junit.Before; import org.junit.Test; import org.mockito.Matchers; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class SocialClientUserDetailsSourceTests{ public static final String USER_ID = "user_id"; public static final String EMAIL = "email"; public static final String ID = "id"; public static final String USERNAME = "username"; public static final String USER_NAME = "user_name"; public static final String LOGIN = "login"; public static final String NAME = "name"; public static final String FORMATTED_NAME = "formattedName"; public static final String FULL_NAME = "fullName"; public static final String FIRST_NAME = "firstName"; public static final String GIVEN_NAME = "givenName"; public static final String FAMILY_NAME = "familyName"; public static final String LAST_NAME = "lastName"; public static final String SCREEN_NAME = "screen_name"; RestTemplate restTemplate; SocialClientUserDetailsSource source; Map<String,String> map; @Before public void setUp() { restTemplate = mock(RestTemplate.class); source = new SocialClientUserDetailsSource(); source.setRestTemplate(restTemplate); source.setUserInfoUrl("http://not.used.anywhere.com/"); source.afterPropertiesSet(); map = new HashMap<>(); map.put(EMAIL, EMAIL); //name values map.put(NAME, NAME); map.put(FORMATTED_NAME, FORMATTED_NAME); map.put(FULL_NAME, FULL_NAME); map.put(FIRST_NAME, FIRST_NAME); map.put(GIVEN_NAME, GIVEN_NAME); map.put(FAMILY_NAME, FAMILY_NAME); map.put(LAST_NAME, LAST_NAME); //getUserId values map.put(USER_ID, USER_ID); map.put(ID, ID); //getUserName values map.put(USERNAME, USERNAME); map.put(USER_NAME, USER_NAME); map.put(LOGIN, LOGIN); map.put(SCREEN_NAME, SCREEN_NAME); when(restTemplate.getForObject(anyString(), Matchers.<Class<Object>>any())).thenReturn(map); } @Test public void testGetPrincipalUsername() throws Exception { assertEquals(USERNAME, ((SocialClientUserDetails)source.getPrincipal()).getUsername()); map.remove(USERNAME); assertEquals(EMAIL, ((SocialClientUserDetails) source.getPrincipal()).getUsername()); source.setUserInfoUrl("twitter.com"); assertEquals(SCREEN_NAME, ((SocialClientUserDetails)source.getPrincipal()).getUsername()); source.setUserInfoUrl("github.com"); assertEquals(LOGIN, ((SocialClientUserDetails)source.getPrincipal()).getUsername()); source.setUserInfoUrl("run.pivotal.io"); assertEquals(USER_NAME, ((SocialClientUserDetails)source.getPrincipal()).getUsername()); map.remove(USER_NAME); map.remove(EMAIL); assertEquals(ID, ((SocialClientUserDetails) source.getPrincipal()).getUsername()); } @Test public void testGetPrincipalUserId() throws Exception { assertEquals(ID, ((SocialClientUserDetails)source.getPrincipal()).getExternalId()); source.setUserInfoUrl("run.pivotal.io"); assertEquals(USER_ID, ((SocialClientUserDetails)source.getPrincipal()).getExternalId()); } @Test public void testGetPrincipalFullname() throws Exception { assertEquals(NAME, ((SocialClientUserDetails)source.getPrincipal()).getFullName()); map.remove(NAME); assertEquals(FORMATTED_NAME, ((SocialClientUserDetails) source.getPrincipal()).getFullName()); map.remove(FORMATTED_NAME); assertEquals(FULL_NAME, ((SocialClientUserDetails) source.getPrincipal()).getFullName()); map.remove(FULL_NAME); assertEquals(GIVEN_NAME + " " + FAMILY_NAME, ((SocialClientUserDetails) source.getPrincipal()).getFullName()); map.remove(GIVEN_NAME); assertEquals(FIRST_NAME + " " + FAMILY_NAME, ((SocialClientUserDetails) source.getPrincipal()).getFullName()); map.remove(FAMILY_NAME); assertEquals(FIRST_NAME + " " + LAST_NAME, ((SocialClientUserDetails) source.getPrincipal()).getFullName()); map.remove(FIRST_NAME); map.remove(LAST_NAME); assertNull(((SocialClientUserDetails)source.getPrincipal()).getFullName()); } @Test public void testGetPrincipalFields() throws Exception { assertEquals(EMAIL, ((SocialClientUserDetails) source.getPrincipal()).getEmail()); assertEquals(USERNAME, source.getPrincipal().getName()); assertEquals(USERNAME, source.getPrincipal().getPrincipal()); assertEquals("N/A", source.getPrincipal().getCredentials()); } }