package cf.client.model; import com.fasterxml.jackson.databind.ObjectMapper; import org.testng.annotations.Test; import java.util.UUID; import static org.testng.Assert.*; /** * This test takes actual JSON from CF and ensure that it can be deserialized into the appropriate model object. * * @author Mike Heath */ public class DeserializeTest { private final ObjectMapper mapper = new ObjectMapper(); @Test public void info() throws Exception { final String infoString = "{\"name\":\"vcap\",\"build\":\"2222\",\"support\":\"http://support.cloudfoundry.com\",\"version\":2,\"description\":\"Cloud Foundry sponsored by Pivotal\",\"authorization_endpoint\":\"https://uaa.app2-dev.lds.org\",\"token_endpoint\":\"https://uaa.app2-dev.lds.org\",\"allow_debug\":true, \"logging_endpoint\": \"wss://loggregator.cf-dev.lds.org:443\", \"doppler_logging_endpoint\": \"wss://doppler.cf-dev.lds.org:443\"}"; final Info info = mapper.readValue(infoString, Info.class); assertEquals(info.getAuthorizationEndpoint().toString(), "https://uaa.app2-dev.lds.org"); assertEquals(info.getName(), "vcap"); assertEquals(info.getTokenEndpoint().toString(), "https://uaa.app2-dev.lds.org"); assertEquals(info.getVersion(), Integer.valueOf(2)); } @Test public void service() throws Exception { final String serviceString = "{\n" + " \"label\": \"custom-service\",\n" + " \"provider\": \"ICS\",\n" + " \"url\": \"http://service-gateway.app2-dev.lds.org\",\n" + " \"description\": \"A generic service for connecting to existing services in ICS.\",\n" + " \"version\": \"0.1\",\n" + " \"info_url\": \"http://service-gateway.app2-dev.lds.org/info\",\n" + " \"active\": true,\n" + " \"unique_id\": \"ICS_custom-service\",\n" + " \"extra\": null,\n" + " \"service_plans_url\": \"/v2/services/93d6d0d6-e655-482a-8f2a-68c40bdd42eb/service_plans\"\n" + "}"; final Service service = mapper.readValue(serviceString, Service.class); assertEquals(service.getDescription(), "A generic service for connecting to existing services in ICS."); assertEquals(service.getInfoUrl().toString(), "http://service-gateway.app2-dev.lds.org/info"); assertEquals(service.getLabel(), "custom-service"); assertEquals(service.getProvider(), "ICS"); assertEquals(service.getUniqueId(), "ICS_custom-service"); assertEquals(service.getVersion(), "0.1"); assertEquals(service.getUrl().toString(), "http://service-gateway.app2-dev.lds.org"); assertTrue(service.isActive()); } @Test public void serviceAuthToken() throws Exception { final String serviceAuthTokenString = "{\n" + " \"label\": \"custom-service\",\n" + " \"provider\": \"ICS\",\n" + " \"token\": \"secret\"\n" + "}"; final ServiceAuthToken serviceAuthToken = mapper.readValue(serviceAuthTokenString, ServiceAuthToken.class); assertEquals(serviceAuthToken.getLabel(), "custom-service"); assertEquals(serviceAuthToken.getProvider(), "ICS"); assertEquals(serviceAuthToken.getToken(), "secret"); } @Test public void serviceBinding() throws Exception { final String serviceBindingString = "{\n" + " \"app_guid\": \"43bfa9c1-ccc8-4929-ab12-a9a6cdcb201b\",\n" + " \"service_instance_guid\": \"3d30cbca-63d4-4377-aa94-f8859be59963\",\n" + " \"credentials\": {\n" + " \"custom\": \"field\"\n" + " },\n" + " \"binding_options\": null,\n" + " \"gateway_data\": {\n" + " \"service_id\": \"8505c7e0-b6d8-4261-8ce2-060cbca23fb9\",\n" + " \"binding_id\": \"9471e8f1-095a-4f3d-b419-9b35311dce3f\"\n" + " },\n" + " \"gateway_name\": \"9471e8f1-095a-4f3d-b419-9b35311dce3f\",\n" + " \"app_url\": \"/v2/apps/43bfa9c1-ccc8-4929-ab12-a9a6cdcb201b\",\n" + " \"service_instance_url\": \"/v2/service_instances/3d30cbca-63d4-4377-aa94-f8859be59963\"\n" + "}"; final ServiceBinding serviceBinding = mapper.readValue(serviceBindingString, ServiceBinding.class); assertEquals(serviceBinding.getAppGuid(), UUID.fromString("43bfa9c1-ccc8-4929-ab12-a9a6cdcb201b")); assertEquals(serviceBinding.getGatewayName(), "9471e8f1-095a-4f3d-b419-9b35311dce3f"); assertEquals(serviceBinding.getServiceInstanceGuid(), UUID.fromString("3d30cbca-63d4-4377-aa94-f8859be59963")); assertTrue(serviceBinding.getCredentials().has("custom")); assertTrue(serviceBinding.getGatewayData().has("service_id")); } @Test public void serviceInstance() throws Exception { final String serviceInstanceString = "{\n" + " \"name\": \"test-service\",\n" + " \"credentials\": {\n" + " \"custom\": \"field\"\n" + " },\n" + " \"service_plan_guid\": \"88f7a6fd-1562-467d-adae-d907f1c89299\",\n" + " \"space_guid\": \"841b0f63-ab62-4ef2-a16b-aa330b8ef69b\",\n" + " \"gateway_data\": {\n" + " \"service_id\": \"8505c7e0-b6d8-4261-8ce2-060cbca23fb9\"\n" + " },\n" + " \"service_bindings_url\": \"/v2/service_instances/3d30cbca-63d4-4377-aa94-f8859be59963/service_bindings\",\n" + " \"space_url\": \"/v2/spaces/841b0f63-ab62-4ef2-a16b-aa330b8ef69b\",\n" + " \"service_plan_url\": \"/v2/service_plans/88f7a6fd-1562-467d-adae-d907f1c89299\"\n" + "}"; final ServiceInstance serviceInstance = mapper.readValue(serviceInstanceString, ServiceInstance.class); assertEquals(serviceInstance.getName(), "test-service"); assertEquals(serviceInstance.getServicePlanGuid(), UUID.fromString("88f7a6fd-1562-467d-adae-d907f1c89299")); assertEquals(serviceInstance.getSpaceGuid(), UUID.fromString("841b0f63-ab62-4ef2-a16b-aa330b8ef69b")); assertNotNull(serviceInstance.getCredentials()); assertTrue(serviceInstance.getCredentials().has("custom")); assertNotNull(serviceInstance.getGatewayData()); assertTrue(serviceInstance.getGatewayData().has("service_id")); } @Test public void servicePlan() throws Exception { final String servicePlanString = "{\n" + " \"name\": \"Default\",\n" + " \"free\": true,\n" + " \"description\": \"The default service plan.\",\n" + " \"service_guid\": \"93d6d0d6-e655-482a-8f2a-68c40bdd42eb\",\n" + " \"extra\": null,\n" + " \"unique_id\": \"ICS_custom-service_Default\",\n" + " \"service_instances_url\": \"/v2/service_plans/88f7a6fd-1562-467d-adae-d907f1c89299/service_instances\",\n" + " \"service_url\": \"/v2/services/93d6d0d6-e655-482a-8f2a-68c40bdd42eb\"\n" + "}"; final ServicePlan servicePlan = mapper.readValue(servicePlanString, ServicePlan.class); assertEquals(servicePlan.getDescription(), "The default service plan."); assertEquals(servicePlan.getName(), "Default"); assertEquals(servicePlan.getUniqueId(), "ICS_custom-service_Default"); assertEquals(servicePlan.getServiceGuid(), UUID.fromString("93d6d0d6-e655-482a-8f2a-68c40bdd42eb")); assertTrue(servicePlan.isFree()); } }