Search in sources :

Example 6 with Service

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());
}
Also used : Service(io.github.microcks.domain.Service) File(java.io.File) MockRepositoryImportException(io.github.microcks.util.MockRepositoryImportException) Test(org.junit.Test)

Example 7 with Service

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());
    }
}
Also used : Response(io.github.microcks.domain.Response) Resource(io.github.microcks.domain.Resource) Request(io.github.microcks.domain.Request) Service(io.github.microcks.domain.Service) File(java.io.File) MockRepositoryImportException(io.github.microcks.util.MockRepositoryImportException) Test(org.junit.Test)

Example 8 with Service

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());
        }
    }
}
Also used : Service(io.github.microcks.domain.Service) Operation(io.github.microcks.domain.Operation) EntityAlreadyExistsException(io.github.microcks.util.EntityAlreadyExistsException) MockRepositoryImportException(io.github.microcks.util.MockRepositoryImportException) Test(org.junit.Test)

Example 9 with Service

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());
    }
}
Also used : Response(io.github.microcks.domain.Response) Request(io.github.microcks.domain.Request) Service(io.github.microcks.domain.Service) File(java.io.File) MockRepositoryImportException(io.github.microcks.util.MockRepositoryImportException) Test(org.junit.Test)

Example 10 with Service

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);
}
Also used : HTTPDownloader(io.github.microcks.util.HTTPDownloader) ResponseEntity(org.springframework.http.ResponseEntity) ArtifactInfo(io.github.microcks.service.ArtifactInfo) ServiceService(io.github.microcks.service.ServiceService) Service(io.github.microcks.domain.Service) IOException(java.io.IOException) File(java.io.File) MultipartFile(org.springframework.web.multipart.MultipartFile) MockRepositoryImportException(io.github.microcks.util.MockRepositoryImportException) ReferenceResolver(io.github.microcks.util.ReferenceResolver) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

Service (io.github.microcks.domain.Service)42 MockRepositoryImportException (io.github.microcks.util.MockRepositoryImportException)18 Operation (io.github.microcks.domain.Operation)15 Test (org.junit.Test)15 Resource (io.github.microcks.domain.Resource)12 IOException (java.io.IOException)10 ResponseEntity (org.springframework.http.ResponseEntity)7 Response (io.github.microcks.domain.Response)6 File (java.io.File)6 ArrayList (java.util.ArrayList)6 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)6 Exchange (io.github.microcks.domain.Exchange)4 Request (io.github.microcks.domain.Request)4 RequestResponsePair (io.github.microcks.domain.RequestResponsePair)4 UnidirectionalEvent (io.github.microcks.domain.UnidirectionalEvent)4 List (java.util.List)4 HttpHeaders (org.springframework.http.HttpHeaders)4 JsonNode (com.fasterxml.jackson.databind.JsonNode)3 Header (io.github.microcks.domain.Header)3 Metadata (io.github.microcks.domain.Metadata)3