Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • dev protected
  • ckan-2.11.0
  • add-package-custom-fields
  • fix-adding-datasets-for-users-and-editors
  • add-auth-subroute
  • 71-migrate-custom-fields-to-ckanext-scheming
  • add-author-maintainer-information
  • fix-inline-flex-btns
  • fix-known-spatial-uri-validation
  • py3
  • 47-aktuelle-resource-einer-collection-wird-nicht-mehr-gefunden
  • 10-eingabe-der-dct-accrualperiodicity-in-weboberflache
  • v1.3
  • 2.5.3
  • 2.5.2
  • 2.5.1
  • 2.5.0
  • 2.4.7
  • 2.4.6
  • 2.4.5
  • 2.4.4
  • 2.4.3
  • 2.4.2
  • 2.4.1
  • 2.4.0
  • 2.3.1
  • 2.3.0
  • 2.2.0
  • 2.1.0
  • 2.0.0
  • 1.4.3
  • 1.4.2
  • 1.4.1
34 results

plugin.py

Blame
  • UserResourceMapperTest.java NaN GiB
    package de.itvsh.kop.user;
    
    import static org.assertj.core.api.Assertions.*;
    import static org.mockito.Mockito.*;
    
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
    
    import org.junit.jupiter.api.BeforeEach;
    import org.junit.jupiter.api.DisplayName;
    import org.junit.jupiter.api.Nested;
    import org.junit.jupiter.api.Test;
    import org.keycloak.admin.client.resource.RealmResource;
    import org.keycloak.admin.client.resource.RoleMappingResource;
    import org.keycloak.admin.client.resource.RoleScopeResource;
    import org.keycloak.admin.client.resource.UserResource;
    import org.keycloak.representations.idm.ClientMappingsRepresentation;
    import org.keycloak.representations.idm.GroupRepresentation;
    import org.keycloak.representations.idm.MappingsRepresentation;
    import org.keycloak.representations.idm.RoleRepresentation;
    import org.mapstruct.factory.Mappers;
    import org.mockito.InjectMocks;
    import org.mockito.Mock;
    
    import de.itvsh.kop.user.keycloak.KeycloakApiProperties;
    
    class UserResourceMapperTest {
    	static final String ORGANISATIONS_EINHEIT_ID_KEY = "organisationseinheitId";
    	static final String ORGANISATIONS_EINHEIT_ID_1 = "0815";
    	static final String ORGANISATIONS_EINHEIT_ID_2 = "4711";
    	static final String GROUP_1_PATH = "/group1";
    	static final String GROUP_2_PATH = "/group2";
    
    	static final Map<String, List<String>> ATTRIBUTES_1 = Map.of(ORGANISATIONS_EINHEIT_ID_KEY, List.of(ORGANISATIONS_EINHEIT_ID_1));
    	static final Map<String, List<String>> ATTRIBUTES_2 = Map.of(ORGANISATIONS_EINHEIT_ID_KEY, List.of(ORGANISATIONS_EINHEIT_ID_2));
    
    	@InjectMocks
    	private UserResourceMapper mapper = Mappers.getMapper(UserResourceMapper.class);
    
    	@Mock
    	private KeycloakApiProperties properties;
    
    	@Mock
    	private RealmResource realm;
    
    	@Nested
    	class TestMapping {
    
    		@BeforeEach
    		void init() {
    			when(properties.ldapIdKey()).thenReturn("LDAP_ID");
    			when(properties.organisationsEinheitIdKey()).thenReturn("organisationseinheitId");
    			when(properties.client()).thenReturn("sh-kiel-dev-goofy");
    			when(realm.getGroupByPath(GROUP_1_PATH))
    					.thenReturn(GroupRepresentationTestFactory.createByPathAndOrganisationEinheitId(GROUP_1_PATH, ORGANISATIONS_EINHEIT_ID_1));
    			when(properties.ldapIdKey()).thenReturn("LDAP_ID");
    			when(properties.organisationsEinheitIdKey()).thenReturn("organisationseinheitId");
    			when(properties.client()).thenReturn("sh-kiel-dev-goofy");
    		}
    
    		@Test
    		void shouldMapToUser() {
    			User user = mapper.toKopUser(UserResourceTestFactory.create());
    
    			assertThat(user).isNotNull();
    		}
    
    		@Test
    		void shouldMapEmail() {
    			User user = mapper.toKopUser(UserResourceTestFactory.create());
    
    			assertThat(user.getEmail()).isEqualTo(UserRepresentationTestFactory.EMAIL);
    		}
    
    		@Test
    		void shouldMapExternalId() {
    			User user = mapper.toKopUser(UserResourceTestFactory.create());
    
    			assertThat(user.getExternalId()).isEqualTo(UserRepresentationTestFactory.EXTERNAL_ID);
    		}
    
    		@Test
    		void shouldMapExternalIdFallback() {
    			User user = mapper.toKopUser(UserResourceTestFactory.createWithAttributes(Map.of()));
    
    			assertThat(user.getExternalId()).isEqualTo(UserRepresentationTestFactory.EXTERNAL_ID_FALLBACK);
    		}
    
    		@Test
    		void shouldMapFirstName() {
    			User user = mapper.toKopUser(UserResourceTestFactory.create());
    
    			assertThat(user.getFirstName()).isEqualTo(UserRepresentationTestFactory.FIRST_NAME);
    		}
    
    		@Test
    		void shouldMapLastName() {
    			User user = mapper.toKopUser(UserResourceTestFactory.create());
    
    			assertThat(user.getLastName()).isEqualTo(UserRepresentationTestFactory.LAST_NAME);
    		}
    
    		@Test
    		void shouldMapUserName() {
    			User user = mapper.toKopUser(UserResourceTestFactory.create());
    
    			assertThat(user.getUsername()).isEqualTo(UserRepresentationTestFactory.USER_NAME);
    		}
    
    		@Test
    		void shouldMapOrganisationsEinheitIds() {
    			User user = mapper.toKopUser(UserResourceTestFactory.create());
    
    			assertThat(user.getOrganisationsEinheitIds()).isNotEmpty().contains(ORGANISATIONS_EINHEIT_ID_1);
    		}
    
    		@Test
    		void shouldMapMultipleOrganisationsEinheitIds() {
    			GroupRepresentation groupRepresentation = GroupRepresentationTestFactory.createByPathAndOrganisationEinheitId(GROUP_2_PATH,
    					ORGANISATIONS_EINHEIT_ID_2);
    
    			when(realm.getGroupByPath(GROUP_2_PATH)).thenReturn(groupRepresentation);
    
    			User user = mapper.toKopUser(
    					UserResourceTestFactory.createWithGroups(List.of(GroupRepresentationTestFactory.createGroup(UserResourceMapperTest.GROUP_1_PATH),
    							GroupRepresentationTestFactory.createGroup(UserResourceMapperTest.GROUP_2_PATH))));
    
    			assertThat(user.getOrganisationsEinheitIds()).isNotEmpty().hasSize(2).contains(ORGANISATIONS_EINHEIT_ID_2);
    		}
    
    		@Test
    		void shouldMapRoles() {
    			User user = mapper.toKopUser(UserResourceTestFactory.create());
    
    			assertThat(user.getRoles()).isNotEmpty().contains(UserRepresentationTestFactory.ROLE_NAME);
    		}
    	}
    
    	@DisplayName("Get client roles")
    	@Nested
    	class TestGetClientRoles {
    
    		@Mock
    		private UserResource userResource;
    
    		@Mock
    		private RoleMappingResource roleMappingResource;
    		@Mock
    		private RoleScopeResource roleScopeResource;
    		@Mock
    		private MappingsRepresentation mappingsRepresentation;
    		@Mock
    		private Map<String, ClientMappingsRepresentation> clientMappingsRepresentation;
    		@Mock
    		private ClientMappingsRepresentation clientMappingRepresentation;
    
    		@BeforeEach
    		void init() {
    			when(userResource.roles()).thenReturn(roleMappingResource);
    			when(roleMappingResource.getAll()).thenReturn(mappingsRepresentation);
    		}
    
    		@DisplayName("on existing roles")
    		@Nested
    		class TestOnAssignedRoles {
    
    			@BeforeEach
    			void init() {
    				when(properties.client()).thenReturn(UserRepresentationTestFactory.CLIENT_KEY);
    
    				when(mappingsRepresentation.getClientMappings()).thenReturn(clientMappingsRepresentation);
    				when(clientMappingsRepresentation.containsKey(UserRepresentationTestFactory.CLIENT_KEY)).thenReturn(true);
    				when(clientMappingsRepresentation.get(UserRepresentationTestFactory.CLIENT_KEY)).thenReturn(clientMappingRepresentation);
    				when(clientMappingRepresentation.getMappings()).thenReturn(List.of(createRoleRepresentation()));
    			}
    
    			private RoleRepresentation createRoleRepresentation() {
    				var roleRepresentation = new RoleRepresentation();
    				roleRepresentation.setName(UserRepresentationTestFactory.ROLE_NAME);
    				return roleRepresentation;
    			}
    
    			@Test
    			void shouldReturnRolesIfExists() {
    				var roles = mapper.mapRoles(userResource);
    
    				assertThat(roles).isNotEmpty();
    				assertThat(roles.get(0)).isEqualTo(UserRepresentationTestFactory.ROLE_NAME);
    			}
    		}
    
    		@Nested
    		class TestOnNonExistingClient {
    
    			@BeforeEach
    			void init() {
    				when(properties.client()).thenReturn(UserRepresentationTestFactory.CLIENT_KEY);
    
    				when(mappingsRepresentation.getClientMappings()).thenReturn(Collections.emptyMap());
    			}
    
    			@Test
    			void shouldReturnEmptyListIfNoRolesAttached() {
    				var roles = mapper.mapRoles(userResource);
    
    				assertThat(roles).isEmpty();
    			}
    		}
    
    		@Nested
    		class TestNullClientMappings {
    
    			@BeforeEach
    			void init() {
    				when(mappingsRepresentation.getClientMappings()).thenReturn(null);
    			}
    
    			@Test
    			void shouldReturnEmptyListIfNoRolesAttached() {
    				var roles = mapper.mapRoles(userResource);
    
    				assertThat(roles).isEmpty();
    			}
    		}
    	}
    }