use of org.dataportabilityproject.spi.transfer.provider.ImportResult in project data-transfer-project by google.
the class FlickrPhotosImporterTest method importStoresAlbumInJobStore.
@Test
public void importStoresAlbumInJobStore() throws FlickrException, IOException {
UUID jobId = UUID.randomUUID();
PhotosContainerResource photosContainerResource = new PhotosContainerResource(Collections.singletonList(PHOTO_ALBUM), Collections.singletonList(PHOTO_MODEL));
// Setup Mock
when(user.getId()).thenReturn("userId");
when(authInterface.checkToken(any(Token.class))).thenReturn(auth);
when(flickr.getPhotosetsInterface()).thenReturn(photosetsInterface);
when(flickr.getUploader()).thenReturn(uploader);
when(flickr.getAuthInterface()).thenReturn(authInterface);
when(imageStreamProvider.get(FETCHABLE_URL)).thenReturn(bufferedInputStream);
when(uploader.upload(any(BufferedInputStream.class), any(UploadMetaData.class))).thenReturn(FLICKR_PHOTO_ID);
String flickrAlbumTitle = FlickrPhotosImporter.COPY_PREFIX + ALBUM_NAME;
Photoset photoset = FlickrTestUtils.initializePhotoset(FLICKR_ALBUM_ID, ALBUM_DESCRIPTION, FLICKR_PHOTO_ID);
when(photosetsInterface.create(flickrAlbumTitle, ALBUM_DESCRIPTION, FLICKR_PHOTO_ID)).thenReturn(photoset);
// Run test
FlickrPhotosImporter importer = new FlickrPhotosImporter(flickr, jobStore, imageStreamProvider);
ImportResult result = importer.importItem(jobId, new TokenSecretAuthData("token", "secret"), photosContainerResource);
// Verify that the image stream provider got the correct URL and that the correct info was uploaded
verify(imageStreamProvider).get(FETCHABLE_URL);
ArgumentCaptor<UploadMetaData> uploadMetaDataArgumentCaptor = ArgumentCaptor.forClass(UploadMetaData.class);
verify(uploader).upload(eq(bufferedInputStream), uploadMetaDataArgumentCaptor.capture());
UploadMetaData actualUploadMetaData = uploadMetaDataArgumentCaptor.getValue();
assertThat(actualUploadMetaData.getTitle()).isEqualTo(FlickrPhotosImporter.COPY_PREFIX + PHOTO_TITLE);
assertThat(actualUploadMetaData.getDescription()).isEqualTo(PHOTO_DESCRIPTION);
// Verify the photosets interface got the command to create the correct album
verify(photosetsInterface).create(flickrAlbumTitle, ALBUM_DESCRIPTION, FLICKR_PHOTO_ID);
// Check contents of JobStore
TempPhotosData tempPhotosData = jobStore.findData(TempPhotosData.class, jobId);
assertThat(tempPhotosData).isNotNull();
String expectedAlbumKey = FlickrPhotosImporter.CACHE_ALBUM_METADATA_PREFIX + ALBUM_ID;
assertThat(tempPhotosData.lookupAlbum(expectedAlbumKey)).isNotNull();
assertThat(tempPhotosData.lookupAlbum(expectedAlbumKey)).isEqualTo(PHOTO_ALBUM);
assertThat(tempPhotosData.lookupNewAlbumId(ALBUM_ID)).isEqualTo(FLICKR_ALBUM_ID);
}
use of org.dataportabilityproject.spi.transfer.provider.ImportResult in project data-transfer-project by google.
the class LocalImportTestRunner method main.
@SuppressWarnings("unchecked")
public static void main(String... args) throws Exception {
AuthTestDriver authTestDriver = new AuthTestDriver();
MicrosoftTransferExtension serviceProvider = new MicrosoftTransferExtension();
TokenAuthData token = authTestDriver.getOAuthTokenCode();
Importer<TokenAuthData, ContactsModelWrapper> contacts = (Importer<TokenAuthData, ContactsModelWrapper>) serviceProvider.getImporter("contacts");
ContactsModelWrapper wrapper = new ContactsModelWrapper(createCards());
ImportResult result = contacts.importItem(UUID.randomUUID(), token, wrapper);
}
use of org.dataportabilityproject.spi.transfer.provider.ImportResult in project data-transfer-project by google.
the class MicrosoftCalendarImportTest method testImport.
@Test
@SuppressWarnings("unchecked")
public void testImport() throws Exception {
server.enqueue(new MockResponse().setBody(BATCH_CALENDAR_RESPONSE));
server.enqueue(new MockResponse().setResponseCode(201).setBody(BATCH_EVENT_RESPONSE));
server.start();
HttpUrl baseUrl = server.url("");
MicrosoftCalendarImporter importer = new MicrosoftCalendarImporter(baseUrl.toString(), client, mapper, transformerService, jobStore);
CalendarModel calendarModel = new CalendarModel("OldId1", "name", "name");
CalendarAttendeeModel attendeeModel = new CalendarAttendeeModel("Test Attendee", "test@test.com", false);
CalendarEventModel.CalendarEventTime start = new CalendarEventModel.CalendarEventTime(ZonedDateTime.now(ZoneId.of("GMT")).toOffsetDateTime(), false);
CalendarEventModel.CalendarEventTime end = new CalendarEventModel.CalendarEventTime(ZonedDateTime.now(ZoneId.of("GMT")).toOffsetDateTime(), false);
CalendarEventModel eventModel = new CalendarEventModel("OldId1", "Event1", "Test Notes", singletonList(attendeeModel), "Location1", start, end);
CalendarContainerResource resource = new CalendarContainerResource(singleton(calendarModel), singleton(eventModel));
ImportResult result = importer.importItem(JOB_ID, token, resource);
Assert.assertEquals(ImportResult.ResultType.OK, result.getType());
// verify the batch calendar request
RecordedRequest calendarBatch = server.takeRequest();
Map<String, Object> calendarBody = (Map<String, Object>) mapper.readValue(calendarBatch.getBody().readUtf8(), Map.class);
List<Map<String, Object>> calendarRequests = (List<Map<String, Object>>) calendarBody.get("requests");
Assert.assertNotNull(calendarRequests);
Assert.assertEquals(1, calendarRequests.size());
Map<String, Object> calendarRequest = calendarRequests.get(0);
Assert.assertNotNull(calendarRequest.get("headers"));
Assert.assertEquals("POST", calendarRequest.get("method"));
Assert.assertEquals("/v1.0/me/calendars", calendarRequest.get("url"));
Map<String, Object> calendarRequestBody = (Map<String, Object>) calendarRequest.get("body");
Assert.assertNotNull(calendarRequestBody);
Assert.assertEquals("name", calendarRequestBody.get("name"));
// verify the calendar id mapping from old id to new id was saved
Assert.assertEquals("NewId1", jobStore.findData(TempCalendarData.class, JOB_ID).getImportedId("OldId1"));
// verify the batch event request
RecordedRequest eventBatch = server.takeRequest();
Map<String, Object> eventRequests = (Map<String, Object>) mapper.readValue(eventBatch.getBody().readUtf8(), Map.class);
Map<String, Object> eventRequest = (Map<String, Object>) ((List<Map<String, Object>>) eventRequests.get("requests")).get(0);
Assert.assertNotNull(eventRequest.get("headers"));
Assert.assertEquals("POST", eventRequest.get("method"));
Assert.assertEquals("/v1.0/me/calendars/NewId1/events", // verify the URL is contructed correctly with NewId
eventRequest.get("url"));
Map<String, Object> eventRequestBody = (Map<String, Object>) eventRequest.get("body");
Assert.assertNotNull(eventRequestBody);
Assert.assertEquals("Event1", eventRequestBody.get("subject"));
Map<String, Object> location = (Map<String, Object>) eventRequestBody.get("location");
Assert.assertEquals("Location1", location.get("displayName"));
Assert.assertEquals("Default", location.get("locationType"));
Map<String, Object> body = (Map<String, Object>) eventRequestBody.get("body");
Assert.assertEquals("Test Notes", body.get("content"));
Assert.assertEquals("HTML", body.get("contentType"));
List<Map<String, Object>> attendees = (List<Map<String, Object>>) eventRequestBody.get("attendees");
Assert.assertEquals(1, attendees.size());
Map<String, Object> attendee = (Map<String, Object>) attendees.get(0);
Assert.assertEquals("required", attendee.get("type"));
Map<String, Object> emailAddress = (Map<String, Object>) attendee.get("emailAddress");
Assert.assertEquals("test@test.com", emailAddress.get("address"));
Assert.assertEquals("Test Attendee", emailAddress.get("name"));
// verify dates
Map<String, Object> startDate = (Map<String, Object>) eventRequestBody.get("start");
Assert.assertNotNull(startDate.get("dateTime"));
Assert.assertEquals("UTC", startDate.get("timeZone"));
Map<String, Object> endDate = (Map<String, Object>) eventRequestBody.get("end");
Assert.assertNotNull(endDate.get("dateTime"));
Assert.assertEquals("UTC", endDate.get("timeZone"));
}
use of org.dataportabilityproject.spi.transfer.provider.ImportResult in project data-transfer-project by google.
the class MicrosoftContactsImporter method importItem.
@Override
public ImportResult importItem(UUID jobId, TokenAuthData authData, ContactsModelWrapper wrapper) {
JCardReader reader = new JCardReader(wrapper.getVCards());
try {
List<VCard> cards = reader.readAll();
List<String> problems = new ArrayList<>();
int[] id = new int[] { 1 };
List<Map<String, Object>> requests = cards.stream().map(card -> {
TransformResult<LinkedHashMap> result = transformerService.transform(LinkedHashMap.class, card);
problems.addAll(result.getProblems());
LinkedHashMap contact = result.getTransformed();
Map<String, Object> request = createRequest(id[0], CONTACTS_URL, contact);
id[0]++;
return request;
}).collect(toList());
if (!problems.isEmpty()) {
// TODO log problems
}
return batchRequest(authData, requests, baseUrl, client, objectMapper).getResult();
} catch (IOException e) {
// TODO log
e.printStackTrace();
return new ImportResult(ImportResult.ResultType.ERROR, "Error deserializing contacts: " + e.getMessage());
}
}
Aggregations