commons-io
commons-io
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClient.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClient.java
index 7ded184ff2..acde4a5539 100644
--- a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClient.java
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClient.java
@@ -16,7 +16,8 @@ import static org.eclipse.che.api.core.model.workspace.WorkspaceStatus.RUNNING;
import static org.eclipse.che.api.core.model.workspace.WorkspaceStatus.STOPPED;
import com.google.inject.Inject;
-import com.google.inject.Singleton;
+import com.google.inject.assistedinject.Assisted;
+import com.google.inject.assistedinject.AssistedInject;
import java.io.File;
import java.nio.charset.Charset;
import java.util.List;
@@ -32,6 +33,7 @@ import org.eclipse.che.api.workspace.shared.dto.WorkspaceConfigDto;
import org.eclipse.che.api.workspace.shared.dto.WorkspaceDto;
import org.eclipse.che.dto.server.DtoFactory;
import org.eclipse.che.selenium.core.provider.TestApiEndpointUrlProvider;
+import org.eclipse.che.selenium.core.requestfactory.TestUserHttpJsonRequestFactoryCreator;
import org.eclipse.che.selenium.core.user.TestUser;
import org.eclipse.che.selenium.core.user.TestUserNamespaceResolver;
import org.eclipse.che.selenium.core.utils.WaitUtils;
@@ -39,24 +41,38 @@ import org.eclipse.che.selenium.core.workspace.MemoryMeasure;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/** @author Musienko Maxim */
-@Singleton
+/**
+ * @author Musienko Maxim
+ * @author Dmytro Nochevnov
+ */
public class TestWorkspaceServiceClient {
private static final Logger LOG = LoggerFactory.getLogger(TestWorkspaceServiceClient.class);
private final TestApiEndpointUrlProvider apiEndpointProvider;
private final HttpJsonRequestFactory requestFactory;
- private final TestUserNamespaceResolver testUserNamespaceResolver;
+ private final TestUserNamespaceResolver userNamespaceResolver;
@Inject
public TestWorkspaceServiceClient(
TestApiEndpointUrlProvider apiEndpointProvider,
HttpJsonRequestFactory requestFactory,
- TestUserNamespaceResolver testUserNamespaceResolver) {
+ TestUserNamespaceResolver userNamespaceResolver) {
this.apiEndpointProvider = apiEndpointProvider;
this.requestFactory = requestFactory;
- this.testUserNamespaceResolver = testUserNamespaceResolver;
+ this.userNamespaceResolver = userNamespaceResolver;
+ }
+
+ @AssistedInject
+ public TestWorkspaceServiceClient(
+ TestApiEndpointUrlProvider apiEndpointProvider,
+ TestUserNamespaceResolver userNamespaceResolver,
+ TestUserHttpJsonRequestFactoryCreator userHttpJsonRequestFactoryCreator,
+ @Assisted String authToken) {
+ this(
+ apiEndpointProvider,
+ userHttpJsonRequestFactoryCreator.create(authToken),
+ userNamespaceResolver);
}
private String getBaseUrl() {
@@ -258,7 +274,7 @@ public class TestWorkspaceServiceClient {
}
private String getNameBasedUrl(String workspaceName, String username) {
- return getBaseUrl() + "/" + testUserNamespaceResolver.resolve(username) + "/" + workspaceName;
+ return getBaseUrl() + "/" + userNamespaceResolver.resolve(username) + "/" + workspaceName;
}
private String getIdBasedUrl(String workspaceId) {
@@ -288,8 +304,6 @@ public class TestWorkspaceServiceClient {
* Delete workspaces which could be created from factory
*
* @param originalName name workspace which was used to create factory
- * @param username
- * @throws Exception
*/
public void deleteFactoryWorkspaces(String originalName, String username) throws Exception {
String workspace2delete = originalName;
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClientFactory.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClientFactory.java
new file mode 100644
index 0000000000..c4ae3644a5
--- /dev/null
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/client/TestWorkspaceServiceClientFactory.java
@@ -0,0 +1,16 @@
+/*
+ * 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.selenium.core.client;
+
+/** @author Dmytro Nochevnov */
+public interface TestWorkspaceServiceClientFactory {
+ TestWorkspaceServiceClient create(String authToken);
+}
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/requestfactory/TestUserHttpJsonRequestFactory.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/requestfactory/TestUserHttpJsonRequestFactory.java
index 34a2189b76..9f19304e12 100644
--- a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/requestfactory/TestUserHttpJsonRequestFactory.java
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/requestfactory/TestUserHttpJsonRequestFactory.java
@@ -10,15 +10,17 @@
*/
package org.eclipse.che.selenium.core.requestfactory;
+import com.google.inject.assistedinject.Assisted;
import java.util.Objects;
-import javax.validation.constraints.NotNull;
+import javax.inject.Inject;
/** @author Dmytro Nochevnov */
public class TestUserHttpJsonRequestFactory extends TestHttpJsonRequestFactory {
private final String authToken;
- public TestUserHttpJsonRequestFactory(@NotNull String authToken) {
+ @Inject
+ public TestUserHttpJsonRequestFactory(@Assisted String authToken) {
Objects.requireNonNull(authToken);
this.authToken = authToken;
}
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/requestfactory/TestUserHttpJsonRequestFactoryCreator.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/requestfactory/TestUserHttpJsonRequestFactoryCreator.java
new file mode 100644
index 0000000000..ff7ecb8b86
--- /dev/null
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/requestfactory/TestUserHttpJsonRequestFactoryCreator.java
@@ -0,0 +1,16 @@
+/*
+ * 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.selenium.core.requestfactory;
+
+/** @author Dmytro Nochevnov */
+public interface TestUserHttpJsonRequestFactoryCreator {
+ TestUserHttpJsonRequestFactory create(String authToken);
+}
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/DefaultTestUser.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/DefaultTestUser.java
index 878dc8ac20..33f6529e9d 100644
--- a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/DefaultTestUser.java
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/DefaultTestUser.java
@@ -12,17 +12,15 @@ package org.eclipse.che.selenium.core.user;
import com.google.inject.Inject;
import com.google.inject.Singleton;
-import org.eclipse.che.selenium.core.client.TestAuthServiceClient;
-import org.eclipse.che.selenium.core.client.TestUserServiceClient;
-import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient;
/**
* Default {@link TestUser} that will be created before all tests and will be deleted after them.
* All tests share the same default user.
*
- * To have move users per tests see {@link InjectTestUser}.
+ *
To have more users per tests see {@link InjectTestUser}.
*
* @author Anatolii Bazko
+ * @author Dmytro Nochevnov
*/
@Singleton
public class DefaultTestUser implements TestUser {
@@ -30,13 +28,8 @@ public class DefaultTestUser implements TestUser {
private final TestUser testUser;
@Inject
- public DefaultTestUser(
- TestUserServiceClient testUserServiceClient,
- TestWorkspaceServiceClient workspaceServiceClient,
- TestAuthServiceClient authServiceClient)
- throws Exception {
- this.testUser =
- new TestUserImpl(testUserServiceClient, workspaceServiceClient, authServiceClient);
+ public DefaultTestUser(TestUser testUser) throws Exception {
+ this.testUser = testUser;
}
@Override
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserFactory.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserFactory.java
new file mode 100644
index 0000000000..be5e5e79a3
--- /dev/null
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserFactory.java
@@ -0,0 +1,23 @@
+/*
+ * 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.selenium.core.user;
+
+import com.google.inject.assistedinject.Assisted;
+
+/**
+ * @author Anton Korneta
+ * @author Dmytro Nochevnov
+ */
+public interface TestUserFactory {
+ TestUser create(@Assisted("email") String email);
+
+ TestUser create(@Assisted("email") String email, @Assisted("password") String password);
+}
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserImpl.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserImpl.java
index f9a694d3f1..22a69e7581 100644
--- a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserImpl.java
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserImpl.java
@@ -13,6 +13,8 @@ package org.eclipse.che.selenium.core.user;
import static java.lang.String.format;
import com.google.inject.Inject;
+import com.google.inject.assistedinject.Assisted;
+import com.google.inject.assistedinject.AssistedInject;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PreDestroy;
@@ -20,11 +22,17 @@ import org.eclipse.che.commons.lang.NameGenerator;
import org.eclipse.che.selenium.core.client.TestAuthServiceClient;
import org.eclipse.che.selenium.core.client.TestUserServiceClient;
import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient;
+import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClientFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/** @author Anatolii Bazko */
+/**
+ * @author Anatolii Bazko
+ * @author Dmytro Nochevnov
+ * @author Anton Korneta
+ */
public class TestUserImpl implements TestUser {
+
private static final Logger LOG = LoggerFactory.getLogger(TestUserImpl.class);
private final String email;
@@ -36,31 +44,34 @@ public class TestUserImpl implements TestUser {
private final TestUserServiceClient userServiceClient;
private final TestWorkspaceServiceClient workspaceServiceClient;
+ /** To instantiate user with generated email and password. */
@Inject
public TestUserImpl(
TestUserServiceClient userServiceClient,
- TestWorkspaceServiceClient workspaceServiceClient,
- TestAuthServiceClient authServiceClient)
+ TestAuthServiceClient authServiceClient,
+ TestWorkspaceServiceClientFactory workspaceServiceClientFactory)
throws Exception {
this(
- NameGenerator.generate("user", 6) + "@some.mail",
userServiceClient,
- workspaceServiceClient,
- authServiceClient);
+ authServiceClient,
+ workspaceServiceClientFactory,
+ NameGenerator.generate("user", 6) + "@some.mail",
+ NameGenerator.generate("Pwd1", 6));
}
- /** To instantiate user with specific e-mail. */
+ /** To instantiate user with specific e-mail and password. */
+ @AssistedInject
public TestUserImpl(
- String email,
TestUserServiceClient userServiceClient,
- TestWorkspaceServiceClient workspaceServiceClient,
- TestAuthServiceClient authServiceClient)
+ TestAuthServiceClient authServiceClient,
+ TestWorkspaceServiceClientFactory workspaceServiceClientFactory,
+ @Assisted("email") String email,
+ @Assisted("password") String password)
throws Exception {
this.userServiceClient = userServiceClient;
- this.workspaceServiceClient = workspaceServiceClient;
this.email = email;
- this.password = NameGenerator.generate("Pwd1", 6);
+ this.password = password;
this.name = email.split("@")[0];
this.id = userServiceClient.create(email, password).getId();
@@ -68,6 +79,23 @@ public class TestUserImpl implements TestUser {
LOG.info("User name='{}', password '{}', id='{}' has been created", name, password, id);
this.authToken = authServiceClient.login(getName(), getPassword());
+ this.workspaceServiceClient = workspaceServiceClientFactory.create(authToken);
+ }
+
+ /** To instantiate user with password. */
+ @AssistedInject
+ public TestUserImpl(
+ TestUserServiceClient userServiceClient,
+ TestAuthServiceClient authServiceClient,
+ TestWorkspaceServiceClientFactory workspaceServiceClientFactory,
+ @Assisted("email") String email)
+ throws Exception {
+ this(
+ userServiceClient,
+ authServiceClient,
+ workspaceServiceClientFactory,
+ email,
+ NameGenerator.generate("Pwd1", 6));
}
@Override
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserInjector.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserInjector.java
index 755b42a2c2..4043655059 100644
--- a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserInjector.java
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/user/TestUserInjector.java
@@ -14,9 +14,6 @@ import com.google.inject.Injector;
import com.google.inject.MembersInjector;
import com.google.inject.Provider;
import java.lang.reflect.Field;
-import org.eclipse.che.selenium.core.client.TestAuthServiceClient;
-import org.eclipse.che.selenium.core.client.TestUserServiceClient;
-import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient;
/**
* Injector for custom annotation {@link InjectTestUser}.
@@ -39,13 +36,7 @@ public class TestUserInjector implements MembersInjector {
public void injectMembers(T t) {
try {
field.setAccessible(true);
- field.set(
- t,
- new TestUserImpl(
- injectTestUser.value(),
- injector.getInstance(TestUserServiceClient.class),
- injector.getInstance(TestWorkspaceServiceClient.class),
- injector.getInstance(TestAuthServiceClient.class)));
+ field.set(t, injector.getInstance(TestUserFactory.class).create(injectTestUser.value()));
} catch (Exception e) {
throw new RuntimeException("Failed to instantiate user in " + t.getClass().getName(), e);
}
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/workspace/TestWorkspaceImpl.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/workspace/TestWorkspaceImpl.java
index 69dd73cd6b..de083735a3 100644
--- a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/workspace/TestWorkspaceImpl.java
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/workspace/TestWorkspaceImpl.java
@@ -39,11 +39,11 @@ public class TestWorkspaceImpl implements TestWorkspace {
TestUser owner,
int memoryInGB,
String template,
- TestWorkspaceServiceClient workspaceServiceClient) {
+ TestWorkspaceServiceClient testWorkspaceServiceClient) {
this.name = name;
this.owner = owner;
this.id = new AtomicReference<>();
- this.workspaceServiceClient = workspaceServiceClient;
+ this.workspaceServiceClient = testWorkspaceServiceClient;
this.future =
CompletableFuture.runAsync(
diff --git a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/workspace/TestWorkspaceProviderImpl.java b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/workspace/TestWorkspaceProviderImpl.java
index f0237a3db8..49c0b4cfd7 100644
--- a/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/workspace/TestWorkspaceProviderImpl.java
+++ b/selenium/che-selenium-core/src/main/java/org/eclipse/che/selenium/core/workspace/TestWorkspaceProviderImpl.java
@@ -25,6 +25,7 @@ import org.eclipse.che.api.core.model.workspace.WorkspaceStatus;
import org.eclipse.che.commons.lang.NameGenerator;
import org.eclipse.che.commons.lang.concurrent.LoggingUncaughtExceptionHandler;
import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClient;
+import org.eclipse.che.selenium.core.client.TestWorkspaceServiceClientFactory;
import org.eclipse.che.selenium.core.configuration.ConfigurationException;
import org.eclipse.che.selenium.core.user.DefaultTestUser;
import org.eclipse.che.selenium.core.user.TestUser;
@@ -45,17 +46,20 @@ public class TestWorkspaceProviderImpl implements TestWorkspaceProvider {
private final ScheduledExecutorService executor;
private final DefaultTestUser defaultUser;
private final int defaultMemoryGb;
- private final TestWorkspaceServiceClient workspaceServiceClient;
+ private final TestWorkspaceServiceClient testWorkspaceServiceClient;
+ private final TestWorkspaceServiceClientFactory testWorkspaceServiceClientFactory;
@Inject
public TestWorkspaceProviderImpl(
@Named("sys.threads") int threads,
@Named("workspace.default_memory_gb") int defaultMemoryGb,
DefaultTestUser defaultUser,
- TestWorkspaceServiceClient workspaceServiceClient) {
+ TestWorkspaceServiceClient testWorkspaceServiceClient,
+ TestWorkspaceServiceClientFactory testWorkspaceServiceClientFactory) {
this.defaultUser = defaultUser;
this.defaultMemoryGb = defaultMemoryGb;
- this.workspaceServiceClient = workspaceServiceClient;
+ this.testWorkspaceServiceClient = testWorkspaceServiceClient;
+ this.testWorkspaceServiceClientFactory = testWorkspaceServiceClientFactory;
if (threads == 0) {
throw new ConfigurationException("Threads number is 0");
@@ -80,7 +84,12 @@ public class TestWorkspaceProviderImpl implements TestWorkspaceProvider {
return doGetWorkspaceFromPool();
}
- return new TestWorkspaceImpl(generateName(), owner, memoryGB, template, workspaceServiceClient);
+ return new TestWorkspaceImpl(
+ generateName(),
+ owner,
+ memoryGB,
+ template,
+ testWorkspaceServiceClientFactory.create(owner.getAuthToken()));
}
private boolean hasDefaultValues(TestUser testUser, int memoryGB, String template) {
@@ -94,10 +103,10 @@ public class TestWorkspaceProviderImpl implements TestWorkspaceProvider {
// insure workspace is running
TestWorkspace testWorkspace = testWorkspaceQueue.take();
WorkspaceStatus testWorkspaceStatus =
- workspaceServiceClient.getById(testWorkspace.getId()).getStatus();
+ testWorkspaceServiceClient.getById(testWorkspace.getId()).getStatus();
if (testWorkspaceStatus != WorkspaceStatus.RUNNING) {
- workspaceServiceClient.start(
+ testWorkspaceServiceClient.start(
testWorkspace.getId(), testWorkspace.getName(), testWorkspace.getOwner());
}
diff --git a/selenium/che-selenium-test/pom.xml b/selenium/che-selenium-test/pom.xml
index 55882d7fd2..ed7636a104 100644
--- a/selenium/che-selenium-test/pom.xml
+++ b/selenium/che-selenium-test/pom.xml
@@ -37,6 +37,10 @@
com.google.inject
guice
+