diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java index e36ac6654bd3c54ec69e7be04a25931544e6e6f4..334128637ec5113e6478567d30e44b2f61ea3f5b 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/AbstractEndpoint.java @@ -10,8 +10,7 @@ import java.util.Map; public abstract class AbstractEndpoint { public List<Map<String, Object>> transform(Dataset<Row> dataset) { - return dataset.selectExpr("*") - .collectAsList() + return dataset.collectAsList() .stream() .map(row -> { final Map<String, Object> map = new LinkedHashMap<>(); diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java index 55f6013479353b5c96f80cec1c8d2623a23f18e9..22b74f9d5ad3fe19b122cd008eb0ec7009cd6074 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/SubsetEndpoint.java @@ -158,8 +158,7 @@ public class SubsetEndpoint extends AbstractEndpoint { @RequestParam(required = false) Instant timestamp) throws DatabaseUnavailableException, DatabaseNotFoundException, RemoteUnavailableException, QueryNotFoundException, FormatNotAvailableException, StorageUnavailableException, UserNotFoundException, - MetadataServiceException, TableNotFoundException, ViewMalformedException, SQLException, - QueryMalformedException { + MetadataServiceException, TableNotFoundException, ViewMalformedException, QueryMalformedException { String accept = httpServletRequest.getHeader("Accept"); log.debug("endpoint find subset in database, databaseId={}, subsetId={}, accept={}, timestamp={}", databaseId, subsetId, accept, timestamp); @@ -186,13 +185,19 @@ public class SubsetEndpoint extends AbstractEndpoint { return ResponseEntity.ok(subset); case "text/csv": log.trace("accept header matches csv"); - final ExportResourceDto resource = storageService.transformDataset(subsetService.getData(database, subset, null, null)); - final HttpHeaders headers = new HttpHeaders(); - headers.add("Content-Disposition", "attachment; filename=\"" + resource.getFilename() + "\""); - log.trace("export table resulted in resource {}", resource); - return ResponseEntity.ok() - .headers(headers) - .body(resource.getResource()); + try { + final Dataset<Row> dataset = subsetService.getData(database, subset, null, null); + final ExportResourceDto resource = storageService.transformDataset(dataset); + final HttpHeaders headers = new HttpHeaders(); + headers.add("Content-Disposition", "attachment; filename=\"" + resource.getFilename() + "\""); + log.trace("export table resulted in resource {}", resource); + return ResponseEntity.ok() + .headers(headers) + .body(resource.getResource()); + } catch (SQLException e) { + log.error("Failed to find data: {}", e.getMessage()); + throw new DatabaseUnavailableException("Failed to find data: " + e.getMessage(), e); + } } throw new FormatNotAvailableException("Must provide either application/json or text/csv headers"); } diff --git a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java index 6745db81b607be8a0e4b5c1fc47b443b7ffd1914..54a19850a4bafce9c7fe6c102aa2b5007b279de9 100644 --- a/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java +++ b/dbrepo-data-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java @@ -247,7 +247,7 @@ public class TableEndpoint extends AbstractEndpoint { .headers(headers) .body(transform(tableService.getData(table.getDatabase(), table.getInternalName(), timestamp, null, null, null, null))); - } catch (SQLException e) { + } catch (SQLException | QueryMalformedException e) { log.error("Failed to establish connection to database: {}", e.getMessage()); throw new DatabaseUnavailableException("Failed to establish connection to database: " + e.getMessage(), e); } diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java index 73a03a67f4cfc18f2819e2d214d0f7730076031d..f1d1b6d795a88f14e3f256df3ccf097a59afc292 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/SubsetEndpointUnitTest.java @@ -7,6 +7,8 @@ import at.tuwien.api.database.query.QueryPersistDto; import at.tuwien.endpoints.SubsetEndpoint; import at.tuwien.exception.*; import at.tuwien.gateway.MetadataServiceGateway; +import at.tuwien.service.SchemaService; +import at.tuwien.service.StorageService; import at.tuwien.service.SubsetService; import at.tuwien.test.AbstractUnitTest; import jakarta.servlet.http.HttpServletRequest; @@ -50,9 +52,15 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @MockBean private SubsetService subsetService; + @MockBean + private SchemaService schemaService; + @MockBean private HttpServletRequest httpServletRequest; + @MockBean + private StorageService storageService; + @MockBean private MetadataServiceGateway metadataServiceGateway; @@ -153,7 +161,9 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_PRIVILEGED_DTO); when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(PrivilegedDatabaseDto.class), any(QueryDto.class), anyLong(), anyLong())) + when(storageService.transformDataset(any(Dataset.class))) + .thenReturn(EXPORT_RESOURCE_DTO); + when(subsetService.getData(any(PrivilegedDatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) .thenReturn(mock); /* test */ @@ -173,8 +183,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_PRIVILEGED_DTO); when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(PrivilegedDatabaseDto.class), any(QueryDto.class), anyLong(), anyLong())) + when(subsetService.getData(any(PrivilegedDatabaseDto.class), any(QueryDto.class), eq(null), eq(null))) .thenReturn(mock); + when(storageService.transformDataset(any(Dataset.class))) + .thenReturn(EXPORT_RESOURCE_DTO); /* test */ generic_findById(QUERY_5_ID, MediaType.parseMediaType("text/csv"), Instant.now()); @@ -217,19 +229,18 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @WithAnonymousUser public void findById_unavailableExport_fails() throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException, SQLException, QueryMalformedException, UserNotFoundException, - QueryNotFoundException, TableNotFoundException, ViewMalformedException { - final Dataset<Row> mock = sparkSession.emptyDataFrame(); + QueryNotFoundException, TableNotFoundException, ViewMalformedException, StorageUnavailableException { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID)) .thenReturn(DATABASE_3_PRIVILEGED_DTO); when(subsetService.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID)) .thenReturn(QUERY_5_DTO); - when(subsetService.getData(any(PrivilegedDatabaseDto.class), any(QueryDto.class), anyLong(), anyLong())) - .thenReturn(mock); + when(storageService.transformDataset(any(Dataset.class))) + .thenReturn(EXPORT_RESOURCE_DTO); doThrow(SQLException.class) .when(subsetService) - .getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(QUERY_5_DTO), anyLong(), any()); + .getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(QUERY_5_DTO), eq(null), eq(null)); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -254,6 +265,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_PRIVILEGED_DTO); when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); + when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + .thenReturn(QUERY_5_DTO); + when(schemaService.inspectView(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) + .thenReturn(VIEW_5_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -294,8 +309,14 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID)) .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(schemaService.inspectView(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) + .thenReturn(VIEW_5_DTO); + when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + .thenReturn(QUERY_5_DTO); when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); + when(httpServletRequest.getMethod()) + .thenReturn("POST"); /* test */ subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, httpServletRequest, null, null, null); @@ -305,7 +326,7 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"}) public void create_unavailable_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, SQLException, MetadataServiceException, QueryMalformedException, TableNotFoundException, - ViewMalformedException { + ViewMalformedException, UserNotFoundException, QueryNotFoundException, QueryStoreInsertException { final ExecuteStatementDto request = ExecuteStatementDto.builder() .statement(QUERY_5_STATEMENT) .build(); @@ -315,7 +336,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_PRIVILEGED_DTO); doThrow(SQLException.class) .when(subsetService) - .getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L)); + .getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(null), eq(null)); + when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + .thenReturn(QUERY_5_DTO); + doThrow(SQLException.class) + .when(subsetService) + .create(eq(DATABASE_3_PRIVILEGED_DTO), eq(QUERY_5_STATEMENT), any(Instant.class), eq(USER_1_ID)); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -363,6 +389,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_3_PRIVILEGED_DTO); when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); + when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + .thenReturn(QUERY_5_DTO); + when(schemaService.inspectView(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) + .thenReturn(VIEW_5_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -385,8 +415,12 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID)) .thenReturn(DATABASE_3_PRIVILEGED_DTO); + when(subsetService.findById(eq(DATABASE_3_PRIVILEGED_DTO), anyLong())) + .thenReturn(QUERY_5_DTO); when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); + when(schemaService.inspectView(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) + .thenReturn(VIEW_5_DTO); when(httpServletRequest.getMethod()) .thenReturn("POST"); @@ -408,8 +442,10 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { .thenReturn(QUERY_5_DTO); when(subsetService.reExecuteCount(DATABASE_3_PRIVILEGED_DTO, QUERY_5_DTO)) .thenReturn(QUERY_5_RESULT_NUMBER); - when(subsetService.getData(DATABASE_3_PRIVILEGED_DTO, QUERY_5_DTO, 0L, 10L)) + when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L))) .thenReturn(mock); + when(schemaService.inspectView(eq(DATABASE_3_PRIVILEGED_DTO), anyString())) + .thenReturn(VIEW_5_DTO); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -454,14 +490,16 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_1_ID)) .thenReturn(DATABASE_1_PRIVILEGED_DTO); - when(httpServletRequest.getMethod()) - .thenReturn("GET"); when(subsetService.findById(DATABASE_1_PRIVILEGED_DTO, QUERY_1_ID)) .thenReturn(QUERY_1_DTO); when(subsetService.reExecuteCount(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO)) .thenReturn(QUERY_1_RESULT_NUMBER); when(subsetService.getData(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, 0L, 10L)) .thenReturn(mock); + when(schemaService.inspectView(eq(DATABASE_1_PRIVILEGED_DTO), anyString())) + .thenReturn(VIEW_1_DTO); + when(httpServletRequest.getMethod()) + .thenReturn("GET"); /* test */ final ResponseEntity<List<Map<String, Object>>> response = subsetEndpoint.getData(DATABASE_1_ID, QUERY_1_ID, USER_1_PRINCIPAL, httpServletRequest, null, null); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java index 76bb8f82bb6b6a5ea72a43e3c9324d7c66856d42..66f06786fb85ea1a95961216044d05a04d8f4c41 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/TableEndpointUnitTest.java @@ -50,12 +50,12 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @Autowired private TableEndpoint tableEndpoint; - @Autowired - private HttpServletRequest httpServletRequest; - @Autowired private SparkSession sparkSession; + @MockBean + private HttpServletRequest httpServletRequest; + @MockBean private TableService tableService; @@ -280,7 +280,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_3_ID, TABLE_8_ID)) .thenReturn(TABLE_8_PRIVILEGED_DTO); - when(tableService.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("GET"); @@ -303,7 +303,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_8_PRIVILEGED_DTO); when(tableService.getCount(eq(TABLE_8_PRIVILEGED_DTO), any(Instant.class))) .thenReturn(3L); - when(tableService.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); when(httpServletRequest.getMethod()) .thenReturn("HEAD"); @@ -359,9 +359,11 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_3_ID, TABLE_8_ID)) .thenReturn(TABLE_8_PRIVILEGED_DTO); - doThrow(SQLException.class) + doThrow(QueryMalformedException.class) .when(tableService) - .getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null)); + .getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null)); + when(httpServletRequest.getMethod()) + .thenReturn("GET"); /* test */ assertThrows(DatabaseUnavailableException.class, () -> { @@ -400,8 +402,10 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_1_PRIVILEGED_DTO); when(metadataServiceGateway.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(tableService.getData(eq(DATABASE_1_PRIVILEGED_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(0L), eq(10L), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_1_PRIVILEGED_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); + when(httpServletRequest.getMethod()) + .thenReturn("GET"); /* test */ final ResponseEntity<List<Map<String, Object>>> response = tableEndpoint.getData(DATABASE_1_ID, TABLE_1_ID, null, null, null, httpServletRequest, USER_2_PRINCIPAL); @@ -1139,7 +1143,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getTableById(DATABASE_3_ID, TABLE_8_ID)) .thenReturn(TABLE_8_PRIVILEGED_DTO); - when(tableService.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), anyLong(), anyLong(), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(TABLE_8_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); /* test */ @@ -1160,7 +1164,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { .thenReturn(TABLE_1_PRIVILEGED_DTO); when(metadataServiceGateway.getAccess(DATABASE_1_ID, USER_2_ID)) .thenReturn(access); - when(tableService.getData(eq(DATABASE_1_PRIVILEGED_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), anyLong(), anyLong(), eq(null), eq(null))) + when(tableService.getData(eq(DATABASE_1_PRIVILEGED_DTO), eq(TABLE_1_INTERNAL_NAME), any(Instant.class), eq(null), eq(null), eq(null), eq(null))) .thenReturn(mock); /* test */ diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java index eabd75e9a66ad8bea2aa39b4c4a009c1b025b724..8062de7b454306dd86c1118c7a7ffca65794d905 100644 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java +++ b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/endpoint/ViewEndpointUnitTest.java @@ -188,12 +188,12 @@ public class ViewEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_LOCAL_ADMIN_USERNAME, authorities = {"system"}) - public void delete_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, ViewMalformedException, - SQLException, DatabaseUnavailableException, ViewNotFoundException, MetadataServiceException { + public void delete_succeeds() throws RemoteUnavailableException, ViewMalformedException, ViewNotFoundException, + SQLException, DatabaseUnavailableException, MetadataServiceException { /* mock */ - when(metadataServiceGateway.getDatabaseById(DATABASE_1_ID)) - .thenReturn(DATABASE_1_PRIVILEGED_DTO); + when(metadataServiceGateway.getViewById(DATABASE_1_ID, VIEW_1_ID)) + .thenReturn(VIEW_1_PRIVILEGED_DTO); doNothing() .when(viewService) .delete(DATABASE_1_PRIVILEGED_DTO, VIEW_1_INTERNAL_NAME); diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java index 8e613cfa7cad69c2de42d96ccacee6957e5f7939..b674e7252a5d3422ad7512e57c90a6c26b6e5b2d 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/AbstractUnitTest.java @@ -122,6 +122,7 @@ public abstract class AbstractUnitTest extends BaseTest { TABLE_8_PRIVILEGED_DTO.setDatabase(DATABASE_3_PRIVILEGED_DTO); VIEW_5.setDatabase(DATABASE_3); VIEW_5.setColumns(VIEW_5_COLUMNS); + VIEW_5_DTO.setColumns(VIEW_5_COLUMNS_DTO); IDENTIFIER_6.setDatabase(DATABASE_3); /* DATABASE 4 */ DATABASE_4.setSubsets(new LinkedList<>()); diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java index 846251a5923f87f2c92577d0887ffd9f5c7282d5..f685e5fcb929c6bfe3f8bc76b1fa51042d911eb6 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java @@ -5456,7 +5456,7 @@ public abstract class BaseTest { .query(VIEW_5_QUERY) .queryHash(VIEW_5_QUERY_HASH) .createdBy(USER_1_ID) - .columns(null) + .columns(new LinkedList<>()) .build(); public final static List<ViewColumn> VIEW_5_COLUMNS = List.of( @@ -5496,6 +5496,40 @@ public abstract class BaseTest { .view(VIEW_5) .build()); + public final static List<ViewColumnDto> VIEW_5_COLUMNS_DTO = List.of( + ViewColumnDto.builder() + .id(29L) + .ordinalPosition(0) + .name("location") + .internalName("location") + .ordinalPosition(0) + .columnType(ColumnTypeDto.VARCHAR) + .size(255L) + .isNullAllowed(false) + .build(), + ViewColumnDto.builder() + .id(30L) + .ordinalPosition(1) + .name("lat") + .internalName("lat") + .ordinalPosition(1) + .columnType(ColumnTypeDto.DECIMAL) + .size(10L) + .d(0L) + .isNullAllowed(true) + .build(), + ViewColumnDto.builder() + .id(31L) + .ordinalPosition(2) + .name("lng") + .internalName("lng") + .ordinalPosition(2) + .columnType(ColumnTypeDto.DECIMAL) + .size(10L) + .d(0L) + .isNullAllowed(true) + .build()); + public final static Long QUERY_1_RESULT_ID = 1L; public final static List<Map<String, Object>> QUERY_1_RESULT_RESULT = List.of( new HashMap<>() {{