diff --git a/assembly-multiuser/assembly-wsmaster-war/pom.xml b/assembly-multiuser/assembly-wsmaster-war/pom.xml index d41b1f118ba..b28560f4a2d 100644 --- a/assembly-multiuser/assembly-wsmaster-war/pom.xml +++ b/assembly-multiuser/assembly-wsmaster-war/pom.xml @@ -103,10 +103,6 @@ org.eclipse.che.multiuser che-multiuser-sql-schema - - org.eclipse.che.multiuser - multiuser-infrastructure-openshift - org.eclipse.che.plugin che-plugin-activity-wsmaster diff --git a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthModule.java b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthModule.java index d0b6551d25a..2656d9959df 100644 --- a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthModule.java +++ b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MachineAuthModule.java @@ -11,9 +11,11 @@ package org.eclipse.che.api.deploy; import com.google.inject.AbstractModule; +import org.eclipse.che.api.workspace.server.MachineTokenProvider; import org.eclipse.che.commons.auth.token.ChainedTokenExtractor; import org.eclipse.che.commons.auth.token.RequestTokenExtractor; import org.eclipse.che.inject.DynaModule; +import org.eclipse.che.multiuser.machine.authentication.server.MachineTokenProviderImpl; /** * Machine authentication bindings. @@ -32,5 +34,7 @@ protected void configure() { bind(org.eclipse.che.multiuser.machine.authentication.server.MachineTokenRegistry.class); bind(org.eclipse.che.multiuser.machine.authentication.server.MachineSessionInvalidator.class); bind(RequestTokenExtractor.class).to(ChainedTokenExtractor.class); + + bind(MachineTokenProvider.class).to(MachineTokenProviderImpl.class); } } diff --git a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MultiUserCheWsMasterModule.java b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MultiUserCheWsMasterModule.java index a345c20189b..d29c9b7412e 100644 --- a/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MultiUserCheWsMasterModule.java +++ b/assembly-multiuser/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/MultiUserCheWsMasterModule.java @@ -32,8 +32,6 @@ import org.eclipse.che.security.PBKDF2PasswordEncryptor; import org.eclipse.che.security.PasswordEncryptor; import org.eclipse.che.workspace.infrastructure.openshift.OpenShiftInfraModule; -import org.eclipse.che.workspace.infrastructure.openshift.provision.installer.InstallerConfigProvisioner; -import org.eclipse.che.workspace.infrastructure.openshift.provision.installer.MultiuserInstallerConfigProvisioner; @DynaModule public class MultiUserCheWsMasterModule extends AbstractModule { @@ -41,7 +39,6 @@ public class MultiUserCheWsMasterModule extends AbstractModule { @Override protected void configure() { bind(ServerCheckerFactoryImpl.class).to(AuthServerCheckerFactoryImpl.class); - bind(InstallerConfigProvisioner.class).to(MultiuserInstallerConfigProvisioner.class); install(new OpenShiftInfraModule()); bind(TemplateProcessor.class).to(STTemplateProcessorImpl.class); diff --git a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/CheWsMasterModule.java b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/CheWsMasterModule.java index acc03cf4716..96fd8632f52 100644 --- a/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/CheWsMasterModule.java +++ b/assembly/assembly-wsmaster-war/src/main/java/org/eclipse/che/api/deploy/CheWsMasterModule.java @@ -14,6 +14,7 @@ import com.google.inject.name.Names; import javax.sql.DataSource; import org.eclipse.che.api.user.server.TokenValidator; +import org.eclipse.che.api.workspace.server.MachineTokenProvider; import org.eclipse.che.inject.DynaModule; import org.eclipse.che.workspace.infrastructure.docker.DockerInfraModule; import org.eclipse.che.workspace.infrastructure.docker.local.LocalDockerModule; @@ -38,6 +39,7 @@ protected void configure() { } bind(TokenValidator.class).to(org.eclipse.che.api.local.DummyTokenValidator.class); + bind(MachineTokenProvider.class).to(MachineTokenProvider.EmptyMachineTokenProvider.class); bind(org.eclipse.che.api.workspace.server.stack.StackLoader.class); bind(DataSource.class).toProvider(org.eclipse.che.core.db.h2.H2DataSourceProvider.class); diff --git a/core/commons/che-core-commons-test/src/main/java/org/eclipse/che/commons/test/db/H2JpaCleaner.java b/core/commons/che-core-commons-test/src/main/java/org/eclipse/che/commons/test/db/H2JpaCleaner.java index 4c42ff6aacf..fe7abbf4d66 100644 --- a/core/commons/che-core-commons-test/src/main/java/org/eclipse/che/commons/test/db/H2JpaCleaner.java +++ b/core/commons/che-core-commons-test/src/main/java/org/eclipse/che/commons/test/db/H2JpaCleaner.java @@ -33,12 +33,6 @@ public H2JpaCleaner(DataSource dataSource) { this.dataSource = dataSource; } - /** @deprecated use {@link H2JpaCleaner(H2DBTestServer)} instead. */ - @Deprecated - public H2JpaCleaner() { - this(H2TestHelper.inMemoryDefault()); - } - @Override public void clean() { super.clean(); diff --git a/core/commons/che-core-commons-test/src/main/java/org/eclipse/che/commons/test/db/H2TestHelper.java b/core/commons/che-core-commons-test/src/main/java/org/eclipse/che/commons/test/db/H2TestHelper.java deleted file mode 100644 index 1be10cab895..00000000000 --- a/core/commons/che-core-commons-test/src/main/java/org/eclipse/che/commons/test/db/H2TestHelper.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2012-2017 Red Hat, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Red Hat, Inc. - initial API and implementation - */ -package org.eclipse.che.commons.test.db; - -import java.io.StringReader; -import java.sql.Connection; -import java.sql.SQLException; -import javax.sql.DataSource; -import org.h2.jdbcx.JdbcDataSource; -import org.h2.tools.RunScript; - -/** - * Provides utility methods to work with h2 in tests. - * - * @author Yevhenii Voevodin - */ -public final class H2TestHelper { - - public static final String DEFAULT_IN_MEMORY_DB_URL = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"; - - /** - * Creates new default datasource to in memory database with url {@value - * #DEFAULT_IN_MEMORY_DB_URL}. Boots database if this is invoked first time, database won't be - * shutdown until 'SHUTDOWN' query is executed or {@link #shutdownDefault()} is called directly. - * - * @return datasource to the in memory database - * @deprecated use {@link H2DBTestServer}. - */ - @Deprecated - public static DataSource inMemoryDefault() { - final JdbcDataSource dataSource = new JdbcDataSource(); - dataSource.setUrl(DEFAULT_IN_MEMORY_DB_URL); - return dataSource; - } - - /** - * Shutdowns default in memory database with url {@value #DEFAULT_IN_MEMORY_DB_URL}. - * - * @throws SQLException when any sql error occurs - * @deprecated use {@link H2DBTestServer}. - */ - @Deprecated - public static void shutdownDefault() throws SQLException { - try (Connection conn = inMemoryDefault().getConnection()) { - RunScript.execute(conn, new StringReader("SHUTDOWN")); - } - } -} diff --git a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/provisioner/server/UserTokenEnvVarProvider.java b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/provisioner/server/UserTokenEnvVarProvider.java index 190db11e3c6..dfbbf0e8f58 100644 --- a/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/provisioner/server/UserTokenEnvVarProvider.java +++ b/infrastructures/docker/src/main/java/org/eclipse/che/workspace/infrastructure/docker/provisioner/server/UserTokenEnvVarProvider.java @@ -12,8 +12,9 @@ import static org.eclipse.che.workspace.infrastructure.docker.DockerMachine.USER_TOKEN; +import javax.inject.Inject; import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity; -import org.eclipse.che.commons.env.EnvironmentContext; +import org.eclipse.che.api.workspace.server.MachineTokenProvider; import org.eclipse.che.commons.lang.Pair; /** @@ -21,10 +22,18 @@ * access Che master API. * * @author Alexander Garagatyi + * @author Sergii Leshchenko */ public class UserTokenEnvVarProvider implements ServerEnvironmentVariableProvider { + private final MachineTokenProvider machineTokenProvider; + + @Inject + public UserTokenEnvVarProvider(MachineTokenProvider machineTokenProvider) { + this.machineTokenProvider = machineTokenProvider; + } + @Override public Pair get(RuntimeIdentity runtimeIdentity) { - return Pair.of(USER_TOKEN, EnvironmentContext.getCurrent().getSubject().getToken()); + return Pair.of(USER_TOKEN, machineTokenProvider.getToken(runtimeIdentity.getWorkspaceId())); } } diff --git a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisioner.java b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisioner.java index 73505a5b47b..0aa2466d242 100644 --- a/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisioner.java +++ b/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisioner.java @@ -17,19 +17,17 @@ import io.fabric8.kubernetes.api.model.Container; import io.fabric8.kubernetes.api.model.EnvVar; import io.fabric8.kubernetes.api.model.Pod; -import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; import javax.inject.Named; -import org.eclipse.che.api.core.model.workspace.config.ServerConfig; import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity; import org.eclipse.che.api.installer.shared.model.Installer; +import org.eclipse.che.api.workspace.server.MachineTokenProvider; import org.eclipse.che.api.workspace.server.WsAgentMachineFinderUtil; import org.eclipse.che.api.workspace.server.spi.InfrastructureException; import org.eclipse.che.api.workspace.server.spi.InternalEnvironment; import org.eclipse.che.api.workspace.server.spi.InternalMachineConfig; -import org.eclipse.che.workspace.infrastructure.openshift.ServerExposer; import org.eclipse.che.workspace.infrastructure.openshift.environment.OpenShiftEnvironment; import org.eclipse.che.workspace.infrastructure.openshift.provision.ConfigurationProvisioner; import org.slf4j.Logger; @@ -51,14 +49,18 @@ * @author Sergii Leshchenko */ public class InstallerConfigProvisioner implements ConfigurationProvisioner { + private static final Logger LOG = getLogger(InstallerConfigProvisioner.class); private static final String ENVIRONMENT_PROPERTY = "environment"; + private final MachineTokenProvider machineTokenProvider; private final String cheServerEndpoint; @Inject - public InstallerConfigProvisioner(@Named("che.api") String cheServerEndpoint) { + public InstallerConfigProvisioner( + MachineTokenProvider machineTokenProvider, @Named("che.api") String cheServerEndpoint) { + this.machineTokenProvider = machineTokenProvider; this.cheServerEndpoint = cheServerEndpoint; } @@ -78,10 +80,20 @@ public void provision( String machineName = podName + "/" + containerName; InternalMachineConfig machineConf = environment.getMachines().get(machineName); - doProvisionContainer(osEnv, container, identity, machineName, machineConf); + for (Installer installer : machineConf.getInstallers()) { + provisionEnv(container, installer.getProperties()); + } + + // CHE_API is used by installers for agent binary downloading + putEnv(container.getEnv(), "CHE_API", cheServerEndpoint); + + putEnv( + container.getEnv(), + "USER_TOKEN", + machineTokenProvider.getToken(identity.getWorkspaceId())); // TODO incorrect place for env variable addition. workspace ID is needed for wsagent server, not installer - // WORKSPACE_ID is required only by workspace agent + // WORKSPACE_ID are required only by workspace agent if (devMachineName.equals(machineName)) { putEnv(container.getEnv(), "CHE_WORKSPACE_ID", identity.getWorkspaceId()); } @@ -89,25 +101,7 @@ public void provision( } } - protected void doProvisionContainer( - OpenShiftEnvironment osEnv, - Container container, - RuntimeIdentity identity, - String machineName, - InternalMachineConfig machineConf) { - Map name2Server = new HashMap<>(); - for (Installer installer : machineConf.getInstallers()) { - provisionEnv(container, installer.getProperties()); - name2Server.putAll(installer.getServers()); - } - ServerExposer serverExposer = new ServerExposer(machineName, container, osEnv); - serverExposer.expose("agents", name2Server); - - // CHE_API is used by installers for agent binary downloading - putEnv(container.getEnv(), "CHE_API", cheServerEndpoint); - } - - protected void putEnv(List envs, String key, String value) { + private void putEnv(List envs, String key, String value) { envs.removeIf(env -> key.equals(env.getName())); envs.add(new EnvVar(key, value, null)); } diff --git a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisionerTest.java b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisionerTest.java index c8c81880ce3..1c762821980 100644 --- a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisionerTest.java +++ b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/InstallerConfigProvisionerTest.java @@ -10,14 +10,11 @@ */ package org.eclipse.che.workspace.infrastructure.openshift.provision.installer; -import static java.util.Collections.emptyMap; -import static java.util.Collections.singletonList; -import static java.util.Collections.singletonMap; -import static org.mockito.Mockito.atLeast; +import static java.lang.String.format; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import com.google.common.collect.ImmutableMap; @@ -27,12 +24,16 @@ import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodSpec; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; +import org.eclipse.che.api.core.model.workspace.config.ServerConfig; import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity; import org.eclipse.che.api.installer.server.model.impl.InstallerImpl; +import org.eclipse.che.api.workspace.server.MachineTokenProvider; import org.eclipse.che.api.workspace.server.model.impl.ServerConfigImpl; -import org.eclipse.che.api.workspace.server.spi.InfrastructureException; import org.eclipse.che.api.workspace.server.spi.InternalEnvironment; import org.eclipse.che.api.workspace.server.spi.InternalMachineConfig; import org.eclipse.che.api.workspace.shared.Constants; @@ -47,84 +48,193 @@ * Tests {@link InstallerConfigProvisioner}. * * @author Anton Korneta + * @author Sergii Leshchenko */ @Listeners(MockitoTestNGListener.class) public class InstallerConfigProvisionerTest { - private static final String CHE_SERVER_ENDPOINT = "localhost:8080"; + private static final String WORKSPACE_ID = "workspace123"; - @Mock private InternalEnvironment environment; - @Mock private OpenShiftEnvironment osEnv; + @Mock private MachineTokenProvider machineTokenProvider; @Mock private RuntimeIdentity runtimeIdentity; private InstallerConfigProvisioner installerConfigProvisioner; @BeforeMethod public void setUp() throws Exception { - installerConfigProvisioner = new InstallerConfigProvisioner(CHE_SERVER_ENDPOINT); + installerConfigProvisioner = + new InstallerConfigProvisioner(machineTokenProvider, CHE_SERVER_ENDPOINT); + + when(runtimeIdentity.getWorkspaceId()).thenReturn(WORKSPACE_ID); + } + + @Test + public void provisionWithEnvsFromInstallersAttributes() throws Exception { + //given + final Pod pod = new PodBuilder().setName("test").setContainers("machine").build(); + OpenShiftEnvironment osEnvironment = + OpenShiftEnvironment.builder() + .setPods(ImmutableMap.of(pod.getMetadata().getName(), pod)) + .build(); + + final Map machines = + ImmutableMap.of( + "test/machine", + new MachineConfigBuilder() + .setInstallers( + new InstallerImpl() + .withProperties(ImmutableMap.of("environment", "INSTALLER1=localhost")), + new InstallerImpl() + .withProperties(ImmutableMap.of("environment", "INSTALLER2=agent"))) + .setServer(Constants.SERVER_WS_AGENT_HTTP_REFERENCE, new ServerConfigImpl()) + .build()); + + InternalEnvironment environment = createEnvironment(machines); + + //when + installerConfigProvisioner.provision(environment, osEnvironment, runtimeIdentity); + + //then + Container container = pod.getSpec().getContainers().get(0); + List envs = container.getEnv(); + verifyContainsEnv(envs, "INSTALLER1", "localhost"); + verifyContainsEnv(envs, "INSTALLER2", "agent"); } @Test - public void provisionInstallerConfig() throws Exception { - final String podName = "test"; - final Container container = mockContainer("machine"); - final Pod pod = mockPod(podName, singletonList(container)); - when(osEnv.getPods()).thenReturn(ImmutableMap.of(podName, pod)); - final InternalMachineConfig devMachine = mock(InternalMachineConfig.class); - final Map machines = ImmutableMap.of("test/machine", devMachine); + public void provisionWithAgentsRequiredEnvs() throws Exception { + //given + when(machineTokenProvider.getToken(WORKSPACE_ID)).thenReturn("superToken"); + + final Pod podWithAgent = new PodBuilder().setName("pod1").setContainers("wsagent").build(); + + final Pod pod = new PodBuilder().setName("pod2").setContainers("machine").build(); + + OpenShiftEnvironment osEnvironment = + OpenShiftEnvironment.builder() + .setPods( + ImmutableMap.of( + podWithAgent.getMetadata().getName(), + podWithAgent, + pod.getMetadata().getName(), + pod)) + .build(); + + final Map machines = + ImmutableMap.of( + "pod1/wsagent", + new MachineConfigBuilder() + .setServer(Constants.SERVER_WS_AGENT_HTTP_REFERENCE, new ServerConfigImpl()) + .build(), + "pod2/machine", + new MachineConfigBuilder() + .setServer(Constants.SERVER_TERMINAL_REFERENCE, new ServerConfigImpl()) + .build()); + + InternalEnvironment environment = createEnvironment(machines); + + //when + installerConfigProvisioner.provision(environment, osEnvironment, runtimeIdentity); + + //then + Container container = podWithAgent.getSpec().getContainers().get(0); + List envs = container.getEnv(); + verifyContainsEnv(envs, "CHE_API", CHE_SERVER_ENDPOINT); + verifyContainsEnv(envs, "USER_TOKEN", "superToken"); + verifyContainsEnv(envs, "CHE_WORKSPACE_ID", WORKSPACE_ID); + + Container container2 = pod.getSpec().getContainers().get(0); + List envs2 = container2.getEnv(); + verifyContainsEnv(envs2, "CHE_API", CHE_SERVER_ENDPOINT); + verifyContainsEnv(envs, "USER_TOKEN", "superToken"); + verifyDoesNotContainEnv(envs2, "CHE_WORKSPACE_ID"); + } + + private InternalEnvironment createEnvironment(Map machines) { + InternalEnvironment environment = mock(InternalEnvironment.class); when(environment.getMachines()).thenReturn(machines); - when(devMachine.getServers()) - .thenReturn(singletonMap(Constants.SERVER_WS_AGENT_HTTP_REFERENCE, new ServerConfigImpl())); - final InstallerImpl installer = mock(InstallerImpl.class); - final List installers = singletonList(installer); - when(devMachine.getInstallers()).thenReturn(installers); - final Map envVars = ImmutableMap.of("environment", "CHE_HOST=localhost"); - when(installer.getProperties()).thenReturn(envVars); - final List envVariables = new ArrayList<>(); - when(container.getEnv()).thenReturn(envVariables); - when(installer.getServers()).thenReturn(emptyMap()); - - installerConfigProvisioner.provision(environment, osEnv, runtimeIdentity); - - verify(osEnv, times(1)).getPods(); - verify(runtimeIdentity, atLeast(1)).getWorkspaceId(); - verify(environment, times(2)).getMachines(); - assertTrue(envVariables.size() == 3); + return environment; } - @Test(expectedExceptions = InfrastructureException.class) - public void throwsInfrastructureExceptionWhenInstallerExceptionOccurs() throws Exception { - final String podName = "test"; - final Pod pod = mockPod(podName, "machine"); - when(osEnv.getPods()).thenReturn(ImmutableMap.of(podName, pod)); - when(environment.getMachines()) - .thenReturn(ImmutableMap.of("test/machine", mock(InternalMachineConfig.class))); + private void verifyDoesNotContainEnv(List envs, String name) { + Optional env = envs.stream().filter(e -> e.getName().equals(name)).findAny(); - installerConfigProvisioner.provision(environment, osEnv, runtimeIdentity); + assertFalse(env.isPresent(), format("Environment variable '%s' found", name)); } - private static Pod mockPod(String podName, List containers) { - final Pod pod = mock(Pod.class); - final ObjectMeta podMeta = mock(ObjectMeta.class); - when(pod.getMetadata()).thenReturn(podMeta); - when(podMeta.getName()).thenReturn(podName); - final PodSpec podSpec = mock(PodSpec.class); - when(pod.getSpec()).thenReturn(podSpec); - when(podSpec.getContainers()).thenReturn(containers); - return pod; + private void verifyContainsEnv(List envs, String name, String expectedValue) { + Optional env = envs.stream().filter(e -> e.getName().equals(name)).findAny(); + + assertTrue(env.isPresent(), format("Expected environment variable '%s' not found", name)); + + String actualValue = env.get().getValue(); + assertEquals( + actualValue, + expectedValue, + format( + "Environment variable '%s' expected with " + "value '%s' but found with '%s'", + name, expectedValue, actualValue)); } - private static Pod mockPod(String podName, String... containerNames) { - final List containers = new ArrayList<>(); - for (String containerName : containerNames) { - containers.add(mockContainer(containerName)); + private static class MachineConfigBuilder { + + private List installers = new ArrayList<>(); + private Map servers = new HashMap<>(); + + MachineConfigBuilder setInstallers(InstallerImpl... installers) { + this.installers = Arrays.asList(installers); + return this; + } + + MachineConfigBuilder setServer(String name, ServerConfig server) { + this.servers.put(name, server); + return this; + } + + InternalMachineConfig build() { + final InternalMachineConfig machineConfig = mock(InternalMachineConfig.class); + when(machineConfig.getInstallers()).thenReturn(installers); + when(machineConfig.getServers()).thenReturn(servers); + return machineConfig; } - return mockPod(podName, containers); } - private static Container mockContainer(String name) { - final Container container = mock(Container.class); - when(container.getName()).thenReturn(name); - return container; + private static class PodBuilder { + + private String name; + private List containersNames; + + PodBuilder setName(String name) { + this.name = name; + return this; + } + + PodBuilder setContainers(String... names) { + this.containersNames = Arrays.asList(names); + return this; + } + + Pod build() { + final Pod pod = mock(Pod.class); + final ObjectMeta podMeta = mock(ObjectMeta.class); + when(pod.getMetadata()).thenReturn(podMeta); + when(podMeta.getName()).thenReturn(name); + + final PodSpec podSpec = mock(PodSpec.class); + when(pod.getSpec()).thenReturn(podSpec); + + final List containers = new ArrayList<>(); + for (String containerName : containersNames) { + final Container container = mock(Container.class); + when(container.getName()).thenReturn(containerName); + when(container.getEnv()).thenReturn(new ArrayList<>()); + + containers.add(container); + } + + when(podSpec.getContainers()).thenReturn(containers); + + return pod; + } } } diff --git a/multiuser/api/che-multiuser-api-organization/src/test/java/org/eclipse/che/multiuser/organization/spi/tck/jpa/OrganizationJpaTckModule.java b/multiuser/api/che-multiuser-api-organization/src/test/java/org/eclipse/che/multiuser/organization/spi/tck/jpa/OrganizationJpaTckModule.java index 3bab4451ee0..964c10ba82d 100644 --- a/multiuser/api/che-multiuser-api-organization/src/test/java/org/eclipse/che/multiuser/organization/spi/tck/jpa/OrganizationJpaTckModule.java +++ b/multiuser/api/che-multiuser-api-organization/src/test/java/org/eclipse/che/multiuser/organization/spi/tck/jpa/OrganizationJpaTckModule.java @@ -10,11 +10,10 @@ */ package org.eclipse.che.multiuser.organization.spi.tck.jpa; -import static org.eclipse.che.commons.test.db.H2TestHelper.inMemoryDefault; - import com.google.inject.TypeLiteral; import com.google.inject.persist.jpa.JpaPersistModule; import org.eclipse.che.api.user.server.model.impl.UserImpl; +import org.eclipse.che.commons.test.db.H2DBTestServer; import org.eclipse.che.commons.test.db.H2JpaCleaner; import org.eclipse.che.commons.test.tck.TckModule; import org.eclipse.che.commons.test.tck.TckResourcesCleaner; @@ -42,10 +41,11 @@ public class OrganizationJpaTckModule extends TckModule { @Override protected void configure() { install(new JpaPersistModule("main")); + H2DBTestServer server = H2DBTestServer.startDefault(); bind(SchemaInitializer.class) - .toInstance(new FlywaySchemaInitializer(inMemoryDefault(), "che-schema")); + .toInstance(new FlywaySchemaInitializer(server.getDataSource(), "che-schema")); bind(DBInitializer.class).asEagerSingleton(); - bind(TckResourcesCleaner.class).to(H2JpaCleaner.class); + bind(TckResourcesCleaner.class).toInstance(new H2JpaCleaner(server)); bind(new TypeLiteral>() {}).to(OrganizationDomain.class); diff --git a/multiuser/api/che-multiuser-api-resource/src/test/java/org/eclipse/che/multiuser/resource/spi/tck/jpa/ResourceTckModule.java b/multiuser/api/che-multiuser-api-resource/src/test/java/org/eclipse/che/multiuser/resource/spi/tck/jpa/ResourceTckModule.java index 336f1cfdf57..c1da58fb16b 100644 --- a/multiuser/api/che-multiuser-api-resource/src/test/java/org/eclipse/che/multiuser/resource/spi/tck/jpa/ResourceTckModule.java +++ b/multiuser/api/che-multiuser-api-resource/src/test/java/org/eclipse/che/multiuser/resource/spi/tck/jpa/ResourceTckModule.java @@ -10,11 +10,10 @@ */ package org.eclipse.che.multiuser.resource.spi.tck.jpa; -import static org.eclipse.che.commons.test.db.H2TestHelper.inMemoryDefault; - import com.google.inject.TypeLiteral; import com.google.inject.persist.jpa.JpaPersistModule; import org.eclipse.che.account.spi.AccountImpl; +import org.eclipse.che.commons.test.db.H2DBTestServer; import org.eclipse.che.commons.test.db.H2JpaCleaner; import org.eclipse.che.commons.test.tck.TckModule; import org.eclipse.che.commons.test.tck.TckResourcesCleaner; @@ -33,10 +32,11 @@ public class ResourceTckModule extends TckModule { @Override protected void configure() { install(new JpaPersistModule("main")); + H2DBTestServer server = H2DBTestServer.startDefault(); bind(SchemaInitializer.class) - .toInstance(new FlywaySchemaInitializer(inMemoryDefault(), "che-schema")); + .toInstance(new FlywaySchemaInitializer(server.getDataSource(), "che-schema")); bind(DBInitializer.class).asEagerSingleton(); - bind(TckResourcesCleaner.class).to(H2JpaCleaner.class); + bind(TckResourcesCleaner.class).toInstance(new H2JpaCleaner(server)); bind(new TypeLiteral>() {}) .toInstance(new JpaTckRepository<>(FreeResourcesLimitImpl.class)); diff --git a/multiuser/infrastructures/openshift/pom.xml b/multiuser/infrastructures/openshift/pom.xml deleted file mode 100644 index a16370125be..00000000000 --- a/multiuser/infrastructures/openshift/pom.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - 4.0.0 - - che-multiuser-infrastructures-parent - org.eclipse.che.multiuser - 5.19.0-SNAPSHOT - ../pom.xml - - multiuser-infrastructure-openshift - 5.19.0-SNAPSHOT - jar - Che Multiuser OpenShift Infrastructure - - - io.fabric8 - kubernetes-model - - - javax.inject - javax.inject - - - org.eclipse.che - infrastructure-openshift - - - org.eclipse.che.core - che-core-api-core - - - org.eclipse.che.core - che-core-api-model - - - org.eclipse.che.core - che-core-api-workspace - - - org.eclipse.che.multiuser - che-multiuser-machine-authentication - - - diff --git a/multiuser/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/MultiuserInstallerConfigProvisioner.java b/multiuser/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/MultiuserInstallerConfigProvisioner.java deleted file mode 100644 index 192c3a99a93..00000000000 --- a/multiuser/infrastructures/openshift/src/main/java/org/eclipse/che/workspace/infrastructure/openshift/provision/installer/MultiuserInstallerConfigProvisioner.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2012-2017 Red Hat, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Red Hat, Inc. - initial API and implementation - */ -package org.eclipse.che.workspace.infrastructure.openshift.provision.installer; - -import io.fabric8.kubernetes.api.model.Container; -import javax.inject.Inject; -import javax.inject.Named; -import org.eclipse.che.api.core.model.workspace.runtime.RuntimeIdentity; -import org.eclipse.che.api.workspace.server.spi.InternalMachineConfig; -import org.eclipse.che.commons.env.EnvironmentContext; -import org.eclipse.che.multiuser.machine.authentication.server.MachineTokenRegistry; -import org.eclipse.che.workspace.infrastructure.openshift.environment.OpenShiftEnvironment; - -/** - * //TODO Fix java doc - * - * @author Sergii Leshchenko - */ -public class MultiuserInstallerConfigProvisioner extends InstallerConfigProvisioner { - - private final MachineTokenRegistry tokenRegistry; - - @Inject - public MultiuserInstallerConfigProvisioner( - @Named("che.api") String cheServerEndpoint, MachineTokenRegistry tokenRegistry) { - super(cheServerEndpoint); - this.tokenRegistry = tokenRegistry; - } - - @Override - protected void doProvisionContainer( - OpenShiftEnvironment osEnv, - Container container, - RuntimeIdentity identity, - String machineName, - InternalMachineConfig machineConf) { - super.doProvisionContainer(osEnv, container, identity, machineName, machineConf); - - String currentUserId = EnvironmentContext.getCurrent().getSubject().getUserId(); - String machineToken = tokenRegistry.generateToken(currentUserId, identity.getWorkspaceId()); - putEnv(container.getEnv(), "USER_TOKEN", machineToken); - } -} diff --git a/multiuser/infrastructures/pom.xml b/multiuser/infrastructures/pom.xml deleted file mode 100644 index 72b51c3d030..00000000000 --- a/multiuser/infrastructures/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - 4.0.0 - - che-multiuser-parent - org.eclipse.che.multiuser - 5.19.0-SNAPSHOT - ../pom.xml - - che-multiuser-infrastructures-parent - 5.19.0-SNAPSHOT - pom - Che Multiuser Infrastructures Parent - - openshift - - diff --git a/multiuser/integration-tests/che-multiuser-cascade-removal/src/test/java/org/eclipse/che/multiuser/integration/jpa/cascaderemoval/JpaEntitiesCascadeRemovalTest.java b/multiuser/integration-tests/che-multiuser-cascade-removal/src/test/java/org/eclipse/che/multiuser/integration/jpa/cascaderemoval/JpaEntitiesCascadeRemovalTest.java index 748ba5f307d..0a56e98fe14 100644 --- a/multiuser/integration-tests/che-multiuser-cascade-removal/src/test/java/org/eclipse/che/multiuser/integration/jpa/cascaderemoval/JpaEntitiesCascadeRemovalTest.java +++ b/multiuser/integration-tests/che-multiuser-cascade-removal/src/test/java/org/eclipse/che/multiuser/integration/jpa/cascaderemoval/JpaEntitiesCascadeRemovalTest.java @@ -13,7 +13,6 @@ import static java.util.Arrays.asList; import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; -import static org.eclipse.che.commons.test.db.H2TestHelper.inMemoryDefault; import static org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain.SET_PERMISSIONS; import static org.eclipse.che.multiuser.integration.jpa.cascaderemoval.TestObjectsFactory.createAccount; import static org.eclipse.che.multiuser.integration.jpa.cascaderemoval.TestObjectsFactory.createFactory; @@ -85,8 +84,7 @@ import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.lang.Pair; import org.eclipse.che.commons.subject.SubjectImpl; -import org.eclipse.che.commons.test.db.H2JpaCleaner; -import org.eclipse.che.commons.test.tck.TckResourcesCleaner; +import org.eclipse.che.commons.test.db.H2DBTestServer; import org.eclipse.che.core.db.DBInitializer; import org.eclipse.che.core.db.cascade.CascadeEventSubscriber; import org.eclipse.che.core.db.cascade.event.CascadeEvent; @@ -222,12 +220,12 @@ public void setUp() throws Exception { new AbstractModule() { @Override protected void configure() { + H2DBTestServer server = H2DBTestServer.startDefault(); install(new JpaPersistModule("main")); bind(EventService.class).in(Singleton.class); bind(SchemaInitializer.class) - .toInstance(new FlywaySchemaInitializer(inMemoryDefault(), "che-schema")); + .toInstance(new FlywaySchemaInitializer(server.getDataSource(), "che-schema")); bind(DBInitializer.class).asEagerSingleton(); - bind(TckResourcesCleaner.class).to(H2JpaCleaner.class); install(new InitModule(PostConstruct.class)); install(new UserJpaModule()); install(new AccountModule()); diff --git a/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenProviderImpl.java b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenProviderImpl.java new file mode 100644 index 00000000000..d7e2d0c520d --- /dev/null +++ b/multiuser/machine-auth/che-multiuser-machine-authentication/src/main/java/org/eclipse/che/multiuser/machine/authentication/server/MachineTokenProviderImpl.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.multiuser.machine.authentication.server; + +import javax.inject.Inject; +import javax.inject.Singleton; +import org.eclipse.che.api.workspace.server.MachineTokenProvider; +import org.eclipse.che.commons.env.EnvironmentContext; + +/** + * Provides machine token from {@link MachineTokenRegistry}. + * + *

Note that {@link MachineTokenRegistry} provides different tokens for different users. Token of + * current user will be provided for agents. + * + * @author Sergii Leshchenko + */ +@Singleton +public class MachineTokenProviderImpl implements MachineTokenProvider { + private final MachineTokenRegistry tokenRegistry; + + @Inject + public MachineTokenProviderImpl(MachineTokenRegistry tokenRegistry) { + this.tokenRegistry = tokenRegistry; + } + + @Override + public String getToken(String workspaceId) { + String currentUserId = EnvironmentContext.getCurrent().getSubject().getUserId(); + return tokenRegistry.generateToken(currentUserId, workspaceId); + } +} diff --git a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDaoTest.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDaoTest.java index 72d4e213321..42a417858bf 100644 --- a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaRecipePermissionsDaoTest.java @@ -20,7 +20,6 @@ import javax.persistence.EntityManager; import org.eclipse.che.api.recipe.OldRecipeImpl; import org.eclipse.che.api.user.server.model.impl.UserImpl; -import org.eclipse.che.commons.test.db.H2TestHelper; import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; @@ -106,7 +105,6 @@ public void cleanup() { @AfterClass public void shutdown() throws Exception { manager.getEntityManagerFactory().close(); - H2TestHelper.shutdownDefault(); } @Test diff --git a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTestModule.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTestModule.java index 4042566abbc..f88569608a7 100644 --- a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTestModule.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/JpaTestModule.java @@ -15,9 +15,7 @@ import org.eclipse.che.api.recipe.OldRecipeImpl; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.commons.test.db.H2DBTestServer; -import org.eclipse.che.commons.test.db.H2JpaCleaner; import org.eclipse.che.commons.test.db.PersistTestModuleBuilder; -import org.eclipse.che.commons.test.tck.TckResourcesCleaner; import org.eclipse.che.core.db.DBInitializer; import org.eclipse.che.core.db.h2.jpa.eclipselink.H2ExceptionHandler; import org.eclipse.che.core.db.schema.SchemaInitializer; @@ -50,7 +48,6 @@ protected void configure() { bind(DBInitializer.class).asEagerSingleton(); bind(SchemaInitializer.class) .toInstance(new FlywaySchemaInitializer(server.getDataSource(), "che-schema")); - bind(TckResourcesCleaner.class).toInstance(new H2JpaCleaner(server)); bind(DBInitializer.class).asEagerSingleton(); } } diff --git a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDaoTest.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDaoTest.java index 0065ff9a2a6..c6229223f92 100644 --- a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/MultiuserJpaRecipeDaoTest.java @@ -23,7 +23,6 @@ import javax.persistence.EntityManager; import org.eclipse.che.api.recipe.OldRecipeImpl; import org.eclipse.che.api.user.server.model.impl.UserImpl; -import org.eclipse.che.commons.test.db.H2TestHelper; import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; @@ -118,7 +117,6 @@ public void cleanup() { @AfterClass public void shutdown() throws Exception { manager.getEntityManagerFactory().close(); - H2TestHelper.shutdownDefault(); } @Test diff --git a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java index 8261cb924c5..41763b7a129 100644 --- a/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java +++ b/multiuser/permission/che-multiuser-permission-machine/src/test/java/org/eclipse/che/multiuser/permission/machine/jpa/RemovePermissionsBeforeRecipeRemovedEventSubscriberTest.java @@ -21,7 +21,6 @@ import org.eclipse.che.api.recipe.JpaRecipeDao; import org.eclipse.che.api.recipe.OldRecipeImpl; import org.eclipse.che.api.user.server.model.impl.UserImpl; -import org.eclipse.che.commons.test.db.H2TestHelper; import org.eclipse.che.multiuser.permission.machine.jpa.JpaRecipePermissionsDao.RemovePermissionsBeforeRecipeRemovedEventSubscriber; import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.testng.annotations.AfterClass; @@ -110,7 +109,6 @@ public void cleanup() { public void shutdown() throws Exception { subscriber.unsubscribe(); manager.getEntityManagerFactory().close(); - H2TestHelper.shutdownDefault(); } @Test diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackDaoTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackDaoTest.java index e1c67ae5c0e..9353cd263e3 100644 --- a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackDaoTest.java @@ -21,7 +21,6 @@ import javax.persistence.EntityManager; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; -import org.eclipse.che.commons.test.db.H2TestHelper; import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.MultiuserJpaStackDao; import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; import org.testng.annotations.AfterClass; @@ -132,7 +131,6 @@ public void cleanup() { @AfterClass public void shutdown() throws Exception { manager.getEntityManagerFactory().close(); - H2TestHelper.shutdownDefault(); } @Test diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackPermissionsDaoTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackPermissionsDaoTest.java index f57f282a320..facda0381ab 100644 --- a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackPermissionsDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/JpaStackPermissionsDaoTest.java @@ -11,24 +11,16 @@ package org.eclipse.che.multiuser.permission.workspace.server.jpa; import static java.util.Arrays.asList; -import static org.eclipse.che.commons.test.db.H2TestHelper.inMemoryDefault; import static org.testng.Assert.assertTrue; -import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; -import com.google.inject.TypeLiteral; -import com.google.inject.persist.jpa.JpaPersistModule; import java.util.List; import javax.persistence.EntityManager; import org.eclipse.che.api.core.Page; import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.event.BeforeStackRemovedEvent; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; -import org.eclipse.che.commons.test.db.H2TestHelper; -import org.eclipse.che.core.db.DBInitializer; -import org.eclipse.che.core.db.schema.SchemaInitializer; -import org.eclipse.che.core.db.schema.impl.flyway.FlywaySchemaInitializer; import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaStackPermissionsDao; import org.eclipse.che.multiuser.permission.workspace.server.stack.StackPermissionsImpl; @@ -123,7 +115,6 @@ public void cleanup() { @AfterClass public void shutdown() throws Exception { manager.getEntityManagerFactory().close(); - H2TestHelper.shutdownDefault(); } @Test @@ -170,18 +161,6 @@ public void shouldRemoveStackPublicPermission() throws Exception { assertTrue(byInstance.getItems().stream().filter(p -> "*".equals(p.getUserId())).count() == 0); } - private class TestModule extends AbstractModule { - @Override - protected void configure() { - install(new JpaPersistModule("main")); - bind(SchemaInitializer.class) - .toInstance(new FlywaySchemaInitializer(inMemoryDefault(), "che-schema")); - bind(DBInitializer.class).asEagerSingleton(); - bind(new TypeLiteral>() {}) - .to(TestDomain.class); - } - } - public static class TestDomain extends AbstractPermissionsDomain { public TestDomain() { super("stack", asList("read", "write", "use", "delete")); diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserJpaWorkspaceDaoTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserJpaWorkspaceDaoTest.java index 4a15dea544b..2edb72fd49f 100644 --- a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserJpaWorkspaceDaoTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/jpa/MultiuserJpaWorkspaceDaoTest.java @@ -22,7 +22,6 @@ import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; -import org.eclipse.che.commons.test.db.H2TestHelper; import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.MultiuserJpaWorkspaceDao; import org.testng.annotations.AfterClass; @@ -122,7 +121,6 @@ public void cleanup() { @AfterClass public void shutdown() throws Exception { manager.getEntityManagerFactory().close(); - H2TestHelper.shutdownDefault(); } @Test diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaTckModule.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaTckModule.java index 28208a1206f..11975a90418 100644 --- a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaTckModule.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/JpaTckModule.java @@ -10,8 +10,6 @@ */ package org.eclipse.che.multiuser.permission.workspace.server.spi.jpa; -import static org.eclipse.che.commons.test.db.H2TestHelper.inMemoryDefault; - import com.google.inject.TypeLiteral; import org.eclipse.che.account.spi.AccountImpl; import org.eclipse.che.api.recipe.OldRecipeImpl; @@ -105,8 +103,8 @@ protected void configure() { .toInstance(new JpaTckRepository<>(WorkspaceImpl.class)); bind(SchemaInitializer.class) - .toInstance(new FlywaySchemaInitializer(inMemoryDefault(), "che-schema")); + .toInstance(new FlywaySchemaInitializer(server.getDataSource(), "che-schema")); bind(DBInitializer.class).asEagerSingleton(); - bind(TckResourcesCleaner.class).to(H2JpaCleaner.class); + bind(TckResourcesCleaner.class).toInstance(new H2JpaCleaner(server)); } } diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java index 88817611c58..382edf0aa5c 100644 --- a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemovePermissionsBeforeStackRemovedEventSubscriberTest.java @@ -22,7 +22,6 @@ import org.eclipse.che.api.user.server.model.impl.UserImpl; import org.eclipse.che.api.workspace.server.jpa.JpaStackDao; import org.eclipse.che.api.workspace.server.model.impl.stack.StackImpl; -import org.eclipse.che.commons.test.db.H2TestHelper; import org.eclipse.che.multiuser.api.permission.server.AbstractPermissionsDomain; import org.eclipse.che.multiuser.permission.machine.recipe.RecipePermissionsImpl; import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaStackPermissionsDao.RemovePermissionsBeforeStackRemovedEventSubscriber; @@ -105,7 +104,6 @@ public void cleanup() { public void shutdown() throws Exception { subscriber.unsubscribe(); manager.getEntityManagerFactory().close(); - H2TestHelper.shutdownDefault(); } @Test diff --git a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java index 1241a31b394..800c68b0b61 100644 --- a/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java +++ b/multiuser/permission/che-multiuser-permission-workspace/src/test/java/org/eclipse/che/multiuser/permission/workspace/server/spi/jpa/RemoveWorkersBeforeWorkspaceRemovedEventSubscriberTest.java @@ -23,7 +23,6 @@ import org.eclipse.che.api.workspace.server.jpa.JpaWorkspaceDao; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; -import org.eclipse.che.commons.test.db.H2TestHelper; import org.eclipse.che.multiuser.permission.workspace.server.model.impl.WorkerImpl; import org.eclipse.che.multiuser.permission.workspace.server.spi.jpa.JpaWorkerDao.RemoveWorkersBeforeWorkspaceRemovedEventSubscriber; import org.testng.annotations.AfterClass; @@ -119,7 +118,6 @@ public void cleanup() { public void shutdown() throws Exception { subscriber.unsubscribe(); manager.getEntityManagerFactory().close(); - H2TestHelper.shutdownDefault(); } @Test diff --git a/multiuser/pom.xml b/multiuser/pom.xml index 59e39495151..b4d1abf416e 100644 --- a/multiuser/pom.xml +++ b/multiuser/pom.xml @@ -30,7 +30,6 @@ keycloak machine-auth personal-account - infrastructures integration-tests diff --git a/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/MachineTokenProvider.java b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/MachineTokenProvider.java new file mode 100644 index 00000000000..91e654bf807 --- /dev/null +++ b/wsmaster/che-core-api-workspace/src/main/java/org/eclipse/che/api/workspace/server/MachineTokenProvider.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2012-2017 Red Hat, Inc. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + */ +package org.eclipse.che.api.workspace.server; + +/** + * Provides machine token that should be used for access to workspace master from machine. + * + * @author Sergii Leshchenko + */ +public interface MachineTokenProvider { + + /** + * Returns machine token for specified workspace. + * + * @param workspaceId identifier of workspace to fetch token + */ + String getToken(String workspaceId); + + /** Returns empty string as machine token. */ + class EmptyMachineTokenProvider implements MachineTokenProvider { + @Override + public String getToken(String workspaceId) { + return ""; + } + } +} diff --git a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaWorkspaceDaoTest.java b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaWorkspaceDaoTest.java index 7ea193d27a8..f8d6db0bf43 100644 --- a/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaWorkspaceDaoTest.java +++ b/wsmaster/che-core-api-workspace/src/test/java/org/eclipse/che/api/workspace/server/jpa/JpaWorkspaceDaoTest.java @@ -23,8 +23,7 @@ import org.eclipse.che.api.workspace.server.model.impl.ProjectConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceConfigImpl; import org.eclipse.che.api.workspace.server.model.impl.WorkspaceImpl; -import org.eclipse.che.commons.test.db.H2JpaCleaner; -import org.eclipse.che.commons.test.tck.JpaCleaner; +import org.eclipse.che.commons.test.tck.TckResourcesCleaner; import org.eclipse.che.core.db.jpa.DuplicateKeyException; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -39,14 +38,14 @@ public class JpaWorkspaceDaoTest { private EntityManager manager; private JpaWorkspaceDao workspaceDao; - private JpaCleaner cleaner; + private TckResourcesCleaner cleaner; @BeforeMethod private void setUpManager() { final Injector injector = Guice.createInjector(new WorkspaceTckModule()); manager = injector.getInstance(EntityManager.class); workspaceDao = injector.getInstance(JpaWorkspaceDao.class); - cleaner = injector.getInstance(H2JpaCleaner.class); + cleaner = injector.getInstance(TckResourcesCleaner.class); } @AfterMethod