mirror of https://github.com/apache/jclouds.git
create/get/delete user
This commit is contained in:
parent
0ee77f99ec
commit
bdc09ee053
|
@ -153,6 +153,10 @@ public class VCloudDirectorMediaType {
|
||||||
|
|
||||||
public static final String ADMIN_ORG_NETWORK = "application/vnd.vmware.admin.orgNetwork+xml";
|
public static final String ADMIN_ORG_NETWORK = "application/vnd.vmware.admin.orgNetwork+xml";
|
||||||
|
|
||||||
|
public static final String USER = "application/vnd.vmware.admin.user+xml";
|
||||||
|
|
||||||
|
public static final String ROLE = "application/vnd.vmware.admin.role+xml";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* All acceptable media types.
|
* All acceptable media types.
|
||||||
*
|
*
|
||||||
|
@ -173,6 +177,6 @@ public class VCloudDirectorMediaType {
|
||||||
PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS,
|
PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS,
|
||||||
ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS,
|
ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS,
|
||||||
ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS, ORG_SETTINGS, ADMIN_NETWORK,
|
ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS, ORG_SETTINGS, ADMIN_NETWORK,
|
||||||
ADMIN_ORG_NETWORK
|
ADMIN_ORG_NETWORK, USER, ROLE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,8 @@ import javax.xml.bind.annotation.XmlElementWrapper;
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
import javax.xml.bind.annotation.XmlType;
|
import javax.xml.bind.annotation.XmlType;
|
||||||
|
|
||||||
|
import org.testng.collections.Lists;
|
||||||
|
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
@ -125,7 +127,7 @@ public class User
|
||||||
private Integer deployedVmQuota;
|
private Integer deployedVmQuota;
|
||||||
private Reference role;
|
private Reference role;
|
||||||
private String password;
|
private String password;
|
||||||
private List<Reference> groups;
|
private List<Reference> groups = Lists.newArrayList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see User#getFullName()
|
* @see User#getFullName()
|
||||||
|
@ -267,7 +269,7 @@ public class User
|
||||||
* @see User#getGroups()
|
* @see User#getGroups()
|
||||||
*/
|
*/
|
||||||
public Builder groups(List<Reference> groups) {
|
public Builder groups(List<Reference> groups) {
|
||||||
this.groups = ImmutableList.copyOf(groups);
|
this.groups = groups == null ? null : ImmutableList.copyOf(groups);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -287,6 +289,14 @@ public class User
|
||||||
role, password, groups);
|
role, password, groups);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see EntityType#getName()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder name(String name) {
|
||||||
|
this.name = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see EntityType#getId()
|
* @see EntityType#getId()
|
||||||
|
@ -616,7 +626,7 @@ public class User
|
||||||
* {@link GroupsListType }
|
* {@link GroupsListType }
|
||||||
*/
|
*/
|
||||||
public List<Reference> getGroups() {
|
public List<Reference> getGroups() {
|
||||||
return groups;
|
return groups == null ? Lists.<Reference>newArrayList() : groups;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -690,5 +700,4 @@ public class User
|
||||||
.add("password", password)
|
.add("password", password)
|
||||||
.add("groups", groups).toString();
|
.add("groups", groups).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,8 +18,27 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.vcloud.director.v1_5.features;
|
package org.jclouds.vcloud.director.v1_5.features;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.DELETE;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
|
||||||
|
import org.jclouds.rest.annotations.BinderParam;
|
||||||
|
import org.jclouds.rest.annotations.EndpointParam;
|
||||||
|
import org.jclouds.rest.annotations.ExceptionParser;
|
||||||
|
import org.jclouds.rest.annotations.JAXBResponseParser;
|
||||||
import org.jclouds.rest.annotations.RequestFilters;
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
|
import org.jclouds.rest.binders.BindToXMLPayload;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.User;
|
||||||
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
|
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx;
|
||||||
|
|
||||||
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see GroupClient
|
* @see GroupClient
|
||||||
|
@ -27,13 +46,37 @@ import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
|
||||||
*/
|
*/
|
||||||
@RequestFilters(AddVCloudAuthorizationToRequest.class)
|
@RequestFilters(AddVCloudAuthorizationToRequest.class)
|
||||||
public interface UserAsyncClient {
|
public interface UserAsyncClient {
|
||||||
// POST /admin/org/{id}/users
|
/**
|
||||||
|
* @see UserClient#createUser(URI, User)
|
||||||
|
*/
|
||||||
|
@POST
|
||||||
|
@Path("/users")
|
||||||
|
@Consumes(VCloudDirectorMediaType.USER)
|
||||||
|
@Produces(VCloudDirectorMediaType.USER)
|
||||||
|
@JAXBResponseParser
|
||||||
|
@ExceptionParser(ThrowVCloudErrorOn4xx.class)
|
||||||
|
ListenableFuture<User> createUser(@EndpointParam URI orgRef,
|
||||||
|
@BinderParam(BindToXMLPayload.class) User user);
|
||||||
|
|
||||||
// GET /admin/user/{id}
|
/**
|
||||||
|
* @see UserClient#getUser(URI)
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Consumes
|
||||||
|
@JAXBResponseParser
|
||||||
|
@ExceptionParser(ThrowVCloudErrorOn4xx.class)
|
||||||
|
ListenableFuture<User> getUser(@EndpointParam URI userRef);
|
||||||
|
|
||||||
// PUT /admin/user/{id}
|
// PUT /admin/user/{id}
|
||||||
|
|
||||||
// DELETE /admin/user/{id}
|
/**
|
||||||
|
* @see UserClient#deleteUser(URI)
|
||||||
|
*/
|
||||||
|
@DELETE
|
||||||
|
@Consumes
|
||||||
|
@JAXBResponseParser
|
||||||
|
@ExceptionParser(ThrowVCloudErrorOn4xx.class)
|
||||||
|
ListenableFuture<Void> deleteUser(@EndpointParam URI userRef);
|
||||||
|
|
||||||
// POST /admin/user/{id}/action/unlock
|
// POST /admin/user/{id}/action/unlock
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,10 +18,12 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.vcloud.director.v1_5.features;
|
package org.jclouds.vcloud.director.v1_5.features;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.jclouds.concurrent.Timeout;
|
import org.jclouds.concurrent.Timeout;
|
||||||
import org.jclouds.vcloud.director.v1_5.domain.Group;
|
import org.jclouds.vcloud.director.v1_5.domain.Group;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.User;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides synchronous access to {@link Group} objects.
|
* Provides synchronous access to {@link Group} objects.
|
||||||
|
@ -31,13 +33,40 @@ import org.jclouds.vcloud.director.v1_5.domain.Group;
|
||||||
*/
|
*/
|
||||||
@Timeout(duration = 180, timeUnit = TimeUnit.SECONDS)
|
@Timeout(duration = 180, timeUnit = TimeUnit.SECONDS)
|
||||||
public interface UserClient {
|
public interface UserClient {
|
||||||
// POST /admin/org/{id}/users
|
/**
|
||||||
|
* Creates or imports a user in an organization. The user could be enabled or disabled.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* POST /admin/org/{id}/users
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param orgRef the reference for the org
|
||||||
|
* @return the created user
|
||||||
|
*/
|
||||||
|
User createUser(URI orgRef, User user);
|
||||||
|
|
||||||
// GET /admin/user/{id}
|
/**
|
||||||
|
* Retrieves a user. This entity could be enabled or disabled.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* GET /admin/user/{id}
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param userRef the reference for the user
|
||||||
|
* @return a user
|
||||||
|
*/
|
||||||
|
User getUser(URI userRef);
|
||||||
|
|
||||||
// PUT /admin/user/{id}
|
// PUT /admin/user/{id}
|
||||||
|
|
||||||
// DELETE /admin/user/{id}
|
/**
|
||||||
|
* Deletes a user. Enabled and disabled users could be deleted.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* DELETE /admin/catalog/{id}
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
void deleteUser(URI userRef);
|
||||||
|
|
||||||
// POST /admin/user/{id}/action/unlock
|
// POST /admin/user/{id}/action/unlock
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,16 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.vcloud.director.v1_5.features;
|
package org.jclouds.vcloud.director.v1_5.features;
|
||||||
|
|
||||||
import java.net.URI;
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.Link;
|
||||||
import org.jclouds.vcloud.director.v1_5.domain.Reference;
|
import org.jclouds.vcloud.director.v1_5.domain.Reference;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.User;
|
||||||
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
|
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
@ -32,17 +39,113 @@ import org.testng.annotations.Test;
|
||||||
@Test(groups = { "unit", "admin", "adminUser"}, singleThreaded = true, testName = "UserClientExpectTest")
|
@Test(groups = { "unit", "admin", "adminUser"}, singleThreaded = true, testName = "UserClientExpectTest")
|
||||||
public class UserClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
|
public class UserClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
|
||||||
|
|
||||||
private Reference userRef = Reference.builder()
|
private Reference orgRef = Reference.builder()
|
||||||
.href(URI.create(endpoint + "/admin/user/???"))
|
.href(URI.create(endpoint + "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// POST /admin/org/{id}/users
|
private Reference userRef = Reference.builder()
|
||||||
|
.href(URI.create(endpoint + "/admin/user/b37223f3-8792-477a-820f-334998f61cd6"))
|
||||||
|
.build();
|
||||||
|
|
||||||
// GET /admin/user/{id}
|
@Test
|
||||||
|
public void testCreateUser() {
|
||||||
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
|
new VcloudHttpRequestPrimer()
|
||||||
|
.apiCommand("POST", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/catalogs")
|
||||||
|
.xmlFilePayload("/user/createUserSource.xml", VCloudDirectorMediaType.USER)
|
||||||
|
.acceptMedia(VCloudDirectorMediaType.USER)
|
||||||
|
.httpRequestBuilder().build(),
|
||||||
|
new VcloudHttpResponsePrimer()
|
||||||
|
.xmlFilePayload("/user/createUser.xml", VCloudDirectorMediaType.USER)
|
||||||
|
.httpResponseBuilder().build());
|
||||||
|
|
||||||
|
User source = createUserSource();
|
||||||
|
User expected = createUser();
|
||||||
|
|
||||||
|
assertEquals(client.getUserClient().createUser(orgRef.getHref(), source), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final User createUserSource() {
|
||||||
|
return User.builder()
|
||||||
|
.name("test")
|
||||||
|
.fullName("testFullName")
|
||||||
|
.emailAddress("test@test.com")
|
||||||
|
.telephone("555-1234")
|
||||||
|
.isEnabled(false)
|
||||||
|
.im("testIM")
|
||||||
|
.isAlertEnabled(false)
|
||||||
|
.alertEmailPrefix("testPrefix")
|
||||||
|
.alertEmail("testAlert@test.com")
|
||||||
|
.isExternal(false)
|
||||||
|
.isGroupRole(false)
|
||||||
|
.role(Reference.builder()
|
||||||
|
.type("application/vnd.vmware.admin.role+xml")
|
||||||
|
.name("vApp User")
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/role/ff1e0c91-1288-3664-82b7-a6fa303af4d1"))
|
||||||
|
.build())
|
||||||
|
.password("password")
|
||||||
|
.groups(Collections.<Reference>emptyList())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final User createUser() {
|
||||||
|
return createUserSource().toBuilder()
|
||||||
|
.id("urn:vcloud:user:b37223f3-8792-477a-820f-334998f61cd6")
|
||||||
|
.type("application/vnd.vmware.admin.user+xml")
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/b37223f3-8792-477a-820f-334998f61cd6"))
|
||||||
|
.link(Link.builder()
|
||||||
|
.rel("edit")
|
||||||
|
.type("application/vnd.vmware.admin.user+xml")
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/b37223f3-8792-477a-820f-334998f61cd6"))
|
||||||
|
.build())
|
||||||
|
.link(Link.builder()
|
||||||
|
.rel("remove")
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/b37223f3-8792-477a-820f-334998f61cd6"))
|
||||||
|
.build())
|
||||||
|
.isLocked(false)
|
||||||
|
.isDefaultCached(false)
|
||||||
|
.storedVmQuota(0)
|
||||||
|
.deployedVmQuota(0)
|
||||||
|
.password(null)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetUser() {
|
||||||
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
|
new VcloudHttpRequestPrimer()
|
||||||
|
.apiCommand("GET", "/admin/user/b37223f3-8792-477a-820f-334998f61cd6")
|
||||||
|
.acceptAnyMedia()
|
||||||
|
.httpRequestBuilder().build(),
|
||||||
|
new VcloudHttpResponsePrimer()
|
||||||
|
.xmlFilePayload("/user/user.xml", VCloudDirectorMediaType.USER)
|
||||||
|
.httpResponseBuilder().build());
|
||||||
|
|
||||||
|
User expected = user();
|
||||||
|
|
||||||
|
assertEquals(client.getUserClient().getUser(userRef.getHref()), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final User user() {
|
||||||
|
return createUser().toBuilder()
|
||||||
|
.nameInSource("test")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
// PUT /admin/user/{id}
|
// PUT /admin/user/{id}
|
||||||
|
|
||||||
// DELETE /admin/user/{id}
|
|
||||||
|
|
||||||
// POST /admin/user/{id}/action/unlock
|
// POST /admin/user/{id}/action/unlock
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteUser() {
|
||||||
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
|
new VcloudHttpRequestPrimer()
|
||||||
|
.apiCommand("DELETE", "/admin/user/b37223f3-8792-477a-820f-334998f61cd6")
|
||||||
|
.acceptAnyMedia()
|
||||||
|
.httpRequestBuilder().build(),
|
||||||
|
new VcloudHttpResponsePrimer()
|
||||||
|
.httpResponseBuilder().statusCode(204).build());
|
||||||
|
|
||||||
|
client.getUserClient().deleteUser(userRef.getHref());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,10 +18,25 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.vcloud.director.v1_5.features;
|
package org.jclouds.vcloud.director.v1_5.features;
|
||||||
|
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_DEL;
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
import static org.testng.Assert.assertNull;
|
||||||
|
import static org.testng.Assert.fail;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import org.jclouds.vcloud.director.v1_5.VCloudDirectorException;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.Checks;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.Error;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.Reference;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.ReferenceType;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.User;
|
||||||
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
|
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
|
||||||
import org.testng.annotations.BeforeClass;
|
import org.testng.annotations.BeforeClass;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests live behavior of {@link AdminGroupClient}.
|
* Tests live behavior of {@link AdminGroupClient}.
|
||||||
*
|
*
|
||||||
|
@ -30,28 +45,88 @@ import org.testng.annotations.Test;
|
||||||
@Test(groups = { "live", "admin", "adminUser" }, singleThreaded = true, testName = "UserClientLiveTest")
|
@Test(groups = { "live", "admin", "adminUser" }, singleThreaded = true, testName = "UserClientLiveTest")
|
||||||
public class UserClientLiveTest extends BaseVCloudDirectorClientLiveTest {
|
public class UserClientLiveTest extends BaseVCloudDirectorClientLiveTest {
|
||||||
|
|
||||||
public static final String GROUP = "admin group";
|
public static final String USER = "admin user";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convenience references to API clients.
|
* Convenience references to API clients.
|
||||||
*/
|
*/
|
||||||
|
UserClient userClient;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Shared state between dependant tests.
|
* Shared state between dependant tests.
|
||||||
*/
|
*/
|
||||||
|
private ReferenceType<?> orgRef;
|
||||||
|
private User user;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@BeforeClass(inheritGroups = true)
|
@BeforeClass(inheritGroups = true)
|
||||||
public void setupRequiredClients() {
|
public void setupRequiredClients() {
|
||||||
|
userClient = context.getApi().getUserClient();
|
||||||
|
orgRef = Iterables.getFirst(context.getApi().getOrgClient().getOrgList().getOrgs(), null).toAdminReference(endpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
// POST /admin/org/{id}/users
|
@Test(testName = "POST /admin/org/{id}/users")
|
||||||
|
public void testCreateUser() {
|
||||||
|
User newUser = User.builder()
|
||||||
|
.name("test")
|
||||||
|
.fullName("testFullName")
|
||||||
|
.emailAddress("test@test.com")
|
||||||
|
.telephone("555-1234")
|
||||||
|
.isEnabled(false)
|
||||||
|
.im("testIM")
|
||||||
|
.isAlertEnabled(false)
|
||||||
|
.alertEmailPrefix("testPrefix")
|
||||||
|
.alertEmail("testAlert@test.com")
|
||||||
|
.isExternal(false)
|
||||||
|
.isGroupRole(false)
|
||||||
|
.role(Reference.builder() // FIXME: auto-fetch a role? or inject
|
||||||
|
.name("vApp User")
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/role/ff1e0c91-1288-3664-82b7-a6fa303af4d1"))
|
||||||
|
.build())
|
||||||
|
.password("password")
|
||||||
|
// .group()
|
||||||
|
.build();
|
||||||
|
user = userClient.createUser(orgRef.getHref(), newUser);
|
||||||
|
|
||||||
// GET /admin/user/{id}
|
Checks.checkUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(testName = "GET /admin/user/{id}",
|
||||||
|
dependsOnMethods = { "testCreateUser" })
|
||||||
|
public void testGetUser() {
|
||||||
|
user = userClient.getUser(user.getHref());
|
||||||
|
|
||||||
|
Checks.checkUser(user);
|
||||||
|
}
|
||||||
|
|
||||||
// PUT /admin/user/{id}
|
// PUT /admin/user/{id}
|
||||||
|
|
||||||
// DELETE /admin/user/{id}
|
|
||||||
|
|
||||||
// POST /admin/user/{id}/action/unlock
|
// POST /admin/user/{id}/action/unlock
|
||||||
|
|
||||||
|
@Test(testName = "DELETE /admin/user/{id}",
|
||||||
|
dependsOnMethods = { "testGetUser" } )
|
||||||
|
public void testDeleteUser() {
|
||||||
|
userClient.deleteUser(user.getHref());
|
||||||
|
|
||||||
|
Error expected = Error.builder()
|
||||||
|
.message("No access to entity \"(com.vmware.vcloud.entity.user:"+
|
||||||
|
user.getId().substring("urn:vcloud:user:".length())+")\".")
|
||||||
|
.majorErrorCode(403)
|
||||||
|
.minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
try {
|
||||||
|
user = userClient.getUser(user.getHref());
|
||||||
|
fail("Should give HTTP 403 error");
|
||||||
|
} catch (VCloudDirectorException vde) {
|
||||||
|
assertEquals(vde.getError(), expected);
|
||||||
|
user = null;
|
||||||
|
} catch (Exception e) {
|
||||||
|
fail("Should have thrown a VCloudDirectorException");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user != null) { // guard against NPE on the .toStrings
|
||||||
|
assertNull(user, String.format(OBJ_DEL, USER, user.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<User xmlns="http://www.vmware.com/vcloud/v1.5" name="test" id="urn:vcloud:user:b37223f3-8792-477a-820f-334998f61cd6" type="application/vnd.vmware.admin.user+xml" href="https://vcloudbeta.bluelock.com/api/admin/user/b37223f3-8792-477a-820f-334998f61cd6" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://vcloudbeta.bluelock.com/api/v1.5/schema/master.xsd">
|
||||||
|
<Link rel="edit" type="application/vnd.vmware.admin.user+xml" href="https://vcloudbeta.bluelock.com/api/admin/user/b37223f3-8792-477a-820f-334998f61cd6"/>
|
||||||
|
<Link rel="remove" href="https://vcloudbeta.bluelock.com/api/admin/user/b37223f3-8792-477a-820f-334998f61cd6"/>
|
||||||
|
<FullName>testFullName</FullName>
|
||||||
|
<EmailAddress>test@test.com</EmailAddress>
|
||||||
|
<Telephone>555-1234</Telephone>
|
||||||
|
<IsEnabled>false</IsEnabled>
|
||||||
|
<IsLocked>false</IsLocked>
|
||||||
|
<IM>testIM</IM>
|
||||||
|
<IsAlertEnabled>false</IsAlertEnabled>
|
||||||
|
<AlertEmailPrefix>testPrefix</AlertEmailPrefix>
|
||||||
|
<AlertEmail>testAlert@test.com</AlertEmail>
|
||||||
|
<IsExternal>false</IsExternal>
|
||||||
|
<IsDefaultCached>false</IsDefaultCached>
|
||||||
|
<IsGroupRole>false</IsGroupRole>
|
||||||
|
<StoredVmQuota>0</StoredVmQuota>
|
||||||
|
<DeployedVmQuota>0</DeployedVmQuota>
|
||||||
|
<Role type="application/vnd.vmware.admin.role+xml" name="vApp User" href="https://vcloudbeta.bluelock.com/api/admin/role/ff1e0c91-1288-3664-82b7-a6fa303af4d1"/>
|
||||||
|
<GroupReferences/>
|
||||||
|
</User>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<User name="test" xmlns="http://www.vmware.com/vcloud/v1.5">
|
||||||
|
<FullName>testFullName</FullName>
|
||||||
|
<EmailAddress>test@test.com</EmailAddress>
|
||||||
|
<Telephone>555-1234</Telephone>
|
||||||
|
<IsEnabled>false</IsEnabled>
|
||||||
|
<IM>testIM</IM>
|
||||||
|
<IsAlertEnabled>false</IsAlertEnabled>
|
||||||
|
<AlertEmailPrefix>testPrefix</AlertEmailPrefix>
|
||||||
|
<AlertEmail>testAlert@test.com</AlertEmail>
|
||||||
|
<IsExternal>false</IsExternal>
|
||||||
|
<IsGroupRole>false</IsGroupRole>
|
||||||
|
<Role type="application/vnd.vmware.admin.role+xml" name="vApp User" href="https://vcloudbeta.bluelock.com/api/admin/role/ff1e0c91-1288-3664-82b7-a6fa303af4d1"/>
|
||||||
|
<Password>password</Password>
|
||||||
|
<GroupReferences/>
|
||||||
|
</User>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<User xmlns="http://www.vmware.com/vcloud/v1.5" name="test" id="urn:vcloud:user:b37223f3-8792-477a-820f-334998f61cd6" type="application/vnd.vmware.admin.user+xml" href="https://vcloudbeta.bluelock.com/api/admin/user/b37223f3-8792-477a-820f-334998f61cd6" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://vcloudbeta.bluelock.com/api/v1.5/schema/master.xsd">
|
||||||
|
<Link rel="edit" type="application/vnd.vmware.admin.user+xml" href="https://vcloudbeta.bluelock.com/api/admin/user/b37223f3-8792-477a-820f-334998f61cd6"/>
|
||||||
|
<Link rel="remove" href="https://vcloudbeta.bluelock.com/api/admin/user/b37223f3-8792-477a-820f-334998f61cd6"/>
|
||||||
|
<FullName>testFullName</FullName>
|
||||||
|
<EmailAddress>test@test.com</EmailAddress>
|
||||||
|
<Telephone>555-1234</Telephone>
|
||||||
|
<IsEnabled>false</IsEnabled>
|
||||||
|
<IsLocked>false</IsLocked>
|
||||||
|
<IM>testIM</IM>
|
||||||
|
<NameInSource>test</NameInSource>
|
||||||
|
<IsAlertEnabled>false</IsAlertEnabled>
|
||||||
|
<AlertEmailPrefix>testPrefix</AlertEmailPrefix>
|
||||||
|
<AlertEmail>testAlert@test.com</AlertEmail>
|
||||||
|
<IsExternal>false</IsExternal>
|
||||||
|
<IsDefaultCached>false</IsDefaultCached>
|
||||||
|
<IsGroupRole>false</IsGroupRole>
|
||||||
|
<StoredVmQuota>0</StoredVmQuota>
|
||||||
|
<DeployedVmQuota>0</DeployedVmQuota>
|
||||||
|
<Role type="application/vnd.vmware.admin.role+xml" name="vApp User" href="https://vcloudbeta.bluelock.com/api/admin/role/ff1e0c91-1288-3664-82b7-a6fa303af4d1"/>
|
||||||
|
<GroupReferences/>
|
||||||
|
</User>
|
Loading…
Reference in New Issue