Search in sources :

Example 31 with PageEntity

use of io.gravitee.rest.api.model.PageEntity in project gravitee-management-rest-api by gravitee-io.

the class ApiPageResource method updatePageContent.

@PUT
@Path("/content")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Put the page's content", notes = "User must have the MANAGE_PAGES permission to use this service")
@ApiResponses({ @ApiResponse(code = 201, message = "Page content successfully updated"), @ApiResponse(code = 500, message = "Internal server error") })
@Permissions({ @Permission(value = RolePermission.API_DOCUMENTATION, acls = RolePermissionAction.UPDATE) })
public String updatePageContent(@ApiParam(name = "content", required = true) @Valid @NotNull String content) {
    pageService.findById(page);
    UpdatePageEntity updatePageEntity = new UpdatePageEntity();
    updatePageEntity.setContent(content);
    PageEntity update = pageService.update(page, updatePageEntity, true);
    return update.getContent();
}
Also used : PageEntity(io.gravitee.rest.api.model.PageEntity) UpdatePageEntity(io.gravitee.rest.api.model.UpdatePageEntity) UpdatePageEntity(io.gravitee.rest.api.model.UpdatePageEntity) Permissions(io.gravitee.rest.api.management.rest.security.Permissions)

Example 32 with PageEntity

use of io.gravitee.rest.api.model.PageEntity in project gravitee-management-rest-api by gravitee-io.

the class ApiPageResource method deleteApiPage.

@DELETE
@ApiOperation(value = "Delete a page", notes = "User must have the MANAGE_PAGES permission to use this service")
@ApiResponses({ @ApiResponse(code = 204, message = "Page successfully deleted"), @ApiResponse(code = 500, message = "Internal server error") })
@Permissions({ @Permission(value = RolePermission.API_DOCUMENTATION, acls = RolePermissionAction.DELETE) })
public void deleteApiPage() {
    PageEntity existingPage = pageService.findById(page);
    if (existingPage.getType().equals(PageType.SYSTEM_FOLDER.name())) {
        throw new PageSystemFolderActionException("Delete");
    } else if (existingPage.getType().equals(PageType.MARKDOWN_TEMPLATE.name())) {
        throw new PageMarkdownTemplateActionException("Delete");
    }
    pageService.delete(page);
}
Also used : PageEntity(io.gravitee.rest.api.model.PageEntity) UpdatePageEntity(io.gravitee.rest.api.model.UpdatePageEntity) Permissions(io.gravitee.rest.api.management.rest.security.Permissions)

Example 33 with PageEntity

use of io.gravitee.rest.api.model.PageEntity in project gravitee-management-rest-api by gravitee-io.

the class PortalPageMediaResource method getPortalPageMedia.

@GET
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Retrieve all media for a Portal page", notes = "User must have the ENVIRONMENT_DOCUMENTATION[READ] permission to use this service")
@Permissions({ @Permission(value = RolePermission.ENVIRONMENT_DOCUMENTATION, acls = RolePermissionAction.READ) })
public Response getPortalPageMedia() {
    final PageEntity currentPage = pageService.findById(page);
    List<MediaEntity> pageMedia = mediaService.findAllWithoutContent(currentPage.getAttachedMedia());
    if (pageMedia != null && !pageMedia.isEmpty()) {
        return Response.ok(pageMedia).build();
    }
    return Response.noContent().build();
}
Also used : PageEntity(io.gravitee.rest.api.model.PageEntity) MediaEntity(io.gravitee.rest.api.model.MediaEntity) Permissions(io.gravitee.rest.api.management.rest.security.Permissions)

Example 34 with PageEntity

use of io.gravitee.rest.api.model.PageEntity in project gravitee-management-rest-api by gravitee-io.

the class PageService_ImportDescriptorTest method shouldImportDescriptor.

