use of io.github.microcks.domain.Service in project microcks by microcks.
the class ServiceServiceTest method testImportServiceDefinitionMainAndSecondariesWithAPIMetadata.
@Test
public void testImportServiceDefinitionMainAndSecondariesWithAPIMetadata() {
List<Service> services = null;
try {
File artifactFile = new File("target/test-classes/io/github/microcks/service/weather-forecast-raw-openapi.yaml");
services = service.importServiceDefinition(artifactFile, null, new ArtifactInfo("weather-forecast-raw-openapi.yaml", true));
} catch (MockRepositoryImportException mrie) {
mrie.printStackTrace();
fail("No MockRepositoryImportException should have be thrown");
}
try {
File artifactFile = new File("target/test-classes/io/github/microcks/service/weather-forecast-postman.json");
services = service.importServiceDefinition(artifactFile, null, new ArtifactInfo("weather-forecast-postman.json", false));
} catch (MockRepositoryImportException mrie) {
mrie.printStackTrace();
fail("No MockRepositoryImportException should have be thrown");
}
try {
File artifactFile = new File("target/test-classes/io/github/microcks/service/weather-forecast-metadata.yaml");
services = service.importServiceDefinition(artifactFile, null, new ArtifactInfo("weather-forecast-metadata.yaml", false));
} catch (MockRepositoryImportException mrie) {
mrie.printStackTrace();
fail("No MockRepositoryImportException should have be thrown");
}
// Inspect Service own attributes.
Service importedSvc = services.get(0);
assertEquals("WeatherForecast API", importedSvc.getName());
assertEquals("1.1.0", importedSvc.getVersion());
assertEquals("weather-forecast-raw-openapi.yaml", importedSvc.getSourceArtifact());
assertNotNull(importedSvc.getMetadata());
assertEquals(3, importedSvc.getMetadata().getLabels().size());
assertEquals("weather", importedSvc.getMetadata().getLabels().get("domain"));
assertEquals("GA", importedSvc.getMetadata().getLabels().get("status"));
assertEquals("Team C", importedSvc.getMetadata().getLabels().get("team"));
assertEquals(1, importedSvc.getOperations().size());
assertEquals(100, importedSvc.getOperations().get(0).getDefaultDelay().longValue());
assertEquals(DispatchStyles.FALLBACK, importedSvc.getOperations().get(0).getDispatcher());
assertNotNull(importedSvc.getOperations().get(0).getDispatcherRules());
assertEquals(5, importedSvc.getOperations().get(0).getResourcePaths().size());
}
use of io.github.microcks.domain.Service in project microcks by microcks.
the class ServiceServiceTest method testImportServiceDefinition.
@Test
public void testImportServiceDefinition() {
List<Service> services = null;
try {
File artifactFile = new File("target/test-classes/io/github/microcks/service/weather-forecast-openapi.yaml");
services = service.importServiceDefinition(artifactFile, null, new ArtifactInfo("weather-forecast-openapi.yaml", true));
} catch (MockRepositoryImportException mrie) {
mrie.printStackTrace();
fail("No MockRepositoryImportException should have be thrown");
}
assertNotNull(services);
assertEquals(1, services.size());
// Inspect Service own attributes.
Service importedSvc = services.get(0);
assertEquals("WeatherForecast API", importedSvc.getName());
assertEquals("1.0.0", importedSvc.getVersion());
assertEquals("weather-forecast-openapi.yaml", importedSvc.getSourceArtifact());
assertNotNull(importedSvc.getMetadata());
assertEquals(1, importedSvc.getOperations().size());
assertEquals("GET /forecast/{region}", importedSvc.getOperations().get(0).getName());
assertEquals(5, importedSvc.getOperations().get(0).getResourcePaths().size());
// Inspect and check resources.
List<Resource> resources = resourceRepository.findByServiceId(importedSvc.getId());
assertEquals(1, resources.size());
Resource resource = resources.get(0);
assertEquals("WeatherForecast API-1.0.0.yaml", resource.getName());
assertEquals("weather-forecast-openapi.yaml", resource.getSourceArtifact());
// Inspect and check requests.
List<Request> requests = requestRepository.findByOperationId(IdBuilder.buildOperationId(importedSvc, importedSvc.getOperations().get(0)));
assertEquals(5, requests.size());
for (Request request : requests) {
assertEquals("weather-forecast-openapi.yaml", request.getSourceArtifact());
}
// Inspect and check responses.
List<Response> responses = responseRepository.findByOperationId(IdBuilder.buildOperationId(importedSvc, importedSvc.getOperations().get(0)));
assertEquals(5, requests.size());
for (Response response : responses) {
assertEquals("weather-forecast-openapi.yaml", response.getSourceArtifact());
}
}
use of io.github.microcks.domain.Service in project microcks by microcks.
the class ServiceServiceTest method testCreateGenericResourceService.
@Test
public void testCreateGenericResourceService() {
Service created = null;
try {
created = service.createGenericResourceService("Order Service", "1.0", "order");
} catch (Exception e) {
fail("No exception should be thrown");
}
// Check created object.
assertNotNull(created.getId());
// Retrieve object by id and assert on what has been persisted.
Service retrieved = repository.findById(created.getId()).orElse(null);
assertEquals("Order Service", retrieved.getName());
assertEquals("1.0", retrieved.getVersion());
assertEquals(ServiceType.GENERIC_REST, retrieved.getType());
// Now check operations.
assertEquals(5, retrieved.getOperations().size());
for (Operation op : retrieved.getOperations()) {
if ("POST /order".equals(op.getName())) {
assertEquals("POST", op.getMethod());
} else if ("GET /order/:id".equals(op.getName())) {
assertEquals("GET", op.getMethod());
assertEquals(DispatchStyles.URI_PARTS, op.getDispatcher());
assertEquals("id", op.getDispatcherRules());
} else if ("GET /order".equals(op.getName())) {
assertEquals("GET", op.getMethod());
} else if ("PUT /order/:id".equals(op.getName())) {
assertEquals("PUT", op.getMethod());
assertEquals(DispatchStyles.URI_PARTS, op.getDispatcher());
assertEquals("id", op.getDispatcherRules());
} else if ("DELETE /order/:id".equals(op.getName())) {
assertEquals("DELETE", op.getMethod());
assertEquals(DispatchStyles.URI_PARTS, op.getDispatcher());
assertEquals("id", op.getDispatcherRules());
} else {
fail("Unknown operation name: " + op.getName());
}
}
}
use of io.github.microcks.domain.Service in project microcks by microcks.
the class ServiceServiceTest method testImportServiceDefinitionMainGraphQLAndSecondaryPostman.
@Test
public void testImportServiceDefinitionMainGraphQLAndSecondaryPostman() {
List<Service> services = null;
try {
File artifactFile = new File("target/test-classes/io/github/microcks/util/graphql/films.graphql");
services = service.importServiceDefinition(artifactFile, null, new ArtifactInfo("films.graphql", true));
} catch (MockRepositoryImportException mrie) {
mrie.printStackTrace();
fail("No MockRepositoryImportException should have be thrown");
}
assertNotNull(services);
assertEquals(1, services.size());
// Inspect Service own attributes.
Service importedSvc = services.get(0);
assertEquals("Movie Graph API", importedSvc.getName());
assertEquals("1.0", importedSvc.getVersion());
assertEquals("films.graphql", importedSvc.getSourceArtifact());
assertNotNull(importedSvc.getMetadata());
assertEquals(4, importedSvc.getOperations().size());
// Inspect and check requests.
List<Request> requests = requestRepository.findByOperationId(IdBuilder.buildOperationId(importedSvc, importedSvc.getOperations().get(0)));
assertEquals(0, requests.size());
// Inspect and check responses.
List<Response> responses = responseRepository.findByOperationId(IdBuilder.buildOperationId(importedSvc, importedSvc.getOperations().get(0)));
assertEquals(0, responses.size());
try {
File artifactFile = new File("target/test-classes/io/github/microcks/util/graphql/films-postman.json");
services = service.importServiceDefinition(artifactFile, null, new ArtifactInfo("films-postman.json", false));
} catch (MockRepositoryImportException mrie) {
mrie.printStackTrace();
fail("No MockRepositoryImportException should have be thrown");
}
// Inspect Service own attributes.
importedSvc = services.get(0);
assertEquals("Movie Graph API", importedSvc.getName());
assertEquals("1.0", importedSvc.getVersion());
assertEquals("films.graphql", importedSvc.getSourceArtifact());
assertNotNull(importedSvc.getMetadata());
assertEquals(4, importedSvc.getOperations().size());
// Inspect and check requests.
requests = requestRepository.findByOperationId(IdBuilder.buildOperationId(importedSvc, importedSvc.getOperations().get(0)));
assertEquals(1, requests.size());
for (Request request : requests) {
assertEquals("films-postman.json", request.getSourceArtifact());
}
// Inspect and check responses.
responses = responseRepository.findByOperationId(IdBuilder.buildOperationId(importedSvc, importedSvc.getOperations().get(0)));
assertEquals(1, requests.size());
for (Response response : responses) {
assertEquals("films-postman.json", response.getSourceArtifact());
}
}
use of io.github.microcks.domain.Service in project microcks by microcks.
the class UploadArtifactController method importArtifact.
@RequestMapping(value = "/artifact/download", method = RequestMethod.POST)
public ResponseEntity<?> importArtifact(@RequestParam(value = "url", required = true) String url, @RequestParam(value = "mainArtifact", defaultValue = "true") boolean mainArtifact) {
if (!url.isEmpty()) {
List<Service> services = null;
try {
// Download remote to local file before import.
HTTPDownloader.FileAndHeaders fileAndHeaders = HTTPDownloader.handleHTTPDownloadToFileAndHeaders(url, null, true);
File localFile = fileAndHeaders.getLocalFile();
// Now try importing services.
services = serviceService.importServiceDefinition(localFile, new ReferenceResolver(url, null, true, RelativeReferenceURLBuilderFactory.getRelativeReferenceURLBuilder(fileAndHeaders.getResponseHeaders())), new ArtifactInfo(url, mainArtifact));
} catch (IOException ioe) {
log.error("Exception while retrieving remote item " + url, ioe);
return new ResponseEntity<Object>("Exception while retrieving remote item", HttpStatus.INTERNAL_SERVER_ERROR);
} catch (MockRepositoryImportException mrie) {
return new ResponseEntity<Object>(mrie.getMessage(), HttpStatus.BAD_REQUEST);
}
if (services != null && services.size() > 0) {
return new ResponseEntity<Object>("{\"name\": \"" + services.get(0).getName() + ":" + services.get(0).getVersion() + "\"}", HttpStatus.CREATED);
}
}
return new ResponseEntity<Object>(HttpStatus.NO_CONTENT);
}
Aggregations