/* * Copyright 2013-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.cloudfoundry.reactor.client.v2.spaces; import org.cloudfoundry.client.v2.Metadata; import org.cloudfoundry.client.v2.applications.ApplicationEntity; import org.cloudfoundry.client.v2.applications.ApplicationResource; import org.cloudfoundry.client.v2.domains.Domain; import org.cloudfoundry.client.v2.domains.DomainEntity; import org.cloudfoundry.client.v2.domains.DomainResource; import org.cloudfoundry.client.v2.events.EventEntity; import org.cloudfoundry.client.v2.events.EventResource; import org.cloudfoundry.client.v2.jobs.JobEntity; import org.cloudfoundry.client.v2.routes.Route; import org.cloudfoundry.client.v2.routes.RouteEntity; import org.cloudfoundry.client.v2.routes.RouteResource; import org.cloudfoundry.client.v2.securitygroups.RuleEntity; import org.cloudfoundry.client.v2.securitygroups.SecurityGroupEntity; import org.cloudfoundry.client.v2.securitygroups.SecurityGroupResource; import org.cloudfoundry.client.v2.serviceinstances.LastOperation; import org.cloudfoundry.client.v2.serviceinstances.Plan; import org.cloudfoundry.client.v2.serviceinstances.Service; import org.cloudfoundry.client.v2.serviceinstances.UnionServiceInstanceEntity; import org.cloudfoundry.client.v2.serviceinstances.UnionServiceInstanceResource; import org.cloudfoundry.client.v2.services.ServiceEntity; import org.cloudfoundry.client.v2.services.ServiceResource; import org.cloudfoundry.client.v2.spaces.AssociateSpaceAuditorByUsernameRequest; import org.cloudfoundry.client.v2.spaces.AssociateSpaceAuditorByUsernameResponse; import org.cloudfoundry.client.v2.spaces.AssociateSpaceAuditorRequest; import org.cloudfoundry.client.v2.spaces.AssociateSpaceAuditorResponse; import org.cloudfoundry.client.v2.spaces.AssociateSpaceDeveloperByUsernameRequest; import org.cloudfoundry.client.v2.spaces.AssociateSpaceDeveloperByUsernameResponse; import org.cloudfoundry.client.v2.spaces.AssociateSpaceDeveloperRequest; import org.cloudfoundry.client.v2.spaces.AssociateSpaceDeveloperResponse; import org.cloudfoundry.client.v2.spaces.AssociateSpaceManagerByUsernameRequest; import org.cloudfoundry.client.v2.spaces.AssociateSpaceManagerByUsernameResponse; import org.cloudfoundry.client.v2.spaces.AssociateSpaceManagerRequest; import org.cloudfoundry.client.v2.spaces.AssociateSpaceManagerResponse; import org.cloudfoundry.client.v2.spaces.AssociateSpaceSecurityGroupRequest; import org.cloudfoundry.client.v2.spaces.AssociateSpaceSecurityGroupResponse; import org.cloudfoundry.client.v2.spaces.CreateSpaceRequest; import org.cloudfoundry.client.v2.spaces.CreateSpaceResponse; import org.cloudfoundry.client.v2.spaces.DeleteSpaceRequest; import org.cloudfoundry.client.v2.spaces.DeleteSpaceResponse; import org.cloudfoundry.client.v2.spaces.GetSpaceRequest; import org.cloudfoundry.client.v2.spaces.GetSpaceResponse; import org.cloudfoundry.client.v2.spaces.GetSpaceSummaryRequest; import org.cloudfoundry.client.v2.spaces.GetSpaceSummaryResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceApplicationsRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceApplicationsResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceAuditorsRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceAuditorsResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceDevelopersRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceDevelopersResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceDomainsRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceDomainsResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceEventsRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceEventsResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceManagersRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceManagersResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceRoutesRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceRoutesResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceSecurityGroupsRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceSecurityGroupsResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceServiceInstancesRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceServiceInstancesResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceServicesRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceServicesResponse; import org.cloudfoundry.client.v2.spaces.ListSpaceUserRolesRequest; import org.cloudfoundry.client.v2.spaces.ListSpaceUserRolesResponse; import org.cloudfoundry.client.v2.spaces.ListSpacesRequest; import org.cloudfoundry.client.v2.spaces.ListSpacesResponse; import org.cloudfoundry.client.v2.spaces.RemoveSpaceAuditorByUsernameRequest; import org.cloudfoundry.client.v2.spaces.RemoveSpaceAuditorByUsernameResponse; import org.cloudfoundry.client.v2.spaces.RemoveSpaceAuditorRequest; import org.cloudfoundry.client.v2.spaces.RemoveSpaceDeveloperByUsernameRequest; import org.cloudfoundry.client.v2.spaces.RemoveSpaceDeveloperByUsernameResponse; import org.cloudfoundry.client.v2.spaces.RemoveSpaceDeveloperRequest; import org.cloudfoundry.client.v2.spaces.RemoveSpaceManagerByUsernameRequest; import org.cloudfoundry.client.v2.spaces.RemoveSpaceManagerByUsernameResponse; import org.cloudfoundry.client.v2.spaces.RemoveSpaceManagerRequest; import org.cloudfoundry.client.v2.spaces.RemoveSpaceSecurityGroupRequest; import org.cloudfoundry.client.v2.spaces.SpaceApplicationSummary; import org.cloudfoundry.client.v2.spaces.SpaceEntity; import org.cloudfoundry.client.v2.spaces.SpaceResource; import org.cloudfoundry.client.v2.spaces.UpdateSpaceRequest; import org.cloudfoundry.client.v2.spaces.UpdateSpaceResponse; import org.cloudfoundry.client.v2.spaces.UserSpaceRoleEntity; import org.cloudfoundry.client.v2.spaces.UserSpaceRoleResource; import org.cloudfoundry.client.v2.users.UserEntity; import org.cloudfoundry.client.v2.users.UserResource; import org.cloudfoundry.reactor.InteractionContext; import org.cloudfoundry.reactor.TestRequest; import org.cloudfoundry.reactor.TestResponse; import org.cloudfoundry.reactor.client.AbstractClientApiTest; import org.cloudfoundry.util.FluentMap; import org.junit.Test; import reactor.test.StepVerifier; import java.time.Duration; import java.util.Collections; import java.util.Optional; import static io.netty.handler.codec.http.HttpMethod.DELETE; import static io.netty.handler.codec.http.HttpMethod.GET; import static io.netty.handler.codec.http.HttpMethod.POST; import static io.netty.handler.codec.http.HttpMethod.PUT; import static io.netty.handler.codec.http.HttpResponseStatus.ACCEPTED; import static io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT; import static io.netty.handler.codec.http.HttpResponseStatus.OK; import static org.cloudfoundry.client.v2.securitygroups.Protocol.UDP; import static org.cloudfoundry.client.v2.serviceinstances.ServiceInstance.builder; public final class ReactorSpacesTest extends AbstractClientApiTest { private final ReactorSpaces spaces = new ReactorSpaces(CONNECTION_CONTEXT, this.root, TOKEN_PROVIDER); @Test public void associateAuditor() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(PUT).path("/v2/spaces/test-space-id/auditors/test-auditor-id") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/PUT_{id}_auditors_{id}_response.json") .build()) .build()); this.spaces .associateAuditor(AssociateSpaceAuditorRequest.builder() .spaceId("test-space-id") .auditorId("test-auditor-id") .build()) .as(StepVerifier::create) .expectNext(AssociateSpaceAuditorResponse.builder() .metadata(Metadata.builder() .id("9639c996-9005-4b70-b852-d40f346d58dc") .url("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(SpaceEntity.builder() .name("name-59") .organizationId("bc168e1d-b399-4624-b7f6-fbe64eeb870f") .allowSsh(true) .organizationUrl("/v2/organizations/bc168e1d-b399-4624-b7f6-fbe64eeb870f") .developersUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/developers") .managersUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/managers") .auditorsUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/auditors") .applicationsUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/apps") .routesUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/routes") .domainsUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/domains") .serviceInstancesUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/service_instances") .applicationEventsUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/app_events") .eventsUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/events") .securityGroupsUrl("/v2/spaces/9639c996-9005-4b70-b852-d40f346d58dc/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void associateAuditorByUsername() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(PUT).path("/v2/spaces/test-space-id/auditors") .payload("fixtures/client/v2/spaces/PUT_{id}_auditors_request.json") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/PUT_{id}_auditors_response.json") .build()) .build()); this.spaces .associateAuditorByUsername(AssociateSpaceAuditorByUsernameRequest.builder() .spaceId("test-space-id") .username("user@example.com") .build()) .as(StepVerifier::create) .expectNext(AssociateSpaceAuditorByUsernameResponse.builder() .metadata(Metadata.builder() .id("873193ee-878c-436f-80bd-10d68927937d") .url("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d") .createdAt("2015-11-30T23:38:28Z") .build()) .entity(SpaceEntity.builder() .allowSsh(true) .applicationEventsUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/app_events") .applicationsUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/apps") .auditorsUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/auditors") .developersUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/developers") .domainsUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/domains") .eventsUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/events") .managersUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/managers") .name("name-101") .organizationId("5fddaf61-092d-4b33-9490-8350963db89e") .organizationUrl("/v2/organizations/5fddaf61-092d-4b33-9490-8350963db89e") .routesUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/routes") .securityGroupsUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/security_groups") .serviceInstancesUrl("/v2/spaces/873193ee-878c-436f-80bd-10d68927937d/service_instances") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void associateDeveloper() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(PUT).path("/v2/spaces/test-space-id/developers/test-developer-id") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/PUT_{id}_developers_{id}_response.json") .build()) .build()); this.spaces .associateDeveloper(AssociateSpaceDeveloperRequest.builder() .spaceId("test-space-id") .developerId("test-developer-id") .build()) .as(StepVerifier::create) .expectNext(AssociateSpaceDeveloperResponse.builder() .metadata(Metadata.builder() .id("6f8f8e0d-54f2-4736-a08e-1044fcf061d3") .url("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(SpaceEntity.builder() .name("name-68") .organizationId("5b556f7c-63f5-43e5-9522-c4fec533b09d") .allowSsh(true) .organizationUrl("/v2/organizations/5b556f7c-63f5-43e5-9522-c4fec533b09d") .developersUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/developers") .managersUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/managers") .auditorsUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/auditors") .applicationsUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/apps") .routesUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/routes") .domainsUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/domains") .serviceInstancesUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/service_instances") .applicationEventsUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/app_events") .eventsUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/events") .securityGroupsUrl("/v2/spaces/6f8f8e0d-54f2-4736-a08e-1044fcf061d3/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void associateManager() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(PUT).path("/v2/spaces/test-space-id/managers/test-manager-id") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/PUT_{id}_managers_{id}_response.json") .build()) .build()); this.spaces .associateManager(AssociateSpaceManagerRequest.builder() .spaceId("test-space-id") .managerId("test-manager-id") .build()) .as(StepVerifier::create) .expectNext(AssociateSpaceManagerResponse.builder() .metadata(Metadata.builder() .id("542943ff-a40b-4004-9559-434b0169508c") .url("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(SpaceEntity.builder() .name("name-85") .organizationId("0a68fcd5-dc1c-48d0-98dc-33008ce0d7ce") .allowSsh(true) .organizationUrl("/v2/organizations/0a68fcd5-dc1c-48d0-98dc-33008ce0d7ce") .developersUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/developers") .managersUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/managers") .auditorsUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/auditors") .applicationsUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/apps") .routesUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/routes") .domainsUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/domains") .serviceInstancesUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/service_instances") .applicationEventsUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/app_events") .eventsUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/events") .securityGroupsUrl("/v2/spaces/542943ff-a40b-4004-9559-434b0169508c/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void associateSecurityGroup() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(PUT).path("/v2/spaces/test-space-id/security_groups/test-security-group-id") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/PUT_{id}_security_group_{id}_response.json") .build()) .build()); this.spaces .associateSecurityGroup(AssociateSpaceSecurityGroupRequest.builder() .spaceId("test-space-id") .securityGroupId("test-security-group-id") .build()) .as(StepVerifier::create) .expectNext(AssociateSpaceSecurityGroupResponse.builder() .metadata(Metadata.builder() .id("c9424692-395b-403b-90e6-10049bbd9e23") .url("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23") .createdAt("2015-07-27T22:43:06Z") .build()) .entity(SpaceEntity.builder() .name("name-39") .organizationId("67096164-bdcf-4b53-92e1-a2991882a066") .allowSsh(true) .organizationUrl("/v2/organizations/67096164-bdcf-4b53-92e1-a2991882a066") .developersUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/developers") .managersUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/managers") .auditorsUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/auditors") .applicationsUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/apps") .routesUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/routes") .domainsUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/domains") .serviceInstancesUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/service_instances") .applicationEventsUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/app_events") .eventsUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/events") .securityGroupsUrl("/v2/spaces/c9424692-395b-403b-90e6-10049bbd9e23/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void associateSpaceDeveloperByUsername() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(PUT).path("/v2/spaces/test-space-id/developers") .payload("fixtures/client/v2/spaces/PUT_{id}_developers_request.json") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/PUT_{id}_developers_response.json") .build()) .build()); this.spaces .associateDeveloperByUsername(AssociateSpaceDeveloperByUsernameRequest.builder() .spaceId("test-space-id") .username("user@example.com") .build()) .as(StepVerifier::create) .expectNext(AssociateSpaceDeveloperByUsernameResponse.builder() .metadata(Metadata.builder() .id("b6d11f17-1cea-4c00-a951-fef3223b8c84") .url("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84") .createdAt("2015-11-30T23:38:27Z") .build()) .entity(SpaceEntity.builder() .name("name-58") .organizationId("b13bbebe-427e-424d-8820-2937f7e218d5") .allowSsh(true) .organizationUrl("/v2/organizations/b13bbebe-427e-424d-8820-2937f7e218d5") .developersUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/developers") .managersUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/managers") .auditorsUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/auditors") .applicationsUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/apps") .routesUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/routes") .domainsUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/domains") .serviceInstancesUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/service_instances") .applicationEventsUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/app_events") .eventsUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/events") .securityGroupsUrl("/v2/spaces/b6d11f17-1cea-4c00-a951-fef3223b8c84/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void associateSpaceManagerByUsername() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(PUT).path("/v2/spaces/test-space-id/managers") .payload("fixtures/client/v2/spaces/PUT_{id}_managers_request.json") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/PUT_{id}_managers_response.json") .build()) .build()); this.spaces .associateManagerByUsername(AssociateSpaceManagerByUsernameRequest.builder() .spaceId("test-space-id") .username("user@example.com") .build()) .as(StepVerifier::create) .expectNext(AssociateSpaceManagerByUsernameResponse.builder() .metadata(Metadata.builder() .id("4351f97b-3485-4738-821b-5bf77bed44eb") .url("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb") .createdAt("2015-11-30T23:38:28Z") .build()) .entity(SpaceEntity.builder() .name("name-98") .organizationId("a488910d-2d69-46a2-bf6e-319248e03705") .allowSsh(true) .organizationUrl("/v2/organizations/a488910d-2d69-46a2-bf6e-319248e03705") .developersUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/developers") .managersUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/managers") .auditorsUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/auditors") .applicationsUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/apps") .routesUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/routes") .domainsUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/domains") .serviceInstancesUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/service_instances") .applicationEventsUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/app_events") .eventsUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/events") .securityGroupsUrl("/v2/spaces/4351f97b-3485-4738-821b-5bf77bed44eb/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void create() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(POST).path("/v2/spaces") .payload("fixtures/client/v2/spaces/POST_request.json") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/POST_response.json") .build()) .build()); this.spaces .create(CreateSpaceRequest.builder() .name("development") .organizationId("c523070c-3006-4715-86dd-414afaecd949") .build()) .as(StepVerifier::create) .expectNext(CreateSpaceResponse.builder() .metadata(Metadata.builder() .id("d29dc30c-793c-49a6-97fe-9aff75dcbd12") .url("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12") .createdAt("2015-07-27T22:43:08Z") .build()) .entity(SpaceEntity.builder() .name("development") .organizationId("c523070c-3006-4715-86dd-414afaecd949") .allowSsh(true) .organizationUrl("/v2/organizations/c523070c-3006-4715-86dd-414afaecd949") .developersUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/developers") .managersUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/managers") .auditorsUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/auditors") .applicationsUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/apps") .routesUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/routes") .domainsUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/domains") .serviceInstancesUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/service_instances") .applicationEventsUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/app_events") .eventsUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/events") .securityGroupsUrl("/v2/spaces/d29dc30c-793c-49a6-97fe-9aff75dcbd12/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void delete() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(DELETE).path("/v2/spaces/test-space-id") .build()) .response(TestResponse.builder() .status(NO_CONTENT) .build()) .build()); this.spaces .delete(DeleteSpaceRequest.builder() .spaceId("test-space-id") .build()) .as(StepVerifier::create) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void deleteAsync() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(DELETE).path("/v2/spaces/test-space-id?async=true") .build()) .response(TestResponse.builder() .status(ACCEPTED) .payload("fixtures/client/v2/spaces/DELETE_{id}_async_response.json") .build()) .build()); this.spaces .delete(DeleteSpaceRequest.builder() .async(true) .spaceId("test-space-id") .build()) .as(StepVerifier::create) .expectNext(DeleteSpaceResponse.builder() .metadata(Metadata.builder() .id("2d9707ba-6f0b-4aef-a3de-fe9bdcf0c9d1") .createdAt("2016-02-02T17:16:31Z") .url("/v2/jobs/2d9707ba-6f0b-4aef-a3de-fe9bdcf0c9d1") .build()) .entity(JobEntity.builder() .id("2d9707ba-6f0b-4aef-a3de-fe9bdcf0c9d1") .status("queued") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void get() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_response.json") .build()) .build()); this.spaces .get(GetSpaceRequest.builder() .spaceId("test-space-id") .build()) .as(StepVerifier::create) .expectNext(GetSpaceResponse.builder() .metadata(Metadata.builder() .id("0f102457-c1fc-42e5-9c81-c7be2bc65dcd") .url("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd") .createdAt("2015-07-27T22:43:08Z") .build()) .entity(SpaceEntity.builder() .name("name-108") .organizationId("525a31fb-bc2b-4f7f-865e-1c93b42a6762") .allowSsh(true) .organizationUrl("/v2/organizations/525a31fb-bc2b-4f7f-865e-1c93b42a6762") .developersUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/developers") .managersUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/managers") .auditorsUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/auditors") .applicationsUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/apps") .routesUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/routes") .domainsUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/domains") .serviceInstancesUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/service_instances") .applicationEventsUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/app_events") .eventsUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/events") .securityGroupsUrl("/v2/spaces/0f102457-c1fc-42e5-9c81-c7be2bc65dcd/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @SuppressWarnings("deprecation") @Test public void getSummary() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/summary") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_summary_response.json") .build()) .build()); this.spaces .getSummary(GetSpaceSummaryRequest.builder() .spaceId("test-space-id") .build()) .as(StepVerifier::create) .expectNext(GetSpaceSummaryResponse.builder() .id("c6473a38-92f4-4595-9462-01af4c4b1893") .name("name-159") .application(SpaceApplicationSummary.builder() .id("e378968e-89d4-4e84-bce5-ee997daea898") .url("host-1.domain-5.example.com") .route(Route.builder() .id("812c7de6-b14f-4193-8c95-74449c5ae0e4") .host("host-1") .path("") .domain(Domain.builder() .id("0a7c349f-84c4-4fde-867d-a73814c66168") .name("domain-5.example.com") .build()) .build()) .serviceCount(1) .environmentJsons(Collections.emptyMap()) .serviceName("name-162") .runningInstances(0) .name("name-165") .production(false) .spaceId("c6473a38-92f4-4595-9462-01af4c4b1893") .stackId("eefe21a1-6878-40d1-8485-80a88cfdbbe4") .memory(1024) .instances(1) .diskQuota(1024) .state("STOPPED") .version("2bea31d1-b0b7-467d-9794-62dd7f0dd200") .console(false) .packageState("PENDING") .healthCheckType("port") .diego(false) .ports(Collections.emptyList()) .packageUpdatedAt("2016-04-22T19:33:13Z") .detectedStartCommand("") .enableSsh(true) .dockerCredentialsJson("redacted_message", "[PRIVATE DATA HIDDEN]") .build()) .service(builder() .id("a049e5e8-8597-469e-b1c6-ddb8eb2c0af0") .name("name-162") .boundApplicationCount(1) .lastOperation(LastOperation.builder() .type("create") .state("succeeded") .description("description goes here") .updatedAt("2016-04-22T19:33:13Z") .createdAt("2016-04-22T19:33:13Z") .build()) .servicePlan(Plan.builder() .id("b9cb2cd3-2761-4e9b-9215-d64840ee3bf5") .name("name-163") .service(Service.builder() .id("00f143db-8b79-4e4a-bf03-021cf93131f4") .label("label-16") .build()) .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void list() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces?q=name:test-name&page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_response.json") .build()) .build()); this.spaces .list(ListSpacesRequest.builder() .name("test-name") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpacesResponse.builder() .totalResults(1) .totalPages(1) .resource(SpaceResource.builder() .metadata(Metadata.builder() .id("b4293b09-8316-472c-a29a-6468a3adff59") .url("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59") .createdAt("2015-07-27T22:43:08Z") .build()) .entity(SpaceEntity.builder() .name("name-111") .organizationId("3ce736dd-3b8c-4f64-acab-ed76488b79a3") .allowSsh(true) .organizationUrl("/v2/organizations/3ce736dd-3b8c-4f64-acab-ed76488b79a3") .developersUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/developers") .managersUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/managers") .auditorsUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/auditors") .applicationsUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/apps") .routesUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/routes") .domainsUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/domains") .serviceInstancesUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/service_instances") .applicationEventsUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/app_events") .eventsUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/events") .securityGroupsUrl("/v2/spaces/b4293b09-8316-472c-a29a-6468a3adff59/security_groups") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @SuppressWarnings("deprecation") @Test public void listApplications() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/apps?q=name:test-name&page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_apps_response.json") .build()) .build()); this.spaces .listApplications(ListSpaceApplicationsRequest.builder() .spaceId("test-space-id") .name("test-name") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceApplicationsResponse.builder() .totalResults(1) .totalPages(1) .resource(ApplicationResource.builder() .metadata(Metadata.builder() .id("4ee31730-3c0e-4ec6-8329-26e727ab8ccd") .url("/v2/apps/4ee31730-3c0e-4ec6-8329-26e727ab8ccd") .createdAt("2015-07-27T22:43:08Z") .updatedAt("2015-07-27T22:43:08Z") .build()) .entity(ApplicationEntity.builder() .name("name-103") .production(false) .spaceId("ca816a1b-ed3e-4ea8-bda2-2031d2e5b89f") .stackId("e458a99f-53a4-4da4-b78a-5f2eb212cc47") .memory(1024) .instances(1) .diskQuota(1024) .state("STOPPED") .version("cc21d137-45d6-4687-ab71-8288ac0e5724") .console(false) .packageState("PENDING") .healthCheckType("port") .diego(false) .packageUpdatedAt("2015-07-27T22:43:08Z") .detectedStartCommand("") .enableSsh(true) .dockerCredentialsJson("redacted_message", "[PRIVATE DATA HIDDEN]") .spaceUrl("/v2/spaces/ca816a1b-ed3e-4ea8-bda2-2031d2e5b89f") .stackUrl("/v2/stacks/e458a99f-53a4-4da4-b78a-5f2eb212cc47") .eventsUrl("/v2/apps/4ee31730-3c0e-4ec6-8329-26e727ab8ccd/events") .serviceBindingsUrl("/v2/apps/4ee31730-3c0e-4ec6-8329-26e727ab8ccd/service_bindings") .routesUrl("/v2/apps/4ee31730-3c0e-4ec6-8329-26e727ab8ccd/routes") .routeMappingsUrl("/v2/apps/4ee31730-3c0e-4ec6-8329-26e727ab8ccd/route_mappings") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listAuditors() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/auditors?page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_auditors_response.json") .build()) .build()); this.spaces .listAuditors(ListSpaceAuditorsRequest.builder() .spaceId("test-space-id") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceAuditorsResponse.builder() .totalResults(1) .totalPages(1) .resource(UserResource.builder() .metadata(Metadata.builder() .id("uaa-id-15") .url("/v2/users/uaa-id-15") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(UserEntity.builder() .admin(false) .active(false) .defaultSpaceId(null) .username("auditor@example.com") .spacesUrl("/v2/users/uaa-id-15/spaces") .organizationsUrl("/v2/users/uaa-id-15/organizations") .managedOrganizationsUrl("/v2/users/uaa-id-15/managed_organizations") .billingManagedOrganizationsUrl("/v2/users/uaa-id-15/billing_managed_organizations") .auditedOrganizationsUrl("/v2/users/uaa-id-15/audited_organizations") .managedSpacesUrl("/v2/users/uaa-id-15/managed_spaces") .auditedSpacesUrl("/v2/users/uaa-id-15/audited_spaces") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listDevelopers() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/developers?page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_developers_response.json") .build()) .build()); this.spaces .listDevelopers(ListSpaceDevelopersRequest.builder() .spaceId("test-space-id") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceDevelopersResponse.builder() .totalResults(1) .totalPages(1) .resource(UserResource.builder() .metadata(Metadata.builder() .id("uaa-id-24") .url("/v2/users/uaa-id-24") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(UserEntity.builder() .admin(false) .active(false) .defaultSpaceId(null) .username("developer@example.com") .spacesUrl("/v2/users/uaa-id-24/spaces") .organizationsUrl("/v2/users/uaa-id-24/organizations") .managedOrganizationsUrl("/v2/users/uaa-id-24/managed_organizations") .billingManagedOrganizationsUrl("/v2/users/uaa-id-24/billing_managed_organizations") .auditedOrganizationsUrl("/v2/users/uaa-id-24/audited_organizations") .managedSpacesUrl("/v2/users/uaa-id-24/managed_spaces") .auditedSpacesUrl("/v2/users/uaa-id-24/audited_spaces") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listDomains() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/domains?page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_domains_response.json") .build()) .build()); this.spaces .listDomains(ListSpaceDomainsRequest.builder() .spaceId("test-space-id") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceDomainsResponse.builder() .totalResults(2) .totalPages(1) .resource(DomainResource.builder() .metadata(Metadata.builder() .id("08ac844a-e880-48ef-a90c-f95131582fcc") .url("/v2/domains/08ac844a-e880-48ef-a90c-f95131582fcc") .createdAt("2015-07-27T22:43:05Z") .build()) .entity(DomainEntity.builder() .name("customer-app-domain1.com") .build()) .build()) .resource(DomainResource.builder() .metadata(Metadata.builder() .id("973dcea1-5011-4bd0-aa9e-fa232bfaada7") .url("/v2/domains/973dcea1-5011-4bd0-aa9e-fa232bfaada7") .createdAt("2015-07-27T22:43:05Z") .build()) .entity(DomainEntity.builder() .name("customer-app-domain2.com") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listEvents() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/events?page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_events_response.json") .build()) .build()); this.spaces .listEvents(ListSpaceEventsRequest.builder() .spaceId("test-space-id") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceEventsResponse.builder() .totalResults(1) .totalPages(1) .resource(EventResource.builder() .metadata(Metadata.builder() .id("cbb42f10-2737-4522-95dc-3ada35056fa8") .url("/v2/events/cbb42f10-2737-4522-95dc-3ada35056fa8") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(EventEntity.builder() .type("audit.space.update") .actor("uaa-id-10") .actorType("user") .actorName("user@example.com") .actee("33d44b03-6203-47a7-b71c-9bf6fcaeb54a") .acteeType("space") .acteeName("name-56") .timestamp("2015-07-27T22:43:07Z") .metadata("request", Optional.of(FluentMap.builder() .entry("name", "new_name") .build())) .spaceId("33d44b03-6203-47a7-b71c-9bf6fcaeb54a") .organizationId("ab7dff90-0bc7-4ce0-be5b-b8ecc676bc4a") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listManagers() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/managers?page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_managers_response.json") .build()) .build()); this.spaces .listManagers(ListSpaceManagersRequest.builder() .spaceId("test-space-id") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceManagersResponse.builder() .totalResults(1) .totalPages(1) .resource(UserResource.builder() .metadata(Metadata.builder() .id("uaa-id-35") .url("/v2/users/uaa-id-35") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(UserEntity.builder() .admin(false) .active(false) .defaultSpaceId(null) .username("manager@example.com") .spacesUrl("/v2/users/uaa-id-35/spaces") .organizationsUrl("/v2/users/uaa-id-35/organizations") .managedOrganizationsUrl("/v2/users/uaa-id-35/managed_organizations") .billingManagedOrganizationsUrl("/v2/users/uaa-id-35/billing_managed_organizations") .auditedOrganizationsUrl("/v2/users/uaa-id-35/audited_organizations") .managedSpacesUrl("/v2/users/uaa-id-35/managed_spaces") .auditedSpacesUrl("/v2/users/uaa-id-35/audited_spaces") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listRoutes() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/routes?page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_routes_response.json") .build()) .build()); this.spaces .listRoutes(ListSpaceRoutesRequest.builder() .spaceId("test-space-id") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceRoutesResponse.builder() .totalResults(1) .totalPages(1) .resource(RouteResource.builder() .metadata(Metadata.builder() .id("f975dbb5-f6d2-4cac-8014-49994ce01853") .url("/v2/routes/f975dbb5-f6d2-4cac-8014-49994ce01853") .createdAt("2016-03-17T21:41:14Z") .build()) .entity(RouteEntity.builder() .host("host-12") .path("") .domainId("b3ed68d6-c35f-4b17-bacb-ebc90da7fce1") .spaceId("e3e2198a-e098-4473-b430-39a1d53a1d5b") .port(0) .domainUrl("/v2/domains/b3ed68d6-c35f-4b17-bacb-ebc90da7fce1") .spaceUrl("/v2/spaces/e3e2198a-e098-4473-b430-39a1d53a1d5b") .applicationsUrl("/v2/routes/f975dbb5-f6d2-4cac-8014-49994ce01853/apps") .routeMappingsUrl("/v2/routes/f975dbb5-f6d2-4cac-8014-49994ce01853/route_mappings") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listSecurityGroups() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/security_groups?page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_security_groups_response.json") .build()) .build()); this.spaces .listSecurityGroups(ListSpaceSecurityGroupsRequest.builder() .spaceId("test-space-id") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceSecurityGroupsResponse.builder() .totalResults(1) .totalPages(1) .resource(SecurityGroupResource.builder() .metadata(Metadata.builder() .id("a3728437-fe41-42c1-875c-b59cffc7498c") .url("/v2/security_groups/a3728437-fe41-42c1-875c-b59cffc7498c") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(SecurityGroupEntity.builder() .name("name-47") .rule(RuleEntity.builder() .destination("198.41.191.47/1") .ports("8080") .protocol(UDP) .build()) .runningDefault(false) .spacesUrl("/v2/security_groups/a3728437-fe41-42c1-875c-b59cffc7498c/spaces") .stagingDefault(false) .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listServiceInstances() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/service_instances?page=-1&return_user_provided_service_instances=true") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_service_instances_response.json") .build()) .build()); this.spaces .listServiceInstances(ListSpaceServiceInstancesRequest.builder() .spaceId("test-space-id") .returnUserProvidedServiceInstances(true) .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceServiceInstancesResponse.builder() .totalResults(1) .totalPages(1) .resource(UnionServiceInstanceResource.builder() .metadata(Metadata.builder() .id("7046d37c-8a50-49d5-ba53-abb103a92142") .url("/v2/service_instances/7046d37c-8a50-49d5-ba53-abb103a92142") .createdAt("2015-07-27T22:43:08Z") .build()) .entity(UnionServiceInstanceEntity.builder() .name("name-97") .credential("creds-key-52", "creds-val-52") .servicePlanId("77157c85-203a-4fac-b9a3-003988ff879a") .spaceId("aead50c9-0d45-410c-befd-431c8b7b3e30") .type("managed_service_instance") .tags(Collections.emptyList()) .spaceUrl("/v2/spaces/aead50c9-0d45-410c-befd-431c8b7b3e30") .servicePlanUrl("/v2/service_plans/77157c85-203a-4fac-b9a3-003988ff879a") .serviceBindingsUrl ("/v2/service_instances/7046d37c-8a50-49d5-ba53-abb103a92142/service_bindings") .serviceKeysUrl ("/v2/service_instances/7046d37c-8a50-49d5-ba53-abb103a92142/service_keys") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listServices() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/services?page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_services_response.json") .build()) .build()); this.spaces .listServices(ListSpaceServicesRequest.builder() .spaceId("test-space-id") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceServicesResponse.builder() .totalResults(1) .totalPages(1) .resource(ServiceResource.builder() .metadata(Metadata.builder() .id("fcc4261f-da9a-40ba-9194-6919e0ab87f8") .url("/v2/services/fcc4261f-da9a-40ba-9194-6919e0ab87f8") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(ServiceEntity.builder() .label("label-5") .description("desc-14") .active(true) .bindable(true) .requires(Collections.emptyList()) .tags(Collections.emptyList()) .uniqueId("666902ad-81dc-41e9-a351-58e1055e3ab2") .serviceBrokerId("15f1c3a0-910c-4b92-9386-377acada14cb") .planUpdateable(false) .servicePlansUrl("/v2/services/fcc4261f-da9a-40ba-9194-6919e0ab87f8/service_plans") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void listUserRoles() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(GET).path("/v2/spaces/test-space-id/user_roles?page=-1") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/GET_{id}_user_roles_response.json") .build()) .build()); this.spaces .listUserRoles(ListSpaceUserRolesRequest.builder() .spaceId("test-space-id") .page(-1) .build()) .as(StepVerifier::create) .expectNext(ListSpaceUserRolesResponse.builder() .totalResults(1) .totalPages(1) .resource(UserSpaceRoleResource.builder() .metadata(Metadata.builder() .id("uaa-id-8") .url("/v2/users/uaa-id-8") .createdAt("2015-07-27T22:43:07Z") .build()) .entity(UserSpaceRoleEntity.builder() .admin(false) .active(false) .defaultSpaceId(null) .username("everything@example.com") .spaceRole("space_developer") .spaceRole("space_manager") .spaceRole("space_auditor") .spacesUrl("/v2/users/uaa-id-8/spaces") .organizationsUrl("/v2/users/uaa-id-8/organizations") .managedOrganizationsUrl("/v2/users/uaa-id-8/managed_organizations") .billingManagedOrganizationsUrl("/v2/users/uaa-id-8/billing_managed_organizations") .auditedOrganizationsUrl("/v2/users/uaa-id-8/audited_organizations") .managedSpacesUrl("/v2/users/uaa-id-8/managed_spaces") .auditedSpacesUrl("/v2/users/uaa-id-8/audited_spaces") .build()) .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void removeAuditor() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(DELETE).path("/v2/spaces/test-space-id/auditors/test-auditor-id") .build()) .response(TestResponse.builder() .status(NO_CONTENT) .build()) .build()); this.spaces .removeAuditor(RemoveSpaceAuditorRequest.builder() .auditorId("test-auditor-id") .spaceId("test-space-id") .build()) .as(StepVerifier::create) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void removeAuditorByUsername() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(DELETE).path("/v2/spaces/test-space-id/auditors") .payload("fixtures/client/v2/spaces/DELETE_{id}_auditors_request.json") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/DELETE_{id}_auditors_response.json") .build()) .build()); this.spaces .removeAuditorByUsername(RemoveSpaceAuditorByUsernameRequest.builder() .spaceId("test-space-id") .username("auditor@example.com") .build()) .as(StepVerifier::create) .expectNext(RemoveSpaceAuditorByUsernameResponse.builder() .metadata(Metadata.builder() .id("6ee704bb-fc88-40f6-9ab9-02fe8df35730") .url("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730") .createdAt("2016-04-22T19:33:25Z") .build()) .entity(SpaceEntity.builder() .name("name-979") .organizationId("c6aa1f1e-e5b4-4eff-8ae5-3a430866f5ea") .allowSsh(true) .organizationUrl("/v2/organizations/c6aa1f1e-e5b4-4eff-8ae5-3a430866f5ea") .developersUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/developers") .managersUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/managers") .auditorsUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/auditors") .applicationsUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/apps") .routesUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/routes") .domainsUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/domains") .serviceInstancesUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/service_instances") .applicationEventsUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/app_events") .eventsUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/events") .securityGroupsUrl("/v2/spaces/6ee704bb-fc88-40f6-9ab9-02fe8df35730/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void removeDeveloper() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(DELETE).path("/v2/spaces/test-space-id/developers/test-developer-id") .build()) .response(TestResponse.builder() .status(NO_CONTENT) .build()) .build()); this.spaces .removeDeveloper(RemoveSpaceDeveloperRequest.builder() .developerId("test-developer-id") .spaceId("test-space-id") .build()) .as(StepVerifier::create) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void removeDeveloperByUsername() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(DELETE).path("/v2/spaces/test-space-id/developers") .payload("fixtures/client/v2/spaces/DELETE_{id}_developers_request.json") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/DELETE_{id}_developers_response.json") .build()) .build()); this.spaces .removeDeveloperByUsername(RemoveSpaceDeveloperByUsernameRequest.builder() .spaceId("test-space-id") .username("developer@example.com") .build()) .as(StepVerifier::create) .expectNext(RemoveSpaceDeveloperByUsernameResponse.builder() .metadata(Metadata.builder() .id("998375df-21ec-4d73-a0fd-83c11b7c7c1d") .url("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d") .createdAt("2016-04-22T19:33:26Z") .build()) .entity(SpaceEntity.builder() .name("name-1016") .organizationId("d2ba20ee-07f8-4bab-91c7-41a5e103ca57") .allowSsh(true) .organizationUrl("/v2/organizations/d2ba20ee-07f8-4bab-91c7-41a5e103ca57") .developersUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/developers") .managersUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/managers") .auditorsUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/auditors") .applicationsUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/apps") .routesUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/routes") .domainsUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/domains") .serviceInstancesUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/service_instances") .applicationEventsUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/app_events") .eventsUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/events") .securityGroupsUrl("/v2/spaces/998375df-21ec-4d73-a0fd-83c11b7c7c1d/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void removeManager() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(DELETE).path("/v2/spaces/test-space-id/managers/test-manager-id") .build()) .response(TestResponse.builder() .status(NO_CONTENT) .build()) .build()); this.spaces .removeManager(RemoveSpaceManagerRequest.builder() .spaceId("test-space-id") .managerId("test-manager-id") .build()) .as(StepVerifier::create) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void removeManagerByUsername() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(DELETE).path("/v2/spaces/test-space-id/managers") .payload("fixtures/client/v2/spaces/DELETE_{id}_managers_request.json") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/DELETE_{id}_managers_response.json") .build()) .build()); this.spaces .removeManagerByUsername(RemoveSpaceManagerByUsernameRequest.builder() .spaceId("test-space-id") .username("manager@example.com") .build()) .as(StepVerifier::create) .expectNext(RemoveSpaceManagerByUsernameResponse.builder() .metadata(Metadata.builder() .id("9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2") .url("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2") .createdAt("2016-04-22T19:33:27Z") .build()) .entity(SpaceEntity.builder() .name("name-1041") .organizationId("2e1dbf6f-426e-4ad7-b48e-347bbd2bdaa6") .allowSsh(true) .organizationUrl("/v2/organizations/2e1dbf6f-426e-4ad7-b48e-347bbd2bdaa6") .developersUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/developers") .managersUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/managers") .auditorsUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/auditors") .applicationsUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/apps") .routesUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/routes") .domainsUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/domains") .serviceInstancesUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/service_instances") .applicationEventsUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/app_events") .eventsUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/events") .securityGroupsUrl("/v2/spaces/9f29c6d5-10cf-4d2c-a934-b0f2ea054bd2/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void removeSecurityGroup() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(DELETE).path("/v2/spaces/test-space-id/security_groups/test-security-group-id") .build()) .response(TestResponse.builder() .status(NO_CONTENT) .build()) .build()); this.spaces .removeSecurityGroup(RemoveSpaceSecurityGroupRequest.builder() .spaceId("test-space-id") .securityGroupId("test-security-group-id") .build()) .as(StepVerifier::create) .expectComplete() .verify(Duration.ofSeconds(5)); } @Test public void update() { mockRequest(InteractionContext.builder() .request(TestRequest.builder() .method(PUT).path("/v2/spaces/test-space-id") .payload("fixtures/client/v2/spaces/PUT_{id}_request.json") .build()) .response(TestResponse.builder() .status(OK) .payload("fixtures/client/v2/spaces/PUT_{id}_response.json") .build()) .build()); this.spaces .update(UpdateSpaceRequest.builder() .spaceId("test-space-id") .name("New Space Name") .auditorIds(Collections.emptyList()) .build()) .as(StepVerifier::create) .expectNext(UpdateSpaceResponse.builder() .metadata(Metadata.builder() .id("e7b9e252-88cb-415c-ace4-2864922e550c") .url("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c") .createdAt("2015-07-27T22:43:08Z") .updatedAt("2015-07-27T22:43:08Z") .build()) .entity(SpaceEntity.builder() .name("New Space Name") .organizationId("71c72756-e8b8-4c4a-b832-b3f9e3052c70") .allowSsh(true) .organizationUrl("/v2/organizations/71c72756-e8b8-4c4a-b832-b3f9e3052c70") .developersUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/developers") .managersUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/managers") .auditorsUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/auditors") .applicationsUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/apps") .routesUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/routes") .domainsUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/domains") .serviceInstancesUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/service_instances") .applicationEventsUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/app_events") .eventsUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/events") .securityGroupsUrl("/v2/spaces/e7b9e252-88cb-415c-ace4-2864922e550c/security_groups") .build()) .build()) .expectComplete() .verify(Duration.ofSeconds(5)); } }