use of org.datatransferproject.spi.api.auth.extension.AuthServiceExtension in project data-transfer-project by google.
the class PortabilityAuthServiceExtensionRegistryTest method testGetExportServices1.
@Test
public void testGetExportServices1() {
List<String> supportedServiceTypes1 = ImmutableList.of("PHOTOS", "CONTACTS");
List<String> supportedServiceTypes2 = ImmutableList.of("CONTACTS");
AuthServiceExtension mockAuthProvider1 = getMockedAuthProvider(supportedServiceTypes1, supportedServiceTypes1, "mockAuthProvider1");
AuthServiceExtension mockAuthProvider2 = getMockedAuthProvider(supportedServiceTypes2, supportedServiceTypes2, "mockAuthProvider2");
AuthServiceProviderRegistry registry = new PortabilityAuthServiceProviderRegistry(ImmutableMap.of("mockServiceProvider1", mockAuthProvider1, "mockServiceProvider2", mockAuthProvider2));
Set<String> actual = registry.getExportServices("CONTACTS");
final String[] services = new String[] { "mockAuthProvider1", "mockAuthProvider2" };
Set<String> expected = new HashSet<>(Arrays.asList(services));
Assert.assertEquals(actual, expected);
}
use of org.datatransferproject.spi.api.auth.extension.AuthServiceExtension in project data-transfer-project by google.
the class ApiMain method initializeHttps.
public void initializeHttps(TrustManagerFactory trustManagerFactory, KeyManagerFactory keyManagerFactory, KeyStore keyStore) {
// TODO init with types
TypeManager typeManager = new TypeManagerImpl();
typeManager.registerTypes(TokenAuthData.class, TokensAndUrlAuthData.class, TokenSecretAuthData.class);
SettingsExtension settingsExtension = getSettingsExtension();
settingsExtension.initialize();
ApiExtensionContext extensionContext = new ApiExtensionContext(typeManager, settingsExtension, monitor);
if (trustManagerFactory != null) {
extensionContext.registerService(TrustManagerFactory.class, trustManagerFactory);
}
if (keyManagerFactory != null) {
extensionContext.registerService(KeyManagerFactory.class, keyManagerFactory);
}
if (keyStore != null) {
extensionContext.registerService(KeyStore.class, keyStore);
}
extensionContext.registerService(HttpTransport.class, new NetHttpTransport());
extensionContext.registerService(JsonFactory.class, new JacksonFactory());
// Services that need to be shared between authServiceExtensions or load types in the
// typemanager get initialized first.
serviceExtensions = new ArrayList<>();
ServiceLoader.load(ServiceExtension.class).iterator().forEachRemaining(serviceExtensions::add);
serviceExtensions.forEach((se) -> se.initialize(extensionContext));
CloudExtension cloudExtension = getCloudExtension();
cloudExtension.initialize(extensionContext);
// Needed for GoogleAuthServiceExtension
extensionContext.registerService(HttpTransport.class, new NetHttpTransport());
extensionContext.registerService(JobStore.class, cloudExtension.getJobStore());
extensionContext.registerService(TemporaryPerJobDataStore.class, cloudExtension.getJobStore());
extensionContext.registerService(AppCredentialStore.class, cloudExtension.getAppCredentialStore());
// TODO: Load up only "enabled" services
List<AuthServiceExtension> authServiceExtensions = new ArrayList<>();
ServiceLoader.load(AuthServiceExtension.class).iterator().forEachRemaining((authServiceExtension) -> {
authServiceExtension.initialize(extensionContext);
authServiceExtensions.add(authServiceExtension);
});
// TODO: make configurable
SymmetricKeyGenerator keyGenerator = new AesSymmetricKeyGenerator(monitor);
TokenManager tokenManager;
try {
// TODO: we store the JWT Token with the application credentials, but dont need to have a key
// consider using a blobstore type of thing or allowing the AppCredentialStore to return a
// cred that doesn't contain a key.
tokenManager = new JWTTokenManager(cloudExtension.getAppCredentialStore().getAppCredentials(JWTTokenManager.JWT_KEY_NAME, JWTTokenManager.JWT_SECRET_NAME).getSecret(), monitor);
} catch (IOException e) {
monitor.info(() -> "Unable to initialize JWTTokenManager, did you specify a JWT_KEY and JWT_SECRET?", e);
throw new RuntimeException(e);
}
Injector injector;
try {
injector = Guice.createInjector(new ApiServicesModule(typeManager, cloudExtension.getJobStore(), keyGenerator, trustManagerFactory, keyManagerFactory, authServiceExtensions, tokenManager, extensionContext));
} catch (Exception e) {
monitor.info(() -> "Error initializing Guice", e);
throw e;
}
extensionContext.registerService(Injector.class, injector);
bindActions(injector, extensionContext);
}
use of org.datatransferproject.spi.api.auth.extension.AuthServiceExtension in project data-transfer-project by google.
the class PortabilityAuthServiceExtensionRegistryTest method testGetExportServices2.
@Test
public void testGetExportServices2() {
List<String> supportedServiceTypes1 = ImmutableList.of("PHOTOS", "CONTACTS");
List<String> supportedServiceTypes2 = ImmutableList.of("CONTACTS");
AuthServiceExtension mockAuthProvider1 = getMockedAuthProvider(supportedServiceTypes1, supportedServiceTypes1, "mockAuthProvider1");
AuthServiceExtension mockAuthProvider2 = getMockedAuthProvider(supportedServiceTypes2, supportedServiceTypes2, "mockAuthProvider2");
AuthServiceProviderRegistry registry = new PortabilityAuthServiceProviderRegistry(ImmutableMap.of("mockServiceProvider1", mockAuthProvider1, "mockServiceProvider2", mockAuthProvider2));
Set<String> actual = registry.getExportServices("PHOTOS");
final String[] services = new String[] { "mockAuthProvider1" };
Set<String> expected = new HashSet<>(Arrays.asList(services));
Assert.assertEquals(actual, expected);
}
use of org.datatransferproject.spi.api.auth.extension.AuthServiceExtension in project data-transfer-project by google.
the class PortabilityAuthServiceExtensionRegistryTest method testGetImportServices2.
@Test
public void testGetImportServices2() {
List<String> supportedServiceTypes1 = ImmutableList.of("PHOTOS", "CONTACTS");
List<String> supportedServiceTypes2 = ImmutableList.of("CONTACTS");
AuthServiceExtension mockAuthProvider1 = getMockedAuthProvider(supportedServiceTypes1, supportedServiceTypes1, "mockAuthProvider1");
AuthServiceExtension mockAuthProvider2 = getMockedAuthProvider(supportedServiceTypes2, supportedServiceTypes2, "mockAuthProvider2");
AuthServiceProviderRegistry registry = new PortabilityAuthServiceProviderRegistry(ImmutableMap.of("mockServiceProvider1", mockAuthProvider1, "mockServiceProvider2", mockAuthProvider2));
Set<String> actual = registry.getImportServices("PHOTOS");
final String[] services = new String[] { "mockAuthProvider1" };
Set<String> expected = new HashSet<>(Arrays.asList(services));
Assert.assertEquals(actual, expected);
}
use of org.datatransferproject.spi.api.auth.extension.AuthServiceExtension in project data-transfer-project by google.
the class PortabilityAuthServiceExtensionRegistryTest method testGetAuthDataGenerator.
@Test
public void testGetAuthDataGenerator() {
List<String> supportedServiceTypes = ImmutableList.of("PHOTOS", "CONTACTS");
AuthServiceExtension mockAuthProvider = getMockedAuthProvider(supportedServiceTypes, supportedServiceTypes, "mockAuthProvider");
when(mockAuthProvider.getAuthDataGenerator("CONTACTS", AuthServiceProviderRegistry.AuthMode.EXPORT)).thenReturn(mock(AuthDataGenerator.class));
AuthServiceProviderRegistry registry = new PortabilityAuthServiceProviderRegistry(ImmutableMap.of("mockServiceProvider", mockAuthProvider));
AuthDataGenerator actual = registry.getAuthDataGenerator("mockServiceProvider", "CONTACTS", AuthServiceProviderRegistry.AuthMode.EXPORT);
Assert.assertNotNull(actual);
}
Aggregations