Skip to content
Snippets Groups Projects
Verified Commit fd2bb71b authored by Martin Weise's avatar Martin Weise
Browse files

WIP

parent 6ad8dac4
No related branches found
No related tags found
2 merge requests!363Resolve "Hotfix query execution",!362Resolve "Hotfix query execution"
package at.tuwien.endpoint;
import at.tuwien.api.database.internal.PrivilegedDatabaseDto;
import at.tuwien.api.database.query.ExecuteStatementDto;
import at.tuwien.api.database.query.QueryDto;
import at.tuwien.api.database.query.QueryPersistDto;
import at.tuwien.endpoints.SubsetEndpoint;
......@@ -10,6 +11,9 @@ import at.tuwien.service.SubsetService;
import at.tuwien.test.AbstractUnitTest;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.log4j.Log4j2;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
......@@ -17,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.security.test.context.support.WithAnonymousUser;
......@@ -24,6 +29,7 @@ import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import java.sql.SQLException;
import java.time.Instant;
import java.util.List;
import java.util.Map;
......@@ -38,6 +44,9 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
@Autowired
private SubsetEndpoint subsetEndpoint;
@Autowired
private SparkSession sparkSession;
@MockBean
private SubsetService subsetService;
......@@ -97,284 +106,294 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
});
}
// @Test
// @WithAnonymousUser
// public void findById_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException,
// DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException, QueryNotFoundException,
// FormatNotAvailableException, StorageNotFoundException, SQLException, MetadataServiceException,
// ViewNotFoundException, MalformedException, TableNotFoundException {
//
// /* 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);
//
// /* test */
// generic_findById(QUERY_5_ID, MediaType.APPLICATION_JSON, null);
// }
@Test
@WithAnonymousUser
public void findById_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException,
DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException, QueryNotFoundException,
FormatNotAvailableException, TableNotFoundException, MetadataServiceException, SQLException,
ViewMalformedException {
// @Test
// @WithAnonymousUser
// public void findById_format_fails() throws DatabaseNotFoundException, RemoteUnavailableException, SQLException,
// UserNotFoundException, QueryNotFoundException, MetadataServiceException {
//
// /* 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);
//
// /* test */
// assertThrows(FormatNotAvailableException.class, () -> {
// generic_findById(QUERY_5_ID, MediaType.APPLICATION_PDF, null);
// });
// }
/* 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);
// @Test
// @WithAnonymousUser
// public void findById_acceptCsv_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException,
// UserNotFoundException, DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException,
// QueryNotFoundException, FormatNotAvailableException, StorageNotFoundException, SQLException,
// MetadataServiceException, ViewNotFoundException, MalformedException, TableNotFoundException {
// final ExportResourceDto mock = ExportResourceDto.builder()
// .filename("deadbeef")
// .resource(new InputStreamResource(InputStream.nullInputStream()))
// .build();
//
// /* 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.export(any(PrivilegedDatabaseDto.class), any(QueryDto.class), any(Instant.class)))
// .thenReturn(mock);
//
// /* test */
// generic_findById(QUERY_5_ID, MediaType.parseMediaType("text/csv"), null);
// }
/* test */
generic_findById(QUERY_5_ID, MediaType.APPLICATION_JSON, null);
}
// @Test
// @WithAnonymousUser
// public void findById_timestamp_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException,
// UserNotFoundException, DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException,
// QueryNotFoundException, FormatNotAvailableException, StorageNotFoundException, SQLException,
// MetadataServiceException, ViewNotFoundException, MalformedException, TableNotFoundException {
// final ExportResourceDto mock = ExportResourceDto.builder()
// .filename("deadbeef")
// .resource(new InputStreamResource(InputStream.nullInputStream()))
// .build();
//
// /* 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.export(any(PrivilegedDatabaseDto.class), any(QueryDto.class), any(Instant.class)))
// .thenReturn(mock);
//
// /* test */
// generic_findById(QUERY_5_ID, MediaType.parseMediaType("text/csv"), Instant.now());
// }
@Test
@WithAnonymousUser
public void findById_format_fails() throws DatabaseNotFoundException, RemoteUnavailableException, SQLException,
UserNotFoundException, QueryNotFoundException, MetadataServiceException {
// @Test
// @WithAnonymousUser
// public void findById_notFound_fails() throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException {
//
// /* mock */
// doThrow(DatabaseNotFoundException.class)
// .when(metadataServiceGateway)
// .getDatabaseById(DATABASE_3_ID);
//
// /* test */
// assertThrows(DatabaseNotFoundException.class, () -> {
// generic_findById(QUERY_5_ID, MediaType.APPLICATION_JSON, null);
// });
// }
/* 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);
// @Test
// @WithAnonymousUser
// public void findById_unavailable_fails() throws DatabaseNotFoundException, RemoteUnavailableException,
// MetadataServiceException, SQLException, UserNotFoundException, QueryNotFoundException {
//
// /* mock */
// when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
// .thenReturn(DATABASE_3_PRIVILEGED_DTO);
// doThrow(SQLException.class)
// .when(subsetService)
// .findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID);
//
// /* test */
// assertThrows(DatabaseUnavailableException.class, () -> {
// generic_findById(QUERY_5_ID, MediaType.APPLICATION_JSON, null);
// });
// }
/* test */
assertThrows(FormatNotAvailableException.class, () -> {
generic_findById(QUERY_5_ID, MediaType.APPLICATION_PDF, null);
});
}
// @Test
// @WithAnonymousUser
// public void findById_unavailableExport_fails() throws DatabaseNotFoundException, RemoteUnavailableException,
// MetadataServiceException, SQLException, StorageUnavailableException, QueryMalformedException,
// StorageNotFoundException, UserNotFoundException, QueryNotFoundException, ViewNotFoundException, MalformedException {
// final ExportResourceDto mock = ExportResourceDto.builder()
// .filename("deadbeef")
// .resource(new InputStreamResource(InputStream.nullInputStream()))
// .build();
//
// /* 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.export(any(PrivilegedDatabaseDto.class), any(QueryDto.class), any(Instant.class)))
// .thenReturn(mock);
// doThrow(SQLException.class)
// .when(subsetService)
// .export(eq(DATABASE_3_PRIVILEGED_DTO), eq(QUERY_5_DTO), any(Instant.class));
//
// /* test */
// assertThrows(DatabaseUnavailableException.class, () -> {
// generic_findById(QUERY_5_ID, MediaType.parseMediaType("text/csv"), null);
// });
// }
//
// @Test
// @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
// public void create_noAccess_succeeds() throws UserNotFoundException, QueryStoreInsertException,
// TableMalformedException, NotAllowedException, QueryNotSupportedException, PaginationException,
// StorageNotFoundException, DatabaseUnavailableException, StorageUnavailableException,
// QueryMalformedException, QueryNotFoundException, DatabaseNotFoundException, RemoteUnavailableException,
// SQLException, MetadataServiceException {
// final ExecuteStatementDto request = ExecuteStatementDto.builder()
// .statement(QUERY_5_STATEMENT)
// .build();
//
// /* mock */
// when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
// .thenReturn(DATABASE_3_PRIVILEGED_DTO);
// when(subsetService.execute(eq(DATABASE_3_PRIVILEGED_DTO), anyString(), any(Instant.class), eq(USER_1_ID), eq(0L), eq(10L), eq(null), eq(null)))
// .thenReturn(QUERY_5_RESULT_DTO);
//
// /* test */
// subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, 0L, 10L, null);
// }
@Test
@WithAnonymousUser
public void findById_acceptCsv_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException,
UserNotFoundException, DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException,
QueryNotFoundException, FormatNotAvailableException, SQLException, MetadataServiceException,
TableNotFoundException, ViewMalformedException {
final Dataset<Row> mock = sparkSession.emptyDataFrame();
// @Test
// @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
// public void create_forbiddenKeyword_fails() {
// final ExecuteStatementDto request = ExecuteStatementDto.builder()
// .statement("SELECT COUNT(id) FROM tbl")
// .build();
//
// /* test */
// assertThrows(QueryNotSupportedException.class, () -> {
// subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, 0L, 10L, null);
// });
// }
/* 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);
/* test */
generic_findById(QUERY_5_ID, MediaType.parseMediaType("text/csv"), null);
}
@Test
@WithAnonymousUser
public void findById_timestamp_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException,
UserNotFoundException, DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException,
QueryNotFoundException, FormatNotAvailableException, SQLException, MetadataServiceException,
TableNotFoundException, ViewMalformedException {
final Dataset<Row> mock = sparkSession.emptyDataFrame();
/* 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);
/* test */
generic_findById(QUERY_5_ID, MediaType.parseMediaType("text/csv"), Instant.now());
}
@Test
@WithAnonymousUser
public void findById_notFound_fails() throws DatabaseNotFoundException, RemoteUnavailableException, MetadataServiceException {
/* mock */
doThrow(DatabaseNotFoundException.class)
.when(metadataServiceGateway)
.getDatabaseById(DATABASE_3_ID);
/* test */
assertThrows(DatabaseNotFoundException.class, () -> {
generic_findById(QUERY_5_ID, MediaType.APPLICATION_JSON, null);
});
}
@Test
@WithAnonymousUser
public void findById_unavailable_fails() throws DatabaseNotFoundException, RemoteUnavailableException,
MetadataServiceException, SQLException, UserNotFoundException, QueryNotFoundException {
/* mock */
when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
.thenReturn(DATABASE_3_PRIVILEGED_DTO);
doThrow(SQLException.class)
.when(subsetService)
.findById(DATABASE_3_PRIVILEGED_DTO, QUERY_5_ID);
/* test */
assertThrows(DatabaseUnavailableException.class, () -> {
generic_findById(QUERY_5_ID, MediaType.APPLICATION_JSON, null);
});
}
@Test
@WithAnonymousUser
public void findById_unavailableExport_fails() throws DatabaseNotFoundException, RemoteUnavailableException,
MetadataServiceException, SQLException, QueryMalformedException, UserNotFoundException,
QueryNotFoundException, TableNotFoundException, ViewMalformedException {
final Dataset<Row> mock = sparkSession.emptyDataFrame();
/* 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);
doThrow(SQLException.class)
.when(subsetService)
.getData(eq(DATABASE_3_PRIVILEGED_DTO), eq(QUERY_5_DTO), anyLong(), any());
/* test */
assertThrows(DatabaseUnavailableException.class, () -> {
generic_findById(QUERY_5_ID, MediaType.parseMediaType("text/csv"), null);
});
}
@Test
@WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
public void create_noAccess_succeeds() throws UserNotFoundException, QueryStoreInsertException,
TableMalformedException, NotAllowedException, QueryNotSupportedException, PaginationException,
StorageNotFoundException, DatabaseUnavailableException, StorageUnavailableException, SQLException,
QueryMalformedException, QueryNotFoundException, DatabaseNotFoundException, RemoteUnavailableException,
MetadataServiceException, TableNotFoundException, ViewMalformedException, ViewNotFoundException {
final Dataset<Row> mock = sparkSession.emptyDataFrame();
final ExecuteStatementDto request = ExecuteStatementDto.builder()
.statement(QUERY_5_STATEMENT)
.build();
/* mock */
when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
.thenReturn(DATABASE_3_PRIVILEGED_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, 0L, 10L);
}
@Test
@WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
public void create_forbiddenKeyword_fails() {
final ExecuteStatementDto request = ExecuteStatementDto.builder()
.statement("SELECT COUNT(id) FROM tbl")
.build();
/* mock */
when(httpServletRequest.getMethod())
.thenReturn("POST");
/* test */
assertThrows(QueryNotSupportedException.class, () -> {
subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, httpServletRequest, null, 0L, 10L);
});
}
@Test
@WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
public void create_noPageSize_succeeds() throws UserNotFoundException, QueryStoreInsertException,
TableMalformedException, NotAllowedException, QueryNotSupportedException,
PaginationException, StorageNotFoundException, DatabaseUnavailableException, StorageUnavailableException,
QueryMalformedException, QueryNotFoundException, DatabaseNotFoundException, RemoteUnavailableException,
SQLException, MetadataServiceException, TableNotFoundException, ViewMalformedException,
ViewNotFoundException {
final Dataset<Row> mock = sparkSession.emptyDataFrame();
final ExecuteStatementDto request = ExecuteStatementDto.builder()
.statement(QUERY_5_STATEMENT)
.build();
/* mock */
when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
.thenReturn(DATABASE_3_PRIVILEGED_DTO);
when(subsetService.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L)))
.thenReturn(mock);
/* test */
subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, httpServletRequest, null, null, null);
}
@Test
@WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
public void create_unavailable_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException,
SQLException, MetadataServiceException, QueryMalformedException, TableNotFoundException,
ViewMalformedException {
final ExecuteStatementDto request = ExecuteStatementDto.builder()
.statement(QUERY_5_STATEMENT)
.build();
/* mock */
when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
.thenReturn(DATABASE_3_PRIVILEGED_DTO);
doThrow(SQLException.class)
.when(subsetService)
.getData(eq(DATABASE_3_PRIVILEGED_DTO), any(QueryDto.class), eq(0L), eq(10L));
when(httpServletRequest.getMethod())
.thenReturn("POST");
/* test */
assertThrows(DatabaseUnavailableException.class, () -> {
subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, httpServletRequest, null, null, null);
});
}
@Test
@WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
public void create_databaseNotFound_fails() throws RemoteUnavailableException,
DatabaseNotFoundException, MetadataServiceException {
final ExecuteStatementDto request = ExecuteStatementDto.builder()
.statement(QUERY_5_STATEMENT)
.build();
/* mock */
doThrow(DatabaseNotFoundException.class)
.when(metadataServiceGateway)
.getDatabaseById(DATABASE_3_ID);
when(httpServletRequest.getMethod())
.thenReturn("POST");
/* test */
assertThrows(DatabaseNotFoundException.class, () -> {
subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, httpServletRequest, null, null, null);
});
}
@Test
@WithMockUser(username = USER_4_USERNAME)
public void create_noRole_fails() throws DatabaseNotFoundException, RemoteUnavailableException,
MetadataServiceException, UserNotFoundException, QueryStoreInsertException, TableMalformedException,
NotAllowedException, SQLException, QueryNotFoundException, DatabaseUnavailableException,
StorageUnavailableException, QueryMalformedException, QueryNotSupportedException, PaginationException,
StorageNotFoundException, TableNotFoundException, ViewMalformedException, ViewNotFoundException {
final Dataset<Row> mock = sparkSession.emptyDataFrame();
final ExecuteStatementDto request = ExecuteStatementDto.builder()
.statement(QUERY_5_STATEMENT)
.build();
/* mock */
when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
.thenReturn(DATABASE_3_PRIVILEGED_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_4_PRINCIPAL, httpServletRequest, null, null, null);
}
@Test
@WithAnonymousUser
public void create_anonymous_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException,
MetadataServiceException, UserNotFoundException, QueryStoreInsertException, TableMalformedException,
NotAllowedException, SQLException, QueryNotFoundException, DatabaseUnavailableException,
StorageUnavailableException, QueryMalformedException, QueryNotSupportedException, PaginationException,
StorageNotFoundException, TableNotFoundException, ViewMalformedException, ViewNotFoundException {
final Dataset<Row> mock = sparkSession.emptyDataFrame();
final ExecuteStatementDto request = ExecuteStatementDto.builder()
.statement(QUERY_5_STATEMENT)
.build();
/* mock */
when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
.thenReturn(DATABASE_3_PRIVILEGED_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, null, httpServletRequest, null, null, null);
}
// @Test
// @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
// public void create_noPageSize_succeeds() throws UserNotFoundException, QueryStoreInsertException,
// TableMalformedException, NotAllowedException, QueryNotSupportedException,
// PaginationException, StorageNotFoundException, DatabaseUnavailableException, StorageUnavailableException,
// QueryMalformedException, QueryNotFoundException, DatabaseNotFoundException, RemoteUnavailableException,
// SQLException, MetadataServiceException {
// final ExecuteStatementDto request = ExecuteStatementDto.builder()
// .statement(QUERY_5_STATEMENT)
// .build();
//
// /* mock */
// when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
// .thenReturn(DATABASE_3_PRIVILEGED_DTO);
// when(subsetService.execute(eq(DATABASE_3_PRIVILEGED_DTO), anyString(), any(Instant.class), eq(USER_1_ID), eq(0L), eq(10L), eq(null), eq(null)))
// .thenReturn(QUERY_5_RESULT_DTO);
//
// /* test */
// subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, null, null, null);
// }
//
// @Test
// @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
// public void create_unavailable_succeeds() throws UserNotFoundException, QueryStoreInsertException,
// TableMalformedException, NotAllowedException, QueryNotFoundException, DatabaseNotFoundException,
// RemoteUnavailableException, SQLException, MetadataServiceException, QueryMalformedException {
// final ExecuteStatementDto request = ExecuteStatementDto.builder()
// .statement(QUERY_5_STATEMENT)
// .build();
//
// /* mock */
// when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
// .thenReturn(DATABASE_3_PRIVILEGED_DTO);
// doThrow(SQLException.class)
// .when(subsetService)
// .execute(eq(DATABASE_3_PRIVILEGED_DTO), anyString(), any(Instant.class), eq(USER_1_ID), eq(0L), eq(10L), eq(null), eq(null));
//
// /* test */
// assertThrows(DatabaseUnavailableException.class, () -> {
// subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, null, null, null);
// });
// }
//
// @Test
// @WithMockUser(username = USER_1_USERNAME, authorities = {"execute-query"})
// public void create_databaseNotFound_fails() throws RemoteUnavailableException,
// DatabaseNotFoundException, MetadataServiceException {
// final ExecuteStatementDto request = ExecuteStatementDto.builder()
// .statement(QUERY_5_STATEMENT)
// .build();
//
// /* mock */
// doThrow(DatabaseNotFoundException.class)
// .when(metadataServiceGateway)
// .getDatabaseById(DATABASE_3_ID);
//
// /* test */
// assertThrows(DatabaseNotFoundException.class, () -> {
// subsetEndpoint.create(DATABASE_3_ID, request, USER_1_PRINCIPAL, null, null, null);
// });
// }
//
// @Test
// @WithMockUser(username = USER_4_USERNAME)
// public void create_noRole_fails() throws DatabaseNotFoundException, RemoteUnavailableException,
// MetadataServiceException, UserNotFoundException, QueryStoreInsertException, TableMalformedException,
// NotAllowedException, SQLException, QueryNotFoundException, DatabaseUnavailableException,
// StorageUnavailableException, QueryMalformedException, QueryNotSupportedException, PaginationException,
// StorageNotFoundException {
// final ExecuteStatementDto request = ExecuteStatementDto.builder()
// .statement(QUERY_5_STATEMENT)
// .build();
//
// /* mock */
// when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
// .thenReturn(DATABASE_3_PRIVILEGED_DTO);
// when(subsetService.execute(eq(DATABASE_3_PRIVILEGED_DTO), anyString(), any(Instant.class), eq(USER_4_ID), eq(0L), eq(10L), eq(null), eq(null)))
// .thenReturn(QUERY_5_RESULT_DTO);
//
// /* test */
// subsetEndpoint.create(DATABASE_3_ID, request, USER_4_PRINCIPAL, null, null, null);
// }
//
// @Test
// @WithAnonymousUser
// public void create_anonymous_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException,
// MetadataServiceException, UserNotFoundException, QueryStoreInsertException, TableMalformedException,
// NotAllowedException, SQLException, QueryNotFoundException, DatabaseUnavailableException,
// StorageUnavailableException, QueryMalformedException, QueryNotSupportedException, PaginationException,
// StorageNotFoundException {
// final ExecuteStatementDto request = ExecuteStatementDto.builder()
// .statement(QUERY_5_STATEMENT)
// .build();
//
// /* mock */
// when(metadataServiceGateway.getDatabaseById(DATABASE_3_ID))
// .thenReturn(DATABASE_3_PRIVILEGED_DTO);
// when(subsetService.execute(eq(DATABASE_3_PRIVILEGED_DTO), anyString(), any(Instant.class), eq(null), eq(0L), eq(10L), eq(null), eq(null)))
// .thenReturn(QUERY_5_RESULT_DTO);
//
// /* test */
// subsetEndpoint.create(DATABASE_3_ID, request, null, null, null, null);
// }
//
// @Test
// public void getData_succeeds() throws DatabaseNotFoundException, RemoteUnavailableException, UserNotFoundException,
// NotAllowedException, SQLException, QueryNotFoundException, TableMalformedException, QueryMalformedException,
......@@ -645,19 +664,19 @@ public class SubsetEndpointUnitTest extends AbstractUnitTest {
return response.getBody();
}
// protected void generic_findById(Long subsetId, MediaType accept, Instant timestamp) throws UserNotFoundException,
// DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException, QueryNotFoundException,
// DatabaseNotFoundException, RemoteUnavailableException, FormatNotAvailableException, MalformedException,
// StorageNotFoundException, MetadataServiceException, ViewNotFoundException, TableNotFoundException {
//
// /* mock */
// when(mockHttpServletRequest.getHeader("Accept"))
// .thenReturn(accept.toString());
//
// /* test */
// final ResponseEntity<?> response = subsetEndpoint.findById(DATABASE_3_ID, subsetId, mockHttpServletRequest, timestamp);
// assertEquals(HttpStatus.OK, response.getStatusCode());
// assertNotNull(response.getBody());
// }
protected void generic_findById(Long subsetId, MediaType accept, Instant timestamp) throws UserNotFoundException,
DatabaseUnavailableException, StorageUnavailableException, QueryMalformedException, QueryNotFoundException,
DatabaseNotFoundException, RemoteUnavailableException, FormatNotAvailableException,
MetadataServiceException, TableNotFoundException, ViewMalformedException, SQLException {
/* mock */
when(mockHttpServletRequest.getHeader("Accept"))
.thenReturn(accept.toString());
/* test */
final ResponseEntity<?> response = subsetEndpoint.findById(DATABASE_3_ID, subsetId, mockHttpServletRequest, timestamp);
assertEquals(HttpStatus.OK, response.getStatusCode());
assertNotNull(response.getBody());
}
}
......@@ -4,9 +4,7 @@ import at.tuwien.api.database.query.QueryDto;
import at.tuwien.api.identifier.IdentifierDto;
import at.tuwien.config.MariaDbConfig;
import at.tuwien.config.MariaDbContainerConfig;
import at.tuwien.config.S3Config;
import at.tuwien.exception.*;
import at.tuwien.gateway.AnalyseServiceGateway;
import at.tuwien.gateway.MetadataServiceGateway;
import at.tuwien.test.AbstractUnitTest;
import lombok.extern.log4j.Log4j2;
......@@ -40,18 +38,9 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
@MockBean
private MetadataServiceGateway metadataServiceGateway;
@MockBean
private AnalyseServiceGateway dataDatabaseSidecarGateway;
@MockBean
private StorageService storageService;
@Container
private static MariaDBContainer<?> mariaDBContainer = MariaDbContainerConfig.getContainer();
@Autowired
private S3Config s3Config;
@BeforeEach
public void beforeEach() throws SQLException {
genesis();
......@@ -60,138 +49,6 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
MariaDbConfig.createInitDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_1_DTO);
}
// @Test
// public void execute_succeeds() throws QueryStoreInsertException, TableMalformedException, SQLException,
// QueryNotFoundException, UserNotFoundException, NotAllowedException, RemoteUnavailableException,
// MetadataServiceException, DatabaseNotFoundException, InterruptedException {
//
// /* pre-condition */
// Thread.sleep(1000) /* wait for test container some more */;
//
// /* mock */
// when(metadataServiceGateway.getUserById(QUERY_1_CREATED_BY))
// .thenReturn(QUERY_1_CREATOR);
//
// /* test */
// final QueryResultDto response = queryService.execute(DATABASE_1_PRIVILEGED_DTO, QUERY_1_STATEMENT, Instant.now(), USER_1_ID, 0L, 10L, null, null);
// assertNotNull(response);
// assertNotNull(response.getId());
// assertNotNull(response.getHeaders());
// assertEquals(5, response.getHeaders().size());
// assertEquals(List.of(Map.of("id", 0), Map.of("date", 1), Map.of("location", 2), Map.of("mintemp", 3), Map.of("rainfall", 4)), response.getHeaders());
// assertNotNull(response.getResult());
// assertEquals(3, response.getResult().size());
// /* row 0 */
// assertEquals(BigInteger.valueOf(1L), response.getResult().get(0).get("id"));
// assertEquals(Instant.ofEpochSecond(1228089600), response.getResult().get(0).get("date"));
// assertEquals("Albury", response.getResult().get(0).get("location"));
// assertEquals(13.4, response.getResult().get(0).get("mintemp"));
// assertEquals(0.6, response.getResult().get(0).get("rainfall"));
// /* row 1 */
// assertEquals(BigInteger.valueOf(2L), response.getResult().get(1).get("id"));
// assertEquals(Instant.ofEpochSecond(1228176000), response.getResult().get(1).get("date"));
// assertEquals("Albury", response.getResult().get(1).get("location"));
// assertEquals(7.4, response.getResult().get(1).get("mintemp"));
// assertEquals(0.0, response.getResult().get(1).get("rainfall"));
// /* row 2 */
// assertEquals(BigInteger.valueOf(3L), response.getResult().get(2).get("id"));
// assertEquals(Instant.ofEpochSecond(1228262400), response.getResult().get(2).get("date"));
// assertEquals("Albury", response.getResult().get(2).get("location"));
// assertEquals(12.9, response.getResult().get(2).get("mintemp"));
// assertEquals(0.0, response.getResult().get(2).get("rainfall"));
// }
//
// @Test
// public void execute_joinWithAlias_succeeds() throws QueryStoreInsertException, TableMalformedException,
// SQLException, QueryNotFoundException, UserNotFoundException, NotAllowedException,
// RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, InterruptedException {
//
// /* pre-condition */
// Thread.sleep(1000) /* wait for test container some more */;
//
// /* mock */
// when(metadataServiceGateway.getUserById(QUERY_1_CREATED_BY))
// .thenReturn(QUERY_1_CREATOR);
//
// /* test */
// final QueryResultDto response = queryService.execute(DATABASE_1_PRIVILEGED_DTO, QUERY_7_STATEMENT, Instant.now(), USER_1_ID, 0L, 10L, null, null);
// assertNotNull(response);
// assertNotNull(response.getId());
// assertNotNull(response.getHeaders());
// assertEquals(5, response.getHeaders().size());
// assertEquals(List.of(Map.of("id", 0), Map.of("date", 1), Map.of("location", 2), Map.of("lat", 3), Map.of("lng", 4)), response.getHeaders());
// assertNotNull(response.getResult());
// assertEquals(1, response.getResult().size());
// /* row 0 */
// assertEquals(BigInteger.valueOf(1L), response.getResult().get(0).get("id"));
// assertEquals(Instant.ofEpochSecond(1228089600), response.getResult().get(0).get("date"));
// assertEquals("Albury", response.getResult().get(0).get("location"));
// assertEquals(-36.0653583, response.getResult().get(0).get("lat"));
// assertEquals(146.9112214, response.getResult().get(0).get("lng"));
// }
//
// @Test
// public void execute_oneResult_succeeds() throws QueryStoreInsertException, TableMalformedException, SQLException,
// QueryNotFoundException, UserNotFoundException, NotAllowedException, RemoteUnavailableException,
// MetadataServiceException, DatabaseNotFoundException, InterruptedException {
//
// /* pre-condition */
// Thread.sleep(1000) /* wait for test container some more */;
//
// /* mock */
// when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, QUERY_1_ID))
// .thenReturn(List.of(IDENTIFIER_2_DTO));
// when(metadataServiceGateway.getUserById(QUERY_1_CREATED_BY))
// .thenReturn(QUERY_1_CREATOR);
//
// /* test */
// final QueryResultDto response = queryService.execute(DATABASE_1_PRIVILEGED_DTO, QUERY_1_STATEMENT, Instant.now(), USER_1_ID, 0L, 1L, null, null);
// assertNotNull(response);
// assertNotNull(response.getId());
// assertNotNull(response.getHeaders());
// assertEquals(5, response.getHeaders().size());
// assertEquals(List.of(Map.of("id", 0), Map.of("date", 1), Map.of("location", 2), Map.of("mintemp", 3), Map.of("rainfall", 4)), response.getHeaders());
// assertNotNull(response.getResult());
// assertEquals(1, response.getResult().size());
// /* row 0 */
// assertEquals(BigInteger.valueOf(1L), response.getResult().get(0).get("id"));
// assertEquals(Instant.ofEpochSecond(1228089600), response.getResult().get(0).get("date"));
// assertEquals("Albury", response.getResult().get(0).get("location"));
// assertEquals(13.4, response.getResult().get(0).get("mintemp"));
// assertEquals(0.6, response.getResult().get(0).get("rainfall"));
// }
//
// @Test
// public void execute_oneResultPagination_succeeds() throws QueryStoreInsertException, TableMalformedException,
// SQLException, QueryNotFoundException, UserNotFoundException, NotAllowedException,
// RemoteUnavailableException, MetadataServiceException, DatabaseNotFoundException, InterruptedException {
//
// /* pre-condition */
// Thread.sleep(1000) /* wait for test container some more */;
//
// /* mock */
// when(metadataServiceGateway.getUserById(USER_1_ID))
// .thenReturn(USER_1_DTO);
// when(metadataServiceGateway.getIdentifiers(eq(DATABASE_1_ID), anyLong()))
// .thenReturn(List.of());
//
// /* test */
// final QueryResultDto response = queryService.execute(DATABASE_1_PRIVILEGED_DTO, QUERY_1_STATEMENT, Instant.now(), USER_1_ID, 1L, 1L, null, null);
// assertNotNull(response);
// assertNotNull(response.getId());
// assertNotNull(response.getHeaders());
// assertEquals(5, response.getHeaders().size());
// assertEquals(List.of(Map.of("id", 0), Map.of("date", 1), Map.of("location", 2), Map.of("mintemp", 3), Map.of("rainfall", 4)), response.getHeaders());
// assertNotNull(response.getResult());
// assertEquals(1, response.getResult().size());
// /* row 1 */
// assertEquals(BigInteger.valueOf(2L), response.getResult().get(0).get("id"));
// assertEquals(Instant.ofEpochSecond(1228176000), response.getResult().get(0).get("date"));
// assertEquals("Albury", response.getResult().get(0).get("location"));
// assertEquals(7.4, response.getResult().get(0).get("mintemp"));
// assertEquals(0.0, response.getResult().get(0).get("rainfall"));
// }
@Test
public void findAll_succeeds() throws SQLException, QueryNotFoundException, RemoteUnavailableException,
MetadataServiceException, DatabaseNotFoundException, InterruptedException {
......@@ -291,18 +148,6 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
});
}
// @Test
// public void export_succeeds() throws SQLException, StorageUnavailableException, QueryMalformedException,
// RemoteUnavailableException, IOException, StorageNotFoundException, InterruptedException,
// AnalyseServiceException, ViewNotFoundException, MalformedException, TableNotFoundException {
//
// /* mock */
// MariaDbConfig.dropQueryStore(DATABASE_1_PRIVILEGED_DTO);
//
// /* test */
// export_generic();
// }
protected void findById_generic(Long queryId) throws RemoteUnavailableException, SQLException,
UserNotFoundException, QueryNotFoundException, MetadataServiceException, DatabaseNotFoundException,
InterruptedException {
......@@ -369,26 +214,4 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest {
assertEquals(0, response.size());
}
// protected void export_generic() throws StorageUnavailableException, SQLException, RemoteUnavailableException,
// QueryMalformedException, StorageNotFoundException, IOException, InterruptedException,
// AnalyseServiceException, ViewNotFoundException, MalformedException, TableNotFoundException {
// final String filename = RandomStringUtils.randomAlphanumeric(40).toLowerCase() + ".tmp";
// EXPORT_RESOURCE_DTO.setFilename(filename);
//
// /* pre-condition */
// Thread.sleep(1000) /* wait for test container some more */;
//
// /* mock */
// doNothing()
// .when(dataDatabaseSidecarGateway)
// .exportTable(anyLong(), anyLong());
// when(storageService.transformDataset(any(Dataset.class)))
// .thenReturn(EXPORT_RESOURCE_DTO);
//
// /* test */
// final ExportResourceDto response = queryService.export(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, Instant.now());
// assertEquals(filename, response.getFilename());
// assertNotNull(response.getResource().getInputStream());
// }
}
......@@ -16,7 +16,6 @@ import at.tuwien.api.database.table.internal.TableCreateDto;
import at.tuwien.config.MariaDbConfig;
import at.tuwien.config.MariaDbContainerConfig;
import at.tuwien.exception.*;
import at.tuwien.gateway.AnalyseServiceGateway;
import at.tuwien.gateway.MetadataServiceGateway;
import at.tuwien.test.AbstractUnitTest;
import lombok.extern.log4j.Log4j2;
......@@ -51,9 +50,6 @@ public class TableServiceIntegrationTest extends AbstractUnitTest {
@MockBean
private MetadataServiceGateway metadataServiceGateway;
@MockBean
private AnalyseServiceGateway dataDatabaseSidecarGateway;
@MockBean
private StorageService storageService;
......@@ -667,49 +663,6 @@ public class TableServiceIntegrationTest extends AbstractUnitTest {
});
}
// @Test
// public void getPaginatedData_succeeds() throws SQLException, TableMalformedException {
//
// /* test */
// final QueryResultDto response = tableService.getPaginatedData(TABLE_1_PRIVILEGED_DTO, null, 0L, 10L);
// assertEquals(TABLE_1_ID, response.getId());
// final List<Map<String, Integer>> headers = response.getHeaders();
// assertEquals(5, headers.size());
// assertEquals(0, headers.get(0).get("id"));
// assertEquals(1, headers.get(1).get("date"));
// assertEquals(2, headers.get(2).get("location"));
// assertEquals(3, headers.get(3).get("mintemp"));
// assertEquals(4, headers.get(4).get("rainfall"));
// final List<Map<String, Object>> result = response.getResult();
// assertEquals(Instant.ofEpochSecond(1228089600), result.get(0).get("date"));
// assertEquals(0.6, result.get(0).get("rainfall"));
// assertEquals("Albury", result.get(0).get("location"));
// assertEquals(BigInteger.valueOf(1L), result.get(0).get("id"));
// assertEquals(13.4, result.get(0).get("mintemp"));
// assertEquals(Instant.ofEpochSecond(1228176000), result.get(1).get("date"));
// assertEquals(0.0, result.get(1).get("rainfall"));
// assertEquals("Albury", result.get(1).get("location"));
// assertEquals(BigInteger.valueOf(2L), result.get(1).get("id"));
// assertEquals(7.4, result.get(1).get("mintemp"));
// assertEquals(Instant.ofEpochSecond(1228262400), result.get(2).get("date"));
// assertEquals(0.0, result.get(2).get("rainfall"));
// assertEquals("Albury", result.get(2).get("location"));
// assertEquals(BigInteger.valueOf(3L), result.get(2).get("id"));
// assertEquals(12.9, result.get(2).get("mintemp"));
// }
// @Test
// public void getPaginatedData_notFound_fails() throws SQLException {
//
// /* mock */
// MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME);
//
// /* test */
// assertThrows(TableMalformedException.class, () -> {
// tableService.getPaginatedData(TABLE_5_PRIVILEGED_DTO, null, 0L, 10L);
// });
// }
@Test
public void history_succeeds() throws SQLException, TableNotFoundException {
......@@ -734,36 +687,4 @@ public class TableServiceIntegrationTest extends AbstractUnitTest {
});
}
// @Test
// public void exportTable_succeeds() throws QueryMalformedException, RemoteUnavailableException,
// StorageNotFoundException, StorageUnavailableException, AnalyseServiceException, TableNotFoundException,
// MalformedException {
// final ExportResourceDto mock = ExportResourceDto.builder()
// .filename("weather_aus.csv")
// .resource(new InputStreamResource(InputStream.nullInputStream()))
// .build();
//
// /* mock */
// doNothing()
// .when(dataDatabaseSidecarGateway)
// .exportTable(anyLong(), anyLong());
// when(storageService.getResource("weather_aus.csv"))
// .thenReturn(mock);
//
// /* test */
// final ExportResourceDto response = tableService.exportDataset(TABLE_1_PRIVILEGED_DTO, null);
// }
//
// @Test
// public void exportDataset_malformedData_fails() throws SQLException {
//
// /* mock */
// MariaDbConfig.createDatabase(CONTAINER_1_PRIVILEGED_DTO, DATABASE_2_INTERNALNAME);
//
// /* test */
// assertThrows(QueryMalformedException.class, () -> {
// tableService.exportDataset(TABLE_5_PRIVILEGED_DTO, null);
// });
// }
}
......@@ -72,36 +72,6 @@ public class ViewServiceIntegrationTest extends AbstractUnitTest {
}
// @Test
// public void data_succeeds() throws SQLException, ViewMalformedException {
//
// /* test */
// final QueryResultDto response = viewService.data(VIEW_2_PRIVILEGED_DTO, Instant.now(), 0L, 10L);
// assertNotNull(response);
// assertNotNull(response.getId());
// assertEquals(VIEW_2_ID, response.getId());
// assertNotNull(response.getHeaders());
// assertEquals(4, response.getHeaders().size());
// assertEquals(List.of(Map.of("date", 0), Map.of("loc", 1), Map.of("mintemp", 2), Map.of("rainfall", 3)), response.getHeaders());
// assertNotNull(response.getResult());
// assertEquals(3, response.getResult().size());
// /* row 0 */
// assertEquals(Instant.ofEpochSecond(1228089600), response.getResult().get(0).get("date"));
// assertEquals("Albury", response.getResult().get(0).get("loc"));
// assertEquals(13.4, response.getResult().get(0).get("mintemp"));
// assertEquals(0.6, response.getResult().get(0).get("rainfall"));
// /* row 1 */
// assertEquals(Instant.ofEpochSecond(1228176000), response.getResult().get(1).get("date"));
// assertEquals("Albury", response.getResult().get(1).get("loc"));
// assertEquals(7.4, response.getResult().get(1).get("mintemp"));
// assertEquals(0.0, response.getResult().get(1).get("rainfall"));
// /* row 2 */
// assertEquals(Instant.ofEpochSecond(1228262400), response.getResult().get(2).get("date"));
// assertEquals("Albury", response.getResult().get(2).get("loc"));
// assertEquals(12.9, response.getResult().get(2).get("mintemp"));
// assertEquals(0.0, response.getResult().get(2).get("rainfall"));
// }
@Test
public void getSchemas_succeeds() throws SQLException, ViewNotFoundException, DatabaseMalformedException {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment