This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/syncope.git
commit 25515a6e5ee6290adc1879e4cfe65ea0e87746ec Author: Francesco Chicchiriccò <[email protected]> AuthorDate: Wed Nov 27 15:38:52 2019 +0100 [SYNCOPE-1513] Fixing basic console tests --- .../syncope/client/console/AbstractTest.java | 141 ------------ .../syncope/client/console/AbstractTest.java | 236 +++++++++++++++++++++ .../console/SyncopeConsoleApplicationTest.java | 0 .../console/src/test/resources/log4j2.xml | 0 4 files changed, 236 insertions(+), 141 deletions(-) diff --git a/client/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java b/client/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java deleted file mode 100644 index 6e4372b..0000000 --- a/client/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.syncope.client.console; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Properties; -import java.util.stream.Stream; -import javax.servlet.ServletContext; -import org.apache.commons.lang3.tuple.Pair; -import org.apache.cxf.jaxrs.client.Client; -import org.apache.syncope.client.console.init.ClassPathScanImplementationLookup; -import org.apache.syncope.client.console.init.ConsoleInitializer; -import org.apache.syncope.client.console.init.MIMETypesLoader; -import org.apache.syncope.client.lib.AuthenticationHandler; -import org.apache.syncope.client.lib.SyncopeClient; -import org.apache.syncope.client.lib.SyncopeClientFactoryBean; -import org.apache.syncope.common.lib.SyncopeConstants; -import org.apache.syncope.common.lib.info.NumbersInfo; -import org.apache.syncope.common.lib.info.PlatformInfo; -import org.apache.syncope.common.lib.info.SystemInfo; -import org.apache.syncope.common.lib.to.DomainTO; -import org.apache.syncope.common.lib.to.UserTO; -import org.apache.syncope.common.rest.api.service.DomainService; -import org.apache.syncope.common.rest.api.service.SyncopeService; -import org.apache.wicket.util.tester.WicketTester; -import org.junit.jupiter.api.BeforeAll; - -public abstract class AbstractTest { - - protected static Properties PROPS; - - public interface SyncopeServiceClient extends SyncopeService, Client { - } - - @BeforeAll - public static void loadProps() throws IOException { - PROPS = new Properties(); - try (InputStream is = AbstractTest.class.getResourceAsStream("/console.properties")) { - PROPS.load(is); - } - } - - protected static final WicketTester TESTER = new WicketTester(new SyncopeConsoleApplication() { - - @Override - protected void init() { - ServletContext ctx = getServletContext(); - ClassPathScanImplementationLookup lookup = new ClassPathScanImplementationLookup(); - lookup.load(); - ctx.setAttribute(ConsoleInitializer.CLASSPATH_LOOKUP, lookup); - - MIMETypesLoader mimeTypes = new MIMETypesLoader(); - mimeTypes.load(); - ctx.setAttribute(ConsoleInitializer.MIMETYPES_LOADER, mimeTypes); - - super.init(); - } - - @Override - public List<String> getDomains() { - return super.getDomains(); - } - - private SyncopeService getSyncopeService() { - SyncopeServiceClient service = mock(SyncopeServiceClient.class); - when(service.type(anyString())).thenReturn(service); - when(service.accept(anyString())).thenReturn(service); - - when(service.platform()).thenReturn(new PlatformInfo()); - when(service.system()).thenReturn(new SystemInfo()); - - NumbersInfo numbersInfo = new NumbersInfo(); - Stream.of(NumbersInfo.ConfItem.values()). - forEach(item -> numbersInfo.getConfCompleteness().put(item.name(), true)); - when(service.numbers()).thenReturn(numbersInfo); - - return service; - } - - private UserTO getUserTO() { - UserTO userTO = new UserTO(); - userTO.setUsername("username"); - return userTO; - } - - private DomainService getDomainService() { - DomainService domainService = mock(DomainService.class); - DomainTO domainTO = new DomainTO(); - domainTO.setKey(SyncopeConstants.MASTER_DOMAIN); - when(domainService.list()).thenReturn(Collections.singletonList(domainTO)); - return domainService; - } - - @SuppressWarnings("unchecked") - @Override - public SyncopeClientFactoryBean newClientFactory() { - SyncopeClient client = mock(SyncopeClient.class); - - when(client.self()).thenReturn(Pair.of(new HashMap<>(), getUserTO())); - - SyncopeService syncopeService = getSyncopeService(); - when(client.getService(SyncopeService.class)).thenReturn(syncopeService); - - DomainService domainService = getDomainService(); - when(client.getService(DomainService.class)).thenReturn(domainService); - - SyncopeClientFactoryBean clientFactory = mock(SyncopeClientFactoryBean.class); - when(clientFactory.setDomain(any())).thenReturn(clientFactory); - when(clientFactory.create(any(AuthenticationHandler.class))).thenReturn(client); - when(clientFactory.create(anyString(), anyString())).thenReturn(client); - - return clientFactory; - } - }); - -} diff --git a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java new file mode 100644 index 0000000..8f34e28 --- /dev/null +++ b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java @@ -0,0 +1,236 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.console; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import com.giffing.wicket.spring.boot.context.extensions.WicketApplicationInitConfiguration; +import com.giffing.wicket.spring.boot.context.extensions.boot.actuator.WicketEndpointRepository; +import com.giffing.wicket.spring.boot.starter.app.classscanner.candidates.WicketClassCandidatesHolder; +import com.giffing.wicket.spring.boot.starter.configuration.extensions.core.settings.general.GeneralSettingsProperties; +import com.giffing.wicket.spring.boot.starter.configuration.extensions.external.spring.boot.actuator.WicketEndpointRepositoryDefault; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Properties; +import java.util.stream.Stream; +import org.apache.commons.lang3.tuple.Pair; +import org.apache.cxf.jaxrs.client.Client; +import org.apache.syncope.client.console.AbstractTest.TestSyncopeWebApplication.SyncopeServiceClient; +import org.apache.syncope.client.console.commons.AnyDirectoryPanelAditionalActionLinksProvider; +import org.apache.syncope.client.console.commons.AnyWizardBuilderAdditionalSteps; +import org.apache.syncope.client.console.commons.ExternalResourceProvider; +import org.apache.syncope.client.console.commons.IdRepoAnyDirectoryPanelAditionalActionLinksProvider; +import org.apache.syncope.client.console.commons.IdRepoAnyWizardBuilderAdditionalSteps; +import org.apache.syncope.client.console.commons.IdRepoExternalResourceProvider; +import org.apache.syncope.client.console.commons.IdRepoImplementationInfoProvider; +import org.apache.syncope.client.console.commons.IdRepoPolicyTabProvider; +import org.apache.syncope.client.console.commons.IdRepoStatusProvider; +import org.apache.syncope.client.console.commons.IdRepoVirSchemaDetailsPanelProvider; +import org.apache.syncope.client.console.commons.ImplementationInfoProvider; +import org.apache.syncope.client.console.commons.PolicyTabProvider; +import org.apache.syncope.client.console.commons.PreviewUtils; +import org.apache.syncope.client.console.commons.StatusProvider; +import org.apache.syncope.client.console.commons.VirSchemaDetailsPanelProvider; +import org.apache.syncope.client.console.init.ClassPathScanImplementationLookup; +import org.apache.syncope.client.console.init.MIMETypesLoader; +import org.apache.syncope.client.lib.AuthenticationHandler; +import org.apache.syncope.client.lib.SyncopeClient; +import org.apache.syncope.client.lib.SyncopeClientFactoryBean; +import org.apache.syncope.common.keymaster.client.api.DomainOps; +import org.apache.syncope.common.keymaster.client.api.ServiceOps; +import org.apache.syncope.common.keymaster.client.api.model.Domain; +import org.apache.syncope.common.lib.info.NumbersInfo; +import org.apache.syncope.common.lib.info.PlatformInfo; +import org.apache.syncope.common.lib.info.SystemInfo; +import org.apache.syncope.common.lib.to.UserTO; +import org.apache.syncope.common.lib.SyncopeConstants; +import org.apache.syncope.common.rest.api.service.SyncopeService; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.jupiter.api.BeforeAll; +import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +public abstract class AbstractTest { + + @ImportAutoConfiguration + @Configuration + public static class SyncopeConsoleWebApplicationTestConfig { + + @Bean + public ServiceOps selfServiceOps() { + return mock(ServiceOps.class); + } + + @Bean + public DomainOps domainOps() { + DomainOps domainOps = mock(DomainOps.class); + when(domainOps.list()).thenReturn(List.of(new Domain.Builder(SyncopeConstants.MASTER_DOMAIN).build())); + return domainOps; + } + + @Bean + public GeneralSettingsProperties generalSettingsProperties() { + return new GeneralSettingsProperties(); + } + + @Bean + public List<WicketApplicationInitConfiguration> configurations() { + return List.of(); + } + + @Bean + public WicketClassCandidatesHolder wicketClassCandidatesHolder() { + return new WicketClassCandidatesHolder(); + } + + @Bean + public WicketEndpointRepository wicketEndpointRepository() { + return new WicketEndpointRepositoryDefault(); + } + + @Bean + public ClassPathScanImplementationLookup classPathScanImplementationLookup() { + ClassPathScanImplementationLookup lookup = new ClassPathScanImplementationLookup(); + lookup.load(); + return lookup; + } + + @Bean + public MIMETypesLoader mimeTypesLoader() { + MIMETypesLoader mimeTypesLoader = new MIMETypesLoader(); + mimeTypesLoader.load(); + return mimeTypesLoader; + } + + @Bean + public PreviewUtils previewUtils() { + return new PreviewUtils(); + } + + @Bean + public ExternalResourceProvider resourceProvider() { + return new IdRepoExternalResourceProvider(); + } + + @Bean + public AnyWizardBuilderAdditionalSteps anyWizardBuilderAdditionalSteps() { + return new IdRepoAnyWizardBuilderAdditionalSteps(); + } + + @Bean + public StatusProvider statusProvider() { + return new IdRepoStatusProvider(); + } + + @Bean + public VirSchemaDetailsPanelProvider virSchemaDetailsPanelProvider() { + return new IdRepoVirSchemaDetailsPanelProvider(); + } + + @Bean + public AnyDirectoryPanelAditionalActionLinksProvider anyDirectoryPanelAditionalActionLinksProvider() { + return new IdRepoAnyDirectoryPanelAditionalActionLinksProvider(); + } + + @Bean + public ImplementationInfoProvider implementationInfoProvider() { + return new IdRepoImplementationInfoProvider(); + } + + @Bean + public PolicyTabProvider policyTabProvider() { + return new IdRepoPolicyTabProvider(); + } + } + + public static class TestSyncopeWebApplication extends SyncopeWebApplication { + + public interface SyncopeServiceClient extends SyncopeService, Client { + } + + private SyncopeService getSyncopeService() { + SyncopeServiceClient service = mock(SyncopeServiceClient.class); + when(service.type(anyString())).thenReturn(service); + when(service.accept(anyString())).thenReturn(service); + + when(service.platform()).thenReturn(new PlatformInfo()); + when(service.system()).thenReturn(new SystemInfo()); + + NumbersInfo numbersInfo = new NumbersInfo(); + Stream.of(NumbersInfo.ConfItem.values()). + forEach(item -> numbersInfo.getConfCompleteness().put(item.name(), true)); + when(service.numbers()).thenReturn(numbersInfo); + + return service; + } + + private UserTO getUserTO() { + UserTO userTO = new UserTO(); + userTO.setUsername("username"); + return userTO; + } + + @SuppressWarnings("unchecked") + @Override + public SyncopeClientFactoryBean newClientFactory() { + SyncopeClient client = mock(SyncopeClient.class); + + when(client.self()).thenReturn(Pair.of(new HashMap<>(), getUserTO())); + + SyncopeService syncopeService = getSyncopeService(); + when(client.getService(SyncopeService.class)).thenReturn(syncopeService); + + SyncopeClientFactoryBean clientFactory = mock(SyncopeClientFactoryBean.class); + when(clientFactory.setDomain(any())).thenReturn(clientFactory); + when(clientFactory.create(any(AuthenticationHandler.class))).thenReturn(client); + when(clientFactory.create(anyString(), anyString())).thenReturn(client); + + return clientFactory; + } + } + + protected static Properties PROPS; + + protected static WicketTester TESTER; + + @BeforeAll + public static void loadProps() throws IOException { + PROPS = new Properties(); + try (InputStream is = AbstractTest.class.getResourceAsStream("/console.properties")) { + PROPS.load(is); + } + } + + @BeforeAll + public static void setupTester() throws IOException { + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); + ctx.register(SyncopeConsoleWebApplicationTestConfig.class); + ctx.register(TestSyncopeWebApplication.class); + ctx.refresh(); + + TESTER = new WicketTester(ctx.getBean(SyncopeWebApplication.class)); + } +} diff --git a/client/console/src/test/java/org/apache/syncope/client/console/SyncopeConsoleApplicationTest.java b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/SyncopeConsoleApplicationTest.java similarity index 100% rename from client/console/src/test/java/org/apache/syncope/client/console/SyncopeConsoleApplicationTest.java rename to client/idrepo/console/src/test/java/org/apache/syncope/client/console/SyncopeConsoleApplicationTest.java diff --git a/client/console/src/test/resources/log4j2.xml b/client/idrepo/console/src/test/resources/log4j2.xml similarity index 100% rename from client/console/src/test/resources/log4j2.xml rename to client/idrepo/console/src/test/resources/log4j2.xml