@Test
public void shouldImportDescriptor() throws Exception {
    // We mock the validateSafeContent method because the fetcher keeps sending the same json descriptor which is
    // not a swagger valid document (and modify the fetcher mock to produce valid desc is overkill)
    when(pageService.validateSafeContent(any(), any())).thenReturn(new ArrayList<>());
    PageSourceEntity pageSource = new PageSourceEntity();
    pageSource.setType("type");
    pageSource.setConfiguration(mapper.readTree("{}"));
    ImportPageEntity pageEntity = new ImportPageEntity();
    pageEntity.setSource(pageSource);
    FetcherPlugin fetcherPlugin = mock(FetcherPlugin.class);
    when(fetcherPlugin.clazz()).thenReturn("io.gravitee.rest.api.service.PageService_ImportDescriptorMockFetcher");
    when(fetcherPlugin.configuration()).thenReturn(PageService_MockDescriptorFetcherConfiguration.class);
    when(fetcherPluginManager.get(any())).thenReturn(fetcherPlugin);
    Class<PageService_ImportDescriptorMockFetcher> mockFetcherClass = PageService_ImportDescriptorMockFetcher.class;
    when(fetcherPlugin.fetcher()).thenReturn(mockFetcherClass);
    PageService_MockDescriptorFetcherConfiguration fetcherConfiguration = new PageService_MockDescriptorFetcherConfiguration();
    when(fetcherConfigurationFactory.create(eq(PageService_MockDescriptorFetcherConfiguration.class), anyString())).thenReturn(fetcherConfiguration);
    AutowireCapableBeanFactory mockAutowireCapableBeanFactory = mock(AutowireCapableBeanFactory.class);
    when(applicationContext.getAutowireCapableBeanFactory()).thenReturn(mockAutowireCapableBeanFactory);
    Page newPage = mock(Page.class);
    PageSource ps = new PageSource();
    ps.setType(pageSource.getType());
    ps.setConfiguration(pageSource.getConfiguration());
    when(newPage.getId()).thenReturn(UuidString.generateRandom());
    when(newPage.getSource()).thenReturn(ps);
    when(newPage.getType()).thenReturn("MARKDOWN");
    when(newPage.getReferenceType()).thenReturn(PageReferenceType.ENVIRONMENT);
    when(newPage.getReferenceId()).thenReturn("envId");
    when(newPage.getVisibility()).thenReturn("PUBLIC");
    when(pageRepository.create(any())).thenReturn(newPage);
    when(graviteeDescriptorService.descriptorName()).thenReturn(".gravitee.json");
    when(graviteeDescriptorService.read(anyString())).thenCallRealMethod();
    List<PageEntity> pageEntities = pageService.importFiles(pageEntity, GraviteeContext.getCurrentEnvironment());
    assertNotNull(pageEntities);
    assertEquals(8, pageEntities.size());
    verify(pageRevisionService, times(6)).create(any());
}
Also used : PageEntity(io.gravitee.rest.api.model.PageEntity) ImportPageEntity(io.gravitee.rest.api.model.ImportPageEntity) PageSourceEntity(io.gravitee.rest.api.model.PageSourceEntity) FetcherPlugin(io.gravitee.plugin.fetcher.FetcherPlugin) Page(io.gravitee.repository.management.model.Page) ImportPageEntity(io.gravitee.rest.api.model.ImportPageEntity) AutowireCapableBeanFactory(org.springframework.beans.factory.config.AutowireCapableBeanFactory) PageSource(io.gravitee.repository.management.model.PageSource) Test(org.junit.Test)

Example 35 with PageEntity

use of io.gravitee.rest.api.model.PageEntity in project gravitee-management-rest-api by gravitee-io.

the class PageService_ImportDirectoryTest method shouldImportDirectory.

