/*******************************************************************************
* Copyright (c) 2012-2015 Codenvy, S.A.
* 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:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.api.project.server;
import org.eclipse.che.api.project.shared.Builders;
import org.eclipse.che.api.project.shared.dto.BuilderConfiguration;
import org.eclipse.che.api.project.shared.dto.BuildersDescriptor;
import org.eclipse.che.api.project.shared.dto.ProjectDescriptor;
import org.eclipse.che.api.vfs.shared.dto.AccessControlEntry;
import org.eclipse.che.api.vfs.shared.dto.Principal;
import org.eclipse.che.commons.env.EnvironmentContext;
import org.eclipse.che.commons.lang.NameGenerator;
import org.eclipse.che.commons.user.User;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* @author Vitaly Parfonov
*/
public class DtoConverterTest {
/**
* Check user permission is based on userID and not username.
* @throws Exception if something is going wrong
*/
@Test
public void toProjectsDescriptorUserPermissionID() throws Exception {
String userId = "florentID";
String userName = "florent";
List<String> permissions = Arrays.asList("read", "write");
// setup project
Project project = mock(Project.class);
// project permissions
AccessControlEntry accessControlEntry = mock(AccessControlEntry.class);
List<AccessControlEntry> acl = Arrays.asList(accessControlEntry);
doReturn(acl).when(project).getPermissions();
Principal principal = mock(Principal.class);
doReturn(principal).when(accessControlEntry).getPrincipal();
doReturn(permissions).when(accessControlEntry).getPermissions();
// VFS permissions are set on user id
doReturn(Principal.Type.USER).when(principal).getType();
doReturn(userId).when(principal).getName();
// environment context
EnvironmentContext customEnvironment = mock(EnvironmentContext.class);
User user = mock(User.class);
doReturn(user).when(customEnvironment).getUser();
doReturn(userId).when(user).getId();
doReturn(userName).when(user).getName();
// launch convert and before set env context
EnvironmentContext old = EnvironmentContext.getCurrent();
ProjectDescriptor projectDescriptor;
try {
EnvironmentContext.setCurrent(customEnvironment);
projectDescriptor = DtoConverter.toDescriptorDto2(project, null, null);
} finally {
// reset
EnvironmentContext.setCurrent(old);
}
Assert.assertNotNull(projectDescriptor);
Assert.assertEquals(permissions, projectDescriptor.getPermissions());
}
@Test
public void buildersFromDtoBuildersDescriptor() {
//prepare
String optionsKey = NameGenerator.generate("optionsKey",5);
String optionsValue = NameGenerator.generate("optionsValue",5);
String optionsKey1 = NameGenerator.generate("optionsKey",5);
String optionsValue1 = NameGenerator.generate("optionsValue",5);
String optionsKey2 = NameGenerator.generate("optionsKey",5);
String optionsValue2 = NameGenerator.generate("optionsValue",5);
Map<String, String> options = new HashMap<>(3);
options.put(optionsKey,optionsValue);
options.put(optionsKey1,optionsValue1);
options.put(optionsKey2,optionsValue2);
String target1 = NameGenerator.generate("target",5);
String target2 = NameGenerator.generate("target",5);
List<String> targets = new ArrayList<>(2);
targets.add(target1);
targets.add(target2);
BuilderConfiguration builderConfiguration = mock(BuilderConfiguration.class);
when(builderConfiguration.getOptions()).thenReturn(options);
when(builderConfiguration.getTargets()).thenReturn(targets);
Map<String, BuilderConfiguration> configurationMap = new HashMap<>();
String confName = NameGenerator.generate("conf",5);
configurationMap.put(confName, builderConfiguration);
String defaultBuilder = NameGenerator.generate("builder",5);
BuildersDescriptor buildersDescriptor = mock(BuildersDescriptor.class);
when(buildersDescriptor.getConfigs()).thenReturn(configurationMap);
when(buildersDescriptor.getDefault()).thenReturn(defaultBuilder);
//check
Builders builders = DtoConverter.fromDto(buildersDescriptor);
Assert.assertNotNull(builders);
Assert.assertEquals(defaultBuilder, builders.getDefault());
Builders.Config config = builders.getConfig(confName);
Assert.assertNotNull(config);
Assert.assertNotNull(config.getTargets());
Assert.assertEquals(2, config.getTargets().size());
Assert.assertTrue(config.getTargets().contains(target1));
Assert.assertTrue(config.getTargets().contains(target2));
Assert.assertNotNull(config.getOptions());
Assert.assertEquals(3, config.getOptions().size());
Assert.assertTrue(config.getOptions().containsKey(optionsKey));
Assert.assertTrue(config.getOptions().containsKey(optionsKey1));
Assert.assertTrue(config.getOptions().containsKey(optionsKey2));
Assert.assertTrue(config.getOptions().containsValue(optionsValue));
Assert.assertTrue(config.getOptions().containsValue(optionsValue1));
Assert.assertTrue(config.getOptions().containsValue(optionsValue2));
}
}