259 lines
8.2 KiB
Java
259 lines
8.2 KiB
Java
package org.gcube.data.access.fs.external;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.net.URI;
|
|
import java.net.URL;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
|
|
import org.gcube.common.security.providers.SecretManagerProvider;
|
|
import org.gcube.common.security.secrets.CredentialSecret;
|
|
import org.gcube.common.storagehub.client.dsl.FolderContainer;
|
|
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
|
|
import org.gcube.common.storagehub.model.acls.AccessType;
|
|
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
|
|
import org.gcube.common.storagehub.model.items.SharedFolder;
|
|
import org.junit.Before;
|
|
import org.junit.BeforeClass;
|
|
import org.junit.Test;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
public class CreateUsers {
|
|
|
|
private static StorageHubClient client;
|
|
|
|
private static Logger log = LoggerFactory.getLogger(CreateUsers.class);
|
|
|
|
private String user ="pippo.test";
|
|
private String user2 ="lucio.lelii";
|
|
private String vreWA ="vre-write-all";
|
|
private String vreRO ="vre-read-only";
|
|
private String vreWO ="vre-write-owner";
|
|
|
|
private static final int TEST_USERS_NUMBER = 10;
|
|
|
|
@BeforeClass
|
|
public static void before() throws Exception{
|
|
String address = "localhost";
|
|
int port = 8081;
|
|
URI storagehubUri = new URL(String.format("http://%s:%d/storagehub", address,port)).toURI();
|
|
client = new StorageHubClient(storagehubUri);
|
|
}
|
|
|
|
|
|
|
|
|
|
@Before
|
|
public void setSecret() {
|
|
CredentialSecret secret = new CredentialSecret("sg4-test-client", "a156a7db-3b32-4cd5-b27b-2488e0e01698", "/gcube");
|
|
SecretManagerProvider.set(secret);
|
|
}
|
|
|
|
@Test
|
|
public void initialiseEnvironment() throws Exception {
|
|
this.createUser();
|
|
this.addUserToVREs();
|
|
this.createUser2AndAddItToVres();
|
|
}
|
|
|
|
|
|
//USED TO CREATE TEST USERS
|
|
final String lexicon = "ABCDEFGHIJKLMNOPQRSTUVWXYZ12345674890";
|
|
|
|
final java.util.Random rand = new java.util.Random();
|
|
|
|
// consider using a Map<String,Boolean> to say whether the identifier is being used or not
|
|
final Set<String> identifiers = new HashSet<String>();
|
|
|
|
public String randomIdentifier() {
|
|
StringBuilder builder = new StringBuilder();
|
|
while(builder.toString().length() == 0) {
|
|
int length = rand.nextInt(5)+5;
|
|
for(int i = 0; i < length; i++) {
|
|
builder.append(lexicon.charAt(rand.nextInt(lexicon.length())));
|
|
}
|
|
if(identifiers.contains(builder.toString())) {
|
|
builder = new StringBuilder();
|
|
}
|
|
}
|
|
return builder.toString();
|
|
}
|
|
// END
|
|
|
|
@Test
|
|
public void createTestUsers() throws Exception{
|
|
for (int i =0 ; i<TEST_USERS_NUMBER; i++)
|
|
client.createUserAccount(randomIdentifier().toLowerCase());
|
|
}
|
|
|
|
@Test
|
|
public void createAccountforManging() throws Exception{
|
|
client.createUserAccount("service-account-sg4-test-client");
|
|
client.getVreFolderManager(vreWA).addUser("service-account-sg4-test-client");
|
|
client.getVreFolderManager(vreRO).addUser("service-account-sg4-test-client");
|
|
client.getVreFolderManager(vreWO).addUser("service-account-sg4-test-client");
|
|
}
|
|
|
|
@Test
|
|
public void getUserRootId() throws Exception{
|
|
client.impersonate(user);
|
|
System.out.println(client.getWSRoot().getId());
|
|
}
|
|
|
|
@Test
|
|
public void getBearerToken() {
|
|
System.out.println(SecretManagerProvider.get().getHTTPAuthorizationHeaders());
|
|
}
|
|
|
|
@Test
|
|
public void getFolderACLsOnrROVRE() throws Exception {
|
|
client.impersonate(user);
|
|
FolderContainer vre = (FolderContainer) client.getVREFolders().getContainers().stream().filter(f -> f.get().getTitle().equals(vreWA)).findFirst().get();
|
|
FolderContainer folder = (FolderContainer) vre.list().getContainers().stream().findFirst().get();
|
|
System.out.println(folder.get().getTitle()+" "+folder.getAcls());
|
|
}
|
|
|
|
|
|
@Test
|
|
public void createUser() throws Exception{
|
|
client.createUserAccount(user);
|
|
}
|
|
|
|
@Test
|
|
public void removeUserFromGroup() throws Exception{
|
|
client.getVreFolderManager(vreWA).removeAdmin(user);
|
|
client.getVreFolderManager(vreWA).removeUser(user);
|
|
|
|
}
|
|
|
|
@Test
|
|
public void addUserToVREs() throws Exception{
|
|
client.getVreFolderManager(vreWA).createVRE(AccessType.WRITE_ALL, user, false);
|
|
client.getVreFolderManager(vreWA).setAdmin(user);
|
|
client.getVreFolderManager(vreRO).createVRE(AccessType.READ_ONLY, user);
|
|
client.getVreFolderManager(vreRO).setAdmin(user);
|
|
client.getVreFolderManager(vreWO).createVRE(AccessType.WRITE_OWNER, user);
|
|
client.getVreFolderManager(vreWO).setAdmin(user);
|
|
createFolderByAdminInVREWO();
|
|
}
|
|
|
|
@Test
|
|
public void createFolderByAdminInVREWO() throws Exception {
|
|
client.impersonate(user);
|
|
retrieveVREbyName(vreWO).newFolder("test created by pippo", "");
|
|
}
|
|
|
|
@Test
|
|
public void createUser2AndAddItToVres() throws Exception{
|
|
client.impersonate(user);
|
|
client.createUserAccount(user2);
|
|
client.getVreFolderManager(vreWA).addUser(user2);
|
|
client.getVreFolderManager(vreRO).addUser(user2);
|
|
client.getVreFolderManager(vreWO).addUser(user2);
|
|
}
|
|
|
|
@Test
|
|
public void printVREFoldersAdmin() throws StorageHubException{
|
|
System.out.println("launching ....." );
|
|
List<FolderContainer> vreFolders = client.getVREFolders().getContainers().stream().map(c -> ((FolderContainer) c)).collect(Collectors.toList());
|
|
for (FolderContainer fc : vreFolders) {
|
|
System.out.println(fc.get().getTitle());
|
|
System.out.println(fc.getAcls());
|
|
System.out.println(client.getVreFolderManager(fc.get().getTitle()).getAdmins());
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void getVREs() throws Exception{
|
|
client.impersonate(user);
|
|
client.getVREFolders().getItems().stream().map(i -> ((SharedFolder) i)).forEach(s -> System.out.println(s.getDisplayName()));
|
|
}
|
|
|
|
@Test
|
|
public void getWsRoot() throws Exception{
|
|
client.impersonate(user);
|
|
client.getWSRoot().list().getItems().forEach(i -> System.out.println(i.getId()+" "+i.getTitle()));
|
|
}
|
|
|
|
@Test
|
|
public void download() throws Exception{
|
|
client.impersonate(user);
|
|
try ( InputStream is = client.open("5b5236d2-ec88-49f2-a2c5-04ecf8284191").asFile().download().getStream()){
|
|
String text = new BufferedReader(
|
|
new InputStreamReader(is, StandardCharsets.UTF_8))
|
|
.lines()
|
|
.collect(Collectors.joining("\n"));
|
|
System.out.println(text);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void uploadFile() {
|
|
client.impersonate(user);
|
|
try (InputStream is = CreateUsers.class.getResourceAsStream("/test1.jpg")){
|
|
client.getWSRoot().uploadFile(is, "test1.jpg", "a test");
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private FolderContainer retrieveVREbyName(String name) throws StorageHubException {
|
|
List<FolderContainer> vreFolders = client.getVREFolders().getContainers().stream().map(c -> ((FolderContainer) c)).collect(Collectors.toList());
|
|
return vreFolders.stream().filter(c -> ((SharedFolder)c.get()).getDisplayName().equals(name)).findFirst().get();
|
|
}
|
|
|
|
@Test
|
|
public void uploadFileToVREWriteAll() throws StorageHubException{
|
|
client.impersonate(user2);
|
|
try (InputStream is = CreateUsers.class.getResourceAsStream("/test1.jpg")){
|
|
retrieveVREbyName(vreWA).uploadFile(is, "test1.jpg", "a test");
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test(expected = StorageHubException.class)
|
|
public void uploadFileToVREReadOnly() throws StorageHubException{
|
|
client.impersonate(user2);
|
|
try (InputStream is = CreateUsers.class.getResourceAsStream("/test1.jpg")){
|
|
retrieveVREbyName(vreRO).uploadFile(is, "test1.jpg", "a test");
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void uploadFileToVREReadOnlyAdmin() throws StorageHubException{
|
|
client.impersonate(user);
|
|
try (InputStream is = CreateUsers.class.getResourceAsStream("/test1.jpg")){
|
|
retrieveVREbyName(vreRO).uploadFile(is, "test1.jpg", "a test");
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void uploadFileToVREWriteOwner() throws StorageHubException{
|
|
client.impersonate(user2);
|
|
try (InputStream is = CreateUsers.class.getResourceAsStream("/test1.jpg")){
|
|
retrieveVREbyName(vreWO).uploadFile(is, "test1.jpg", "a test");
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void removeUser() throws Exception{
|
|
client.deleteUserAccount(user);
|
|
}
|
|
|
|
}
|