@Test
public void shouldImportDirectory() throws Exception {
    // We mock the validateSafeContent method because the fetcher keeps sending the same json descriptor which is
    // not a swagger valid document (and modify the fetcher mock to produce valid desc is overkill)
    when(pageService.validateSafeContent(any(), any())).thenReturn(new ArrayList<>());
    PageSourceEntity pageSource = new PageSourceEntity();
    pageSource.setType("type");
    pageSource.setConfiguration(mapper.readTree("{}"));
    ImportPageEntity pageEntity = new ImportPageEntity();
    pageEntity.setSource(pageSource);
    pageEntity.setPublished(true);
    FetcherPlugin fetcherPlugin = mock(FetcherPlugin.class);
    when(fetcherPlugin.clazz()).thenReturn("io.gravitee.rest.api.service.PageService_ImportDirectoryMockFetcher");
    when(fetcherPlugin.configuration()).thenReturn(PageService_MockFilesFetcherConfiguration.class);
    when(fetcherPluginManager.get(any())).thenReturn(fetcherPlugin);
    Class<PageService_ImportDirectoryMockFetcher> mockFetcherClass = PageService_ImportDirectoryMockFetcher.class;
    when(fetcherPlugin.fetcher()).thenReturn(mockFetcherClass);
    PageService_MockFilesFetcherConfiguration fetcherConfiguration = new PageService_MockFilesFetcherConfiguration();
    when(fetcherConfigurationFactory.create(eq(PageService_MockFilesFetcherConfiguration.class), anyString())).thenReturn(fetcherConfiguration);
    AutowireCapableBeanFactory mockAutowireCapableBeanFactory = mock(AutowireCapableBeanFactory.class);
    when(applicationContext.getAutowireCapableBeanFactory()).thenReturn(mockAutowireCapableBeanFactory);
    Page newPage = mock(Page.class);
    PageSource ps = new PageSource();
    ps.setType(pageSource.getType());
    ps.setConfiguration(pageSource.getConfiguration());
    when(newPage.getId()).thenReturn(UuidString.generateRandom());
    when(newPage.isPublished()).thenReturn(Boolean.TRUE);
    when(newPage.getSource()).thenReturn(ps);
    when(newPage.getType()).thenReturn("MARKDOWN");
    when(newPage.getReferenceType()).thenReturn(PageReferenceType.ENVIRONMENT);
    when(newPage.getReferenceId()).thenReturn("envId");
    when(newPage.getVisibility()).thenReturn("PUBLIC");
    when(pageRepository.create(any())).thenReturn(newPage);
    when(graviteeDescriptorService.descriptorName()).thenReturn(".gravitee.json");
    List<PageEntity> pageEntities = pageService.importFiles(pageEntity, GraviteeContext.getCurrentEnvironment());
    assertNotNull(pageEntities);
    assertEquals(8, pageEntities.size());
    verify(searchEngineService, times(8)).index(any(), eq(false));
    // //////////////////////
    // check Folder creation
    // //////////////////////
    verify(pageRepository, times(3)).create(argThat(pageToCreate -> "FOLDER".equals(pageToCreate.getType())));
    // /src
    verify(pageRepository).create(argThat(pageToCreate -> "src".equals(pageToCreate.getName()) && "FOLDER".equals(pageToCreate.getType()) && null == pageToCreate.getParentId()));
    // /src/doc
    verify(pageRepository).create(argThat(pageToCreate -> "doc".equals(pageToCreate.getName()) && "FOLDER".equals(pageToCreate.getType()) && null != pageToCreate.getParentId()));
    // /src/folder.with.dot/
    verify(pageRepository).create(argThat(pageToCreate -> "folder.with.dot".equals(pageToCreate.getName()) && "FOLDER".equals(pageToCreate.getType()) && null != pageToCreate.getParentId()));
    // //////////////////////
    // verify files creation
    // //////////////////////
    verify(pageRepository, times(5)).create(argThat(pageToCreate -> pageToCreate.getType() != null && !"FOLDER".equals(pageToCreate.getType())));
    // /src/doc/m1.md
    verify(pageRepository).create(argThat(pageToCreate -> "m1".equals(pageToCreate.getName()) && "MARKDOWN".equals(pageToCreate.getType()) && null != pageToCreate.getParentId()));
    // /swagger.json
    verify(pageRepository).create(argThat(pageToCreate -> "swagger".equals(pageToCreate.getName()) && "SWAGGER".equals(pageToCreate.getType()) && null == pageToCreate.getParentId()));
    // /src/doc/sub.m11.md
    verify(pageRepository).create(argThat(pageToCreate -> "sub.m11".equals(pageToCreate.getName()) && "MARKDOWN".equals(pageToCreate.getType()) && null != pageToCreate.getParentId()));
    // /src/doc/m2.yaml
    verify(pageRepository).create(argThat(pageToCreate -> "m2".equals(pageToCreate.getName()) && "SWAGGER".equals(pageToCreate.getType()) && null != pageToCreate.getParentId()));
    // /src/folder.with.dot/m2.MD
    verify(pageRepository).create(argThat(pageToCreate -> "m2".equals(pageToCreate.getName()) && "MARKDOWN".equals(pageToCreate.getType()) && null != pageToCreate.getParentId()));
    verify(pageRevisionService, times(5)).create(any());
}
Also used : PageEntity(io.gravitee.rest.api.model.PageEntity) ImportPageEntity(io.gravitee.rest.api.model.ImportPageEntity) PageEntity(io.gravitee.rest.api.model.PageEntity) PageServiceImpl(io.gravitee.rest.api.service.impl.PageServiceImpl) ArgumentMatchers(org.mockito.ArgumentMatchers) PageSource(io.gravitee.repository.management.model.PageSource) ImportConfiguration(io.gravitee.rest.api.service.spring.ImportConfiguration) Mock(org.mockito.Mock) RunWith(org.junit.runner.RunWith) AutowireCapableBeanFactory(org.springframework.beans.factory.config.AutowireCapableBeanFactory) ImportPageEntity(io.gravitee.rest.api.model.ImportPageEntity) GraviteeContext(io.gravitee.rest.api.service.common.GraviteeContext) ArrayList(java.util.ArrayList) PageReferenceType(io.gravitee.repository.management.model.PageReferenceType) FetcherConfigurationFactory(io.gravitee.rest.api.fetcher.FetcherConfigurationFactory) PageRepository(io.gravitee.repository.management.api.PageRepository) InjectMocks(org.mockito.InjectMocks) UuidString(io.gravitee.rest.api.service.common.UuidString) Assert.assertNotNull(org.junit.Assert.assertNotNull) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) PluginManager(io.gravitee.plugin.core.api.PluginManager) Test(org.junit.Test) ApplicationContext(org.springframework.context.ApplicationContext) FetcherPlugin(io.gravitee.plugin.fetcher.FetcherPlugin) Mockito(org.mockito.Mockito) List(java.util.List) Page(io.gravitee.repository.management.model.Page) Visibility(io.gravitee.rest.api.model.Visibility) PageSourceEntity(io.gravitee.rest.api.model.PageSourceEntity) MockitoJUnitRunner(org.mockito.junit.MockitoJUnitRunner) Assert.assertEquals(org.junit.Assert.assertEquals) SearchEngineService(io.gravitee.rest.api.service.search.SearchEngineService) Page(io.gravitee.repository.management.model.Page) AutowireCapableBeanFactory(org.springframework.beans.factory.config.AutowireCapableBeanFactory) PageSource(io.gravitee.repository.management.model.PageSource) PageSourceEntity(io.gravitee.rest.api.model.PageSourceEntity) FetcherPlugin(io.gravitee.plugin.fetcher.FetcherPlugin) ImportPageEntity(io.gravitee.rest.api.model.ImportPageEntity) Test(org.junit.Test)

