use of org.datatransferproject.types.common.ExportInformation in project data-transfer-project by google.
the class PortabilityInMemoryDataCopierTest method continuationDataWithPaginationData.
@Test
public void continuationDataWithPaginationData() throws CopyException, IOException {
// Arrange
PaginationData paginationData = Mockito.mock(PaginationData.class);
ExportInformation paginationExportInfo = new ExportInformation(paginationData, null);
Mockito.when(continuationData.getPaginationData()).thenReturn(paginationData);
Mockito.when(initialExportResult.getContinuationData()).thenReturn(continuationData);
Mockito.doReturn(initialExportResult).when(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(exportInfo), jobIdPrefix, 1);
// Act
inMemoryDataCopier.copy(exportAuthData, importAuthData, jobId, Optional.of(exportInfo));
// Assert
InOrder orderVerifier = Mockito.inOrder(inMemoryDataCopier);
orderVerifier.verify(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(exportInfo), jobIdPrefix, 1);
orderVerifier.verify(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(paginationExportInfo), jobIdPrefix, 2);
}
use of org.datatransferproject.types.common.ExportInformation in project data-transfer-project by google.
the class PortabilityInMemoryDataCopierTest method storeStackContainingPaginationDataAndMultipleSubResourcesInJobStore.
@Test
public void storeStackContainingPaginationDataAndMultipleSubResourcesInJobStore() throws CopyException, IOException {
// Arrange
PaginationData paginationData = Mockito.mock(PaginationData.class);
ContainerResource subResource1 = Mockito.mock(ContainerResource.class);
ContainerResource subResource2 = Mockito.mock(ContainerResource.class);
ExportInformation paginationExportInfo = new ExportInformation(paginationData, null);
ExportInformation subResource1ExportInfo = new ExportInformation(null, subResource1);
ExportInformation subResource2ExportInfo = new ExportInformation(null, subResource2);
Stack<ExportInformation> jobStack = new Stack<>();
jobStack.push(subResource2ExportInfo);
jobStack.push(subResource1ExportInfo);
jobStack.push(paginationExportInfo);
Mockito.when(continuationData.getPaginationData()).thenReturn(paginationData);
Mockito.when(continuationData.getContainerResources()).thenReturn(Arrays.asList(subResource1, subResource2));
Mockito.when(initialExportResult.getContinuationData()).thenReturn(continuationData);
Mockito.doReturn(initialExportResult).when(stackInMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(exportInfo), jobIdPrefix, 1);
// Act
stackInMemoryDataCopier.copy(exportAuthData, importAuthData, jobId, Optional.of(exportInfo));
// Assert
InOrder orderVerifier = Mockito.inOrder(stackInMemoryDataCopier.jobStore);
orderVerifier.verify(stackInMemoryDataCopier.jobStore).storeJobStack(jobId, jobStack);
jobStack.pop();
orderVerifier.verify(stackInMemoryDataCopier.jobStore).storeJobStack(jobId, jobStack);
jobStack.pop();
orderVerifier.verify(stackInMemoryDataCopier.jobStore).storeJobStack(jobId, jobStack);
jobStack.pop();
orderVerifier.verify(stackInMemoryDataCopier.jobStore).storeJobStack(jobId, jobStack);
}
use of org.datatransferproject.types.common.ExportInformation in project data-transfer-project by google.
the class PortabilityInMemoryDataCopierTest method continuationDataWithSingleSubResource.
@Test
public void continuationDataWithSingleSubResource() throws CopyException, IOException {
// Arrange
ContainerResource subResource = Mockito.mock(ContainerResource.class);
ExportInformation subResourceExportInfo = new ExportInformation(null, subResource);
Mockito.when(continuationData.getContainerResources()).thenReturn(Arrays.asList(subResource));
Mockito.when(initialExportResult.getContinuationData()).thenReturn(continuationData);
Mockito.doReturn(initialExportResult).when(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(exportInfo), jobIdPrefix, 1);
// Act
inMemoryDataCopier.copy(exportAuthData, importAuthData, jobId, Optional.of(exportInfo));
// Assert
InOrder orderVerifier = Mockito.inOrder(inMemoryDataCopier);
orderVerifier.verify(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(exportInfo), jobIdPrefix, 1);
orderVerifier.verify(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(subResourceExportInfo), jobIdPrefix, 2);
}
use of org.datatransferproject.types.common.ExportInformation in project data-transfer-project by google.
the class PortabilityInMemoryDataCopierTest method continuationDataWithPaginationDataAndNestedSubResource.
@Test
public void continuationDataWithPaginationDataAndNestedSubResource() throws CopyException, IOException {
// Arrange
PaginationData paginationData = Mockito.mock(PaginationData.class);
ContinuationData paginationContinuationData = Mockito.mock(ContinuationData.class);
ExportResult<?> paginationExportResult = Mockito.mock(ExportResult.class);
ContainerResource subResource = Mockito.mock(ContainerResource.class);
ContainerResource paginationSubResource = Mockito.mock(ContainerResource.class);
ExportInformation paginationExportInfo = new ExportInformation(paginationData, null);
ExportInformation subResourceExportInfo = new ExportInformation(null, subResource);
ExportInformation paginationSubResourceExportInfo = new ExportInformation(null, paginationSubResource);
Mockito.when(continuationData.getPaginationData()).thenReturn(paginationData);
Mockito.when(continuationData.getContainerResources()).thenReturn(Arrays.asList(subResource));
Mockito.when(paginationContinuationData.getContainerResources()).thenReturn(Arrays.asList(paginationSubResource));
Mockito.when(initialExportResult.getContinuationData()).thenReturn(continuationData);
Mockito.when(paginationExportResult.getContinuationData()).thenReturn(paginationContinuationData);
Mockito.doReturn(initialExportResult).when(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(exportInfo), jobIdPrefix, 1);
Mockito.doReturn(paginationExportResult).when(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(paginationExportInfo), jobIdPrefix, 2);
// Act
inMemoryDataCopier.copy(exportAuthData, importAuthData, jobId, Optional.of(exportInfo));
// Assert
InOrder orderVerifier = Mockito.inOrder(inMemoryDataCopier);
orderVerifier.verify(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(exportInfo), jobIdPrefix, 1);
orderVerifier.verify(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(paginationExportInfo), jobIdPrefix, 2);
orderVerifier.verify(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(paginationSubResourceExportInfo), jobIdPrefix, 3);
orderVerifier.verify(inMemoryDataCopier).copyIteration(jobId, exportAuthData, importAuthData, Optional.of(subResourceExportInfo), jobIdPrefix, 4);
}
use of org.datatransferproject.types.common.ExportInformation in project data-transfer-project by google.
the class CreateTransferJobAction method handle.
@Override
public TransferJob handle(CreateTransferJob request) {
String dataType = request.getDataType();
String exportService = request.getExportService();
String importService = request.getImportService();
Optional<ExportInformation> exportInformation = Optional.ofNullable(request.getExportInformation());
String exportCallbackUrl = request.getExportCallbackUrl();
String importCallbackUrl = request.getImportCallbackUrl();
// Create a new job and persist
UUID jobId = UUID.randomUUID();
SecretKey sessionKey = symmetricKeyGenerator.generate();
String encodedSessionKey = BaseEncoding.base64Url().encode(sessionKey.getEncoded());
String encryptionScheme = request.getEncryptionScheme();
PortabilityJob job;
try {
job = createJob(encodedSessionKey, dataType, exportService, importService, exportInformation, encryptionScheme);
} catch (IOException e) {
throw new RuntimeException(e);
}
AuthDataGenerator exportGenerator = registry.getAuthDataGenerator(job.exportService(), job.transferDataType(), EXPORT);
Preconditions.checkNotNull(exportGenerator, "Generator not found for type: %s, service: %s", job.transferDataType(), job.exportService());
AuthDataGenerator importGenerator = registry.getAuthDataGenerator(job.importService(), job.transferDataType(), IMPORT);
Preconditions.checkNotNull(importGenerator, "Generator not found for type: %s, service: %s", job.transferDataType(), job.importService());
try {
String encodedJobId = encodeJobId(jobId);
AuthFlowConfiguration exportConfiguration = exportGenerator.generateConfiguration(exportCallbackUrl, encodedJobId);
AuthFlowConfiguration importConfiguration = importGenerator.generateConfiguration(importCallbackUrl, encodedJobId);
job = setInitialAuthDataOnJob(sessionKey, job, exportConfiguration, importConfiguration);
jobStore.createJob(jobId, job);
monitor.debug(() -> format("Created new transfer of type '%s' from '%s' to '%s' with jobId: %s", dataType, exportService, importService, jobId), jobId, EventCode.API_JOB_CREATED);
return new TransferJob(encodedJobId, job.exportService(), job.importService(), job.transferDataType(), exportConfiguration.getAuthUrl(), importConfiguration.getAuthUrl(), exportConfiguration.getTokenUrl(), importConfiguration.getTokenUrl(), exportConfiguration.getAuthProtocol(), importConfiguration.getAuthProtocol());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Aggregations