33package com.cosmotech.dataset.service
44
55import com.cosmotech.common.config.CsmPlatformProperties
6+ import com.cosmotech.common.config.existTable
67import com.cosmotech.common.exceptions.CsmAccessForbiddenException
78import com.cosmotech.common.exceptions.CsmResourceNotFoundException
89import com.cosmotech.common.rbac.ROLE_ADMIN
@@ -1022,7 +1023,7 @@ class DatasetServiceIntegrationTest() : CsmTestBase() {
10221023 }
10231024
10241025 @Test
1025- fun `test createDatasetPart` () {
1026+ fun `test createDatasetPart type FILE ` () {
10261027
10271028 val datasetCreateRequest = DatasetCreateRequest (name = " Dataset Test" )
10281029
@@ -1085,6 +1086,74 @@ class DatasetServiceIntegrationTest() : CsmTestBase() {
10851086 assertEquals(expectedText, retrievedText)
10861087 }
10871088
1089+ @Test
1090+ fun `test createDatasetPart type DB` () {
1091+
1092+ val datasetCreateRequest = DatasetCreateRequest (name = " Dataset Test" )
1093+
1094+ val createDataset =
1095+ datasetApiService.createDataset(
1096+ organizationSaved.id, workspaceSaved.id, datasetCreateRequest, arrayOf())
1097+
1098+ assertTrue(createDataset.parts.isEmpty())
1099+
1100+ val resourceTestFile = resourceLoader.getResource(" classpath:/$CUSTOMER_SOURCE_FILE_NAME " ).file
1101+
1102+ val fileToSend = FileInputStream (resourceTestFile)
1103+
1104+ val mockMultipartFile =
1105+ MockMultipartFile (
1106+ " file" ,
1107+ CUSTOMER_SOURCE_FILE_NAME ,
1108+ MediaType .MULTIPART_FORM_DATA_VALUE ,
1109+ IOUtils .toByteArray(fileToSend))
1110+
1111+ val datasetPartName = " Customer list"
1112+ val datasetPartDescription = " List of customers"
1113+ val datasetPartTags = mutableListOf (" part" , " public" , " customers" )
1114+
1115+ val createDatasetPart =
1116+ datasetApiService.createDatasetPart(
1117+ organizationSaved.id,
1118+ workspaceSaved.id,
1119+ createDataset.id,
1120+ mockMultipartFile,
1121+ DatasetPartCreateRequest (
1122+ name = datasetPartName,
1123+ sourceName = CUSTOMER_SOURCE_FILE_NAME ,
1124+ description = datasetPartDescription,
1125+ tags = datasetPartTags,
1126+ type = DatasetPartTypeEnum .Relational ))
1127+
1128+ assertNotNull(createDatasetPart)
1129+ assertEquals(datasetPartName, createDatasetPart.name)
1130+ assertEquals(datasetPartDescription, createDatasetPart.description)
1131+ assertEquals(datasetPartTags, createDatasetPart.tags)
1132+ assertEquals(CUSTOMER_SOURCE_FILE_NAME , createDatasetPart.sourceName)
1133+
1134+ val retrievedDataset =
1135+ datasetApiService.getDataset(organizationSaved.id, workspaceSaved.id, createDataset.id)
1136+
1137+ assertTrue(retrievedDataset.parts.isNotEmpty())
1138+ assertTrue(retrievedDataset.parts.size == 1 )
1139+ assertEquals(createDatasetPart, retrievedDataset.parts[0 ])
1140+
1141+ val fileKeyPath = constructFilePathForDatasetPart(retrievedDataset, 0 )
1142+
1143+ writerJdbcTemplate.queryForList(" select * from pg_tables where schemaname='inputs'" ).forEach {
1144+ logger.error(" Size : ${it.size} " )
1145+ it.forEach { (key, value) -> logger.error(" $key : $value " ) }
1146+ }
1147+ assertTrue(writerJdbcTemplate.existTable(createDatasetPart.id.replace(' -' , ' _' )))
1148+
1149+ val datasetPartFile =
1150+ datasetApiService.downloadDatasetPart(
1151+ organizationSaved.id, workspaceSaved.id, createDataset.id, createDatasetPart.id)
1152+ val expectedText = FileInputStream (resourceTestFile).bufferedReader().use { it.readText() }
1153+ val retrievedText = datasetPartFile.inputStream.bufferedReader().use { it.readText() }
1154+ assertEquals(expectedText, retrievedText)
1155+ }
1156+
10881157 @Test
10891158 fun `test createDatasetPart with unallowed mimetype` () {
10901159
@@ -1233,8 +1302,65 @@ class DatasetServiceIntegrationTest() : CsmTestBase() {
12331302 exception.message)
12341303 }
12351304
1305+ @Test
1306+ fun `test deleteDatasetPart FILE` () {
1307+
1308+ val datasetCreateRequest = DatasetCreateRequest (name = " Dataset Test" )
1309+
1310+ val createDataset =
1311+ datasetApiService.createDataset(
1312+ organizationSaved.id, workspaceSaved.id, datasetCreateRequest, arrayOf())
1313+
1314+ assertTrue(createDataset.parts.isEmpty())
1315+
1316+ val resourceTestFile = resourceLoader.getResource(" classpath:/$CUSTOMER_SOURCE_FILE_NAME " ).file
1317+
1318+ val fileToSend = FileInputStream (resourceTestFile)
1319+
1320+ val mockMultipartFile =
1321+ MockMultipartFile (
1322+ " file" ,
1323+ CUSTOMER_SOURCE_FILE_NAME ,
1324+ MediaType .MULTIPART_FORM_DATA_VALUE ,
1325+ IOUtils .toByteArray(fileToSend))
1326+
1327+ val datasetPartName = " Customer list"
1328+ val datasetPartDescription = " List of customers"
1329+ val datasetPartTags = mutableListOf (" part" , " public" , " customers" )
1330+
1331+ val createDatasetPart =
1332+ datasetApiService.createDatasetPart(
1333+ organizationSaved.id,
1334+ workspaceSaved.id,
1335+ createDataset.id,
1336+ mockMultipartFile,
1337+ DatasetPartCreateRequest (
1338+ name = datasetPartName,
1339+ sourceName = CUSTOMER_SOURCE_FILE_NAME ,
1340+ description = datasetPartDescription,
1341+ tags = datasetPartTags,
1342+ type = DatasetPartTypeEnum .File ))
1343+
1344+ assertNotNull(createDatasetPart)
1345+ datasetApiService.deleteDatasetPart(
1346+ organizationSaved.id, workspaceSaved.id, createDataset.id, createDatasetPart.id)
1347+
1348+ val retrievedDataset =
1349+ datasetApiService.getDataset(organizationSaved.id, workspaceSaved.id, createDataset.id)
1350+
1351+ assertTrue(retrievedDataset.parts.isEmpty())
1352+
1353+ val deletedFileKeyPath =
1354+ retrievedDataset.organizationId +
1355+ " /${retrievedDataset.workspaceId} " +
1356+ " /${retrievedDataset.id} " +
1357+ " /${createDatasetPart.id} " +
1358+ " /${createDatasetPart.sourceName} "
1359+
1360+ assertFalse(s3Template.objectExists(csmPlatformProperties.s3.bucketName, deletedFileKeyPath))
1361+ }
12361362 @Test
1237- fun `test deleteDatasetPart` () {
1363+ fun `test deleteDatasetPart DB ` () {
12381364
12391365 val datasetCreateRequest = DatasetCreateRequest (name = " Dataset Test" )
12401366
@@ -1270,7 +1396,7 @@ class DatasetServiceIntegrationTest() : CsmTestBase() {
12701396 sourceName = CUSTOMER_SOURCE_FILE_NAME ,
12711397 description = datasetPartDescription,
12721398 tags = datasetPartTags,
1273- type = DatasetPartTypeEnum .File ))
1399+ type = DatasetPartTypeEnum .Relational ))
12741400
12751401 assertNotNull(createDatasetPart)
12761402 datasetApiService.deleteDatasetPart(
@@ -1281,14 +1407,7 @@ class DatasetServiceIntegrationTest() : CsmTestBase() {
12811407
12821408 assertTrue(retrievedDataset.parts.isEmpty())
12831409
1284- val deletedFileKeyPath =
1285- retrievedDataset.organizationId +
1286- " /${retrievedDataset.workspaceId} " +
1287- " /${retrievedDataset.id} " +
1288- " /${createDatasetPart.id} " +
1289- " /${createDatasetPart.sourceName} "
1290-
1291- assertFalse(s3Template.objectExists(csmPlatformProperties.s3.bucketName, deletedFileKeyPath))
1410+ assertFalse(writerJdbcTemplate.existTable(createDatasetPart.id.replace(' -' , ' _' )))
12921411 }
12931412
12941413 @Test
0 commit comments