Aggregations

PageEntity (io.gravitee.rest.api.model.PageEntity)67 Test (org.junit.Test)48 ApiEntity (io.gravitee.rest.api.model.api.ApiEntity)15 OAIDescriptor (io.gravitee.rest.api.service.swagger.OAIDescriptor)15 Page (io.gravitee.rest.api.portal.rest.model.Page)13 Response (javax.ws.rs.core.Response)13 UpdatePageEntity (io.gravitee.rest.api.model.UpdatePageEntity)9 PageConfigurationOAITransformer (io.gravitee.rest.api.service.impl.swagger.transformer.page.PageConfigurationOAITransformer)8 JsonNode (com.fasterxml.jackson.databind.JsonNode)6 Permissions (io.gravitee.rest.api.management.rest.security.Permissions)6 EntrypointsOAITransformer (io.gravitee.rest.api.service.impl.swagger.transformer.entrypoints.EntrypointsOAITransformer)6 SwaggerDescriptor (io.gravitee.rest.api.service.swagger.SwaggerDescriptor)5 Before (org.junit.Before)5 Page (io.gravitee.repository.management.model.Page)4 NewPageEntity (io.gravitee.rest.api.model.NewPageEntity)4 PageNotFoundException (io.gravitee.rest.api.service.exceptions.PageNotFoundException)4 ArgumentMatchers (org.mockito.ArgumentMatchers)4 TechnicalException (io.gravitee.repository.exceptions.TechnicalException)3 PageRepository (io.gravitee.repository.management.api.PageRepository)3 PageReferenceType (io.gravitee.repository.management.model.PageReferenceType)3