/*
* 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.serviceplanvisibilities;
import org.cloudfoundry.client.v2.Metadata;
import org.cloudfoundry.client.v2.jobs.JobEntity;
import org.cloudfoundry.client.v2.serviceplanvisibilities.CreateServicePlanVisibilityRequest;
import org.cloudfoundry.client.v2.serviceplanvisibilities.CreateServicePlanVisibilityResponse;
import org.cloudfoundry.client.v2.serviceplanvisibilities.DeleteServicePlanVisibilityRequest;
import org.cloudfoundry.client.v2.serviceplanvisibilities.DeleteServicePlanVisibilityResponse;
import org.cloudfoundry.client.v2.serviceplanvisibilities.GetServicePlanVisibilityRequest;
import org.cloudfoundry.client.v2.serviceplanvisibilities.GetServicePlanVisibilityResponse;
import org.cloudfoundry.client.v2.serviceplanvisibilities.ListServicePlanVisibilitiesRequest;
import org.cloudfoundry.client.v2.serviceplanvisibilities.ListServicePlanVisibilitiesResponse;
import org.cloudfoundry.client.v2.serviceplanvisibilities.ServicePlanVisibilities;
import org.cloudfoundry.client.v2.serviceplanvisibilities.ServicePlanVisibilityEntity;
import org.cloudfoundry.client.v2.serviceplanvisibilities.ServicePlanVisibilityResource;
import org.cloudfoundry.client.v2.serviceplanvisibilities.UpdateServicePlanVisibilityRequest;
import org.cloudfoundry.client.v2.serviceplanvisibilities.UpdateServicePlanVisibilityResponse;
import org.cloudfoundry.reactor.InteractionContext;
import org.cloudfoundry.reactor.TestRequest;
import org.cloudfoundry.reactor.TestResponse;
import org.cloudfoundry.reactor.client.AbstractClientApiTest;
import org.junit.Test;
import reactor.test.StepVerifier;
import java.time.Duration;
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.CREATED;
import static io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT;
import static io.netty.handler.codec.http.HttpResponseStatus.OK;
public final class ReactorServicePlanVisibilitiesTest extends AbstractClientApiTest {
private final ServicePlanVisibilities servicePlanVisibilities = new ReactorServicePlanVisibilities(CONNECTION_CONTEXT, this.root, TOKEN_PROVIDER);
@Test
public void create() {
mockRequest(InteractionContext.builder()
.request(TestRequest.builder()
.method(POST).path("/v2/service_plan_visibilities")
.payload("fixtures/client/v2/service_plan_visibilities/POST_request.json")
.build())
.response(TestResponse.builder()
.status(CREATED)
.payload("fixtures/client/v2/service_plan_visibilities/POST_response.json")
.build())
.build());
this.servicePlanVisibilities
.create(CreateServicePlanVisibilityRequest.builder()
.organizationId("09be17a1-0cc6-4edb-955c-cf2a2ae85470")
.servicePlanId("43f5496b-9117-404a-a637-eb38141b05af")
.build())
.as(StepVerifier::create)
.expectNext(CreateServicePlanVisibilityResponse.builder()
.metadata(Metadata.builder()
.createdAt("2015-07-27T22:43:28Z")
.id("28a22749-25f4-44bd-a371-c37e2ee53175")
.url("/v2/service_plan_visibilities/28a22749-25f4-44bd-a371-c37e2ee53175")
.build())
.entity(ServicePlanVisibilityEntity.builder()
.organizationId("09be17a1-0cc6-4edb-955c-cf2a2ae85470")
.organizationUrl("/v2/organizations/09be17a1-0cc6-4edb-955c-cf2a2ae85470")
.servicePlanId("43f5496b-9117-404a-a637-eb38141b05af")
.servicePlanUrl("/v2/service_plans/43f5496b-9117-404a-a637-eb38141b05af")
.build())
.build())
.expectComplete()
.verify(Duration.ofSeconds(5));
}
@Test
public void delete() {
mockRequest(InteractionContext.builder()
.request(TestRequest.builder()
.method(DELETE).path("/v2/service_plan_visibilities/test-service-plan-visibility-id")
.build())
.response(TestResponse.builder()
.status(NO_CONTENT)
.build())
.build());
this.servicePlanVisibilities
.delete(DeleteServicePlanVisibilityRequest.builder()
.servicePlanVisibilityId("test-service-plan-visibility-id")
.build())
.as(StepVerifier::create)
.expectComplete()
.verify(Duration.ofSeconds(5));
}
@Test
public void deleteAsync() {
mockRequest(InteractionContext.builder()
.request(TestRequest.builder()
.method(DELETE).path("/v2/service_plan_visibilities/test-service-plan-visibility-id?async=true")
.build())
.response(TestResponse.builder()
.status(ACCEPTED)
.payload("fixtures/client/v2/service_plan_visibilities/DELETE_{id}_async_response.json")
.build())
.build());
this.servicePlanVisibilities
.delete(DeleteServicePlanVisibilityRequest.builder()
.async(true)
.servicePlanVisibilityId("test-service-plan-visibility-id")
.build())
.as(StepVerifier::create)
.expectNext(DeleteServicePlanVisibilityResponse.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/service_plan_visibilities/test-service-plan-visibility-id")
.build())
.response(TestResponse.builder()
.status(OK)
.payload("fixtures/client/v2/service_plan_visibilities/GET_{id}_response.json")
.build())
.build());
this.servicePlanVisibilities
.get(GetServicePlanVisibilityRequest.builder()
.servicePlanVisibilityId("test-service-plan-visibility-id")
.build())
.as(StepVerifier::create)
.expectNext(GetServicePlanVisibilityResponse.builder()
.metadata(Metadata.builder()
.createdAt("2015-07-27T22:43:28Z")
.id("18365c25-898b-4365-911d-6f6a09154297")
.url("/v2/service_plan_visibilities/18365c25-898b-4365-911d-6f6a09154297")
.build())
.entity(ServicePlanVisibilityEntity.builder()
.organizationId("a1cc950b-ed5b-41eb-8eee-d9a8f85aa1ea")
.organizationUrl("/v2/organizations/a1cc950b-ed5b-41eb-8eee-d9a8f85aa1ea")
.servicePlanId("ea1ba716-e720-4aef-8a90-439924bb53d0")
.servicePlanUrl("/v2/service_plans/ea1ba716-e720-4aef-8a90-439924bb53d0")
.build())
.build())
.expectComplete()
.verify(Duration.ofSeconds(5));
}
@Test
public void list() {
mockRequest(InteractionContext.builder()
.request(TestRequest.builder()
.method(GET).path("/v2/service_plan_visibilities?q=organization_guid:test-organization-id&page=-1")
.build())
.response(TestResponse.builder()
.status(OK)
.payload("fixtures/client/v2/service_plan_visibilities/GET_response.json")
.build())
.build());
this.servicePlanVisibilities
.list(ListServicePlanVisibilitiesRequest.builder()
.organizationId("test-organization-id")
.page(-1)
.build())
.as(StepVerifier::create)
.expectNext(ListServicePlanVisibilitiesResponse.builder()
.totalPages(1)
.totalResults(1)
.resource(ServicePlanVisibilityResource.builder()
.metadata(Metadata.builder()
.id("3d5c0584-fbf0-4d75-b68e-226e77496f69")
.url("/v2/service_plan_visibilities/3d5c0584-fbf0-4d75-b68e-226e77496f69")
.createdAt("2015-07-27T22:43:28Z")
.build())
.entity(ServicePlanVisibilityEntity.builder()
.organizationId("1dbe25db-6a8c-43e7-a941-cc483bb45570")
.organizationUrl("/v2/organizations/1dbe25db-6a8c-43e7-a941-cc483bb45570")
.servicePlanId("69cab29d-826c-48bf-b435-b43013f9c11b")
.servicePlanUrl("/v2/service_plans/69cab29d-826c-48bf-b435-b43013f9c11b")
.build())
.build())
.build())
.expectComplete()
.verify(Duration.ofSeconds(5));
}
@Test
public void update() {
mockRequest(InteractionContext.builder()
.request(TestRequest.builder()
.method(PUT).path("/v2/service_plan_visibilities/test-service-plan-visibility-id")
.payload("fixtures/client/v2/service_plan_visibilities/PUT_{id}_request.json")
.build())
.response(TestResponse.builder()
.status(CREATED)
.payload("fixtures/client/v2/service_plan_visibilities/PUT_{id}_response.json")
.build())
.build());
this.servicePlanVisibilities
.update(UpdateServicePlanVisibilityRequest.builder()
.organizationId("e4d0b68b-9e73-4253-b03f-2bfda6cd814b")
.servicePlanId("7288464d-3866-436a-915c-2bada4725e7e")
.servicePlanVisibilityId("test-service-plan-visibility-id")
.build())
.as(StepVerifier::create)
.expectNext(UpdateServicePlanVisibilityResponse.builder()
.metadata(Metadata.builder()
.createdAt("2015-07-27T22:43:28Z")
.id("5f1514f9-66ee-4799-9de2-69f2ec3cb5f1")
.updatedAt("2015-07-27T22:43:28Z")
.url("/v2/service_plan_visibilities/5f1514f9-66ee-4799-9de2-69f2ec3cb5f1")
.build())
.entity(ServicePlanVisibilityEntity.builder()
.organizationId("e4d0b68b-9e73-4253-b03f-2bfda6cd814b")
.organizationUrl("/v2/organizations/e4d0b68b-9e73-4253-b03f-2bfda6cd814b")
.servicePlanId("7288464d-3866-436a-915c-2bada4725e7e")
.servicePlanUrl("/v2/service_plans/7288464d-3866-436a-915c-2bada4725e7e")
.build())
.build())
.expectComplete()
.verify(Duration.ofSeconds(5));
}
}