Search in sources :

Example 11 with DataDeletionRequest

use of bio.terra.model.DataDeletionRequest in project jade-data-repo by DataBiosphere.

the class DatasetIntegrationTest method testSoftDeleteNotInFullView.

@Test
public void testSoftDeleteNotInFullView() throws Exception {
    datasetId = ingestedDataset();
    // get row ids
    DatasetModel dataset = dataRepoFixtures.getDataset(steward(), datasetId);
    BigQuery bigQuery = BigQueryFixtures.getBigQuery(dataset.getDataProject(), stewardToken);
    List<String> participantRowIds = getRowIds(bigQuery, dataset, "participant", 3L);
    List<String> sampleRowIds = getRowIds(bigQuery, dataset, "sample", 2L);
    // swap in these row ids in the request
    SnapshotRequestModel requestModelAll = jsonLoader.loadObject("ingest-test-snapshot-fullviews.json", SnapshotRequestModel.class);
    requestModelAll.getContents().get(0).datasetName(dataset.getName());
    SnapshotSummaryModel snapshotSummaryAll = dataRepoFixtures.createSnapshotWithRequest(steward(), dataset.getName(), requestModelAll);
    snapshotIds.add(snapshotSummaryAll.getId());
    SnapshotModel snapshotAll = dataRepoFixtures.getSnapshot(steward(), snapshotSummaryAll.getId());
    // The steward is the custodian in this case, so is a reader in big query.
    BigQuery bigQueryAll = BigQueryFixtures.getBigQuery(snapshotAll.getDataProject(), stewardToken);
    assertSnapshotTableCount(bigQueryAll, snapshotAll, "participant", 5L);
    assertSnapshotTableCount(bigQueryAll, snapshotAll, "sample", 7L);
    // write them to GCS
    String participantPath = writeListToScratch("softDel", participantRowIds);
    String samplePath = writeListToScratch("softDel", sampleRowIds);
    // build the deletion request with pointers to the two files with row ids to soft delete
    List<DataDeletionTableModel> dataDeletionTableModels = Arrays.asList(deletionTableFile("participant", participantPath), deletionTableFile("sample", samplePath));
    DataDeletionRequest request = dataDeletionRequest().tables(dataDeletionTableModels);
    // send off the soft delete request
    dataRepoFixtures.deleteData(steward(), datasetId, request);
    // make sure the new counts make sense
    assertTableCount(bigQuery, dataset, "participant", 2L);
    assertTableCount(bigQuery, dataset, "sample", 5L);
    // make full views snapshot
    SnapshotRequestModel requestModelLess = jsonLoader.loadObject("ingest-test-snapshot-fullviews.json", SnapshotRequestModel.class);
    requestModelLess.getContents().get(0).datasetName(dataset.getName());
    SnapshotSummaryModel snapshotSummaryLess = dataRepoFixtures.createSnapshotWithRequest(steward(), dataset.getName(), requestModelLess);
    snapshotIds.add(snapshotSummaryLess.getId());
    SnapshotModel snapshotLess = dataRepoFixtures.getSnapshot(steward(), snapshotSummaryLess.getId());
    BigQuery bigQueryLess = BigQueryFixtures.getBigQuery(snapshotLess.getDataProject(), stewardToken);
    // make sure the old counts stayed the same
    assertSnapshotTableCount(bigQueryAll, snapshotAll, "participant", 5L);
    assertSnapshotTableCount(bigQueryAll, snapshotAll, "sample", 7L);
    // make sure the new counts make sense
    assertSnapshotTableCount(bigQueryLess, snapshotLess, "participant", 2L);
    assertSnapshotTableCount(bigQueryLess, snapshotLess, "sample", 5L);
}
Also used : BigQuery(com.google.cloud.bigquery.BigQuery) SnapshotSummaryModel(bio.terra.model.SnapshotSummaryModel) DataDeletionRequest(bio.terra.model.DataDeletionRequest) EnumerateDatasetModel(bio.terra.model.EnumerateDatasetModel) DatasetModel(bio.terra.model.DatasetModel) SnapshotRequestModel(bio.terra.model.SnapshotRequestModel) SnapshotModel(bio.terra.model.SnapshotModel) DataDeletionTableModel(bio.terra.model.DataDeletionTableModel) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) Test(org.junit.Test)

Aggregations

DataDeletionRequest (bio.terra.model.DataDeletionRequest)11 Test (org.junit.Test)6 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)6 DataDeletionTableModel (bio.terra.model.DataDeletionTableModel)5 BlobInfo (com.google.cloud.storage.BlobInfo)4 Storage (com.google.cloud.storage.Storage)4 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)4 DatasetModel (bio.terra.model.DatasetModel)3 EnumerateDatasetModel (bio.terra.model.EnumerateDatasetModel)3 IngestRequestModel (bio.terra.model.IngestRequestModel)3 Dataset (bio.terra.service.dataset.Dataset)3 DataDeletionUtils.getDataset (bio.terra.service.dataset.flight.datadelete.DataDeletionUtils.getDataset)3 BigQuery (com.google.cloud.bigquery.BigQuery)3 ArrayList (java.util.ArrayList)2 MockHttpServletResponse (org.springframework.mock.web.MockHttpServletResponse)2 MvcResult (org.springframework.test.web.servlet.MvcResult)2 DataDeletionGcsFileModel (bio.terra.model.DataDeletionGcsFileModel)1 DeleteResponseModel (bio.terra.model.DeleteResponseModel)1 SnapshotModel (bio.terra.model.SnapshotModel)1 SnapshotRequestModel (bio.terra.model.SnapshotRequestModel)1