Skip to content

Commit fe397ec

Browse files
committed
Use CDI for more test setups
this avoids a bunch of redundant manual setup. the important parts are establishing a `RealmContext` by calling `QuarkusMock.installMockForType` and then populating `polarisContext` from the injected `CallContext`.
1 parent fa47229 commit fe397ec

File tree

8 files changed

+39
-137
lines changed

8 files changed

+39
-137
lines changed

runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAuthzTestBase.java

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@
7171
import org.apache.polaris.core.entity.PrincipalEntity;
7272
import org.apache.polaris.core.entity.PrincipalRoleEntity;
7373
import org.apache.polaris.core.identity.provider.ServiceIdentityProvider;
74-
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
7574
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
7675
import org.apache.polaris.core.persistence.dao.entity.BaseResult;
7776
import org.apache.polaris.core.persistence.dao.entity.PrivilegeResult;
@@ -80,7 +79,6 @@
8079
import org.apache.polaris.core.persistence.resolver.ResolverFactory;
8180
import org.apache.polaris.core.policy.PredefinedPolicyTypes;
8281
import org.apache.polaris.core.secrets.UserSecretsManager;
83-
import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
8482
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
8583
import org.apache.polaris.service.catalog.PolarisPassthroughResolutionView;
8684
import org.apache.polaris.service.catalog.Profiles;
@@ -91,7 +89,6 @@
9189
import org.apache.polaris.service.catalog.io.StorageAccessConfigProvider;
9290
import org.apache.polaris.service.catalog.policy.PolicyCatalog;
9391
import org.apache.polaris.service.config.ReservedProperties;
94-
import org.apache.polaris.service.context.catalog.CallContextCatalogFactory;
9592
import org.apache.polaris.service.context.catalog.PolarisCallContextCatalogFactory;
9693
import org.apache.polaris.service.events.listeners.PolarisEventListener;
9794
import org.apache.polaris.service.storage.PolarisStorageIntegrationProviderImpl;
@@ -190,10 +187,7 @@ public Map<String, String> getConfigOverrides() {
190187
required(4, "data", Types.StringType.get()));
191188
protected final ReservedProperties reservedProperties = ReservedProperties.NONE;
192189

193-
@Inject protected MetaStoreManagerFactory managerFactory;
194190
@Inject protected ResolutionManifestFactory resolutionManifestFactory;
195-
@Inject protected CallContextCatalogFactory callContextCatalogFactory;
196-
@Inject protected UserSecretsManagerFactory userSecretsManagerFactory;
197191
@Inject protected ServiceIdentityProvider serviceIdentityProvider;
198192
@Inject protected PolarisCredentialManager credentialManager;
199193
@Inject protected PolarisDiagnostics diagServices;
@@ -204,21 +198,20 @@ public Map<String, String> getConfigOverrides() {
204198
@Inject protected StorageCredentialCache storageCredentialCache;
205199
@Inject protected ResolverFactory resolverFactory;
206200
@Inject protected StorageAccessConfigProvider storageAccessConfigProvider;
201+
@Inject protected PolarisMetaStoreManager metaStoreManager;
202+
@Inject protected UserSecretsManager userSecretsManager;
203+
@Inject protected CallContext callContext;
204+
@Inject protected RealmConfig realmConfig;
207205

208206
protected IcebergCatalog baseCatalog;
209207
protected PolarisGenericTableCatalog genericTableCatalog;
210208
protected PolicyCatalog policyCatalog;
211209
protected PolarisAdminService adminService;
212-
protected PolarisMetaStoreManager metaStoreManager;
213-
protected UserSecretsManager userSecretsManager;
214210
protected PolarisBaseEntity catalogEntity;
215211
protected PolarisBaseEntity federatedCatalogEntity;
216212
protected PrincipalEntity principalEntity;
217-
protected CallContext callContext;
218-
protected RealmConfig realmConfig;
219213
protected PolarisPrincipal authenticatedRoot;
220214
protected PolarisAuthorizer polarisAuthorizer;
221-
222215
protected PolarisCallContext polarisContext;
223216

224217
@BeforeAll
@@ -238,19 +231,12 @@ public void before(TestInfo testInfo) {
238231

239232
RealmContext realmContext = testInfo::getDisplayName;
240233
QuarkusMock.installMockForType(realmContext, RealmContext.class);
234+
polarisContext = callContext.getPolarisCallContext();
235+
241236
ContainerRequestContext containerRequestContext = Mockito.mock(ContainerRequestContext.class);
242237
Mockito.when(containerRequestContext.getProperty(Mockito.anyString()))
243238
.thenReturn("request-id-1");
244239
QuarkusMock.installMockForType(containerRequestContext, ContainerRequestContext.class);
245-
metaStoreManager = managerFactory.getOrCreateMetaStoreManager(realmContext);
246-
userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext);
247-
248-
polarisContext =
249-
new PolarisCallContext(
250-
realmContext, managerFactory.getOrCreateSession(realmContext), configurationStore);
251-
252-
callContext = polarisContext;
253-
realmConfig = polarisContext.getRealmConfig();
254240

255241
polarisAuthorizer = new PolarisAuthorizerImpl(realmConfig);
256242

runtime/service/src/test/java/org/apache/polaris/service/auth/internal/broker/JWTSymmetricKeyGeneratorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class JWTSymmetricKeyGeneratorTest {
3939
/** Sanity test to verify that we can generate a token */
4040
@Test
4141
public void testJWTSymmetricKeyGenerator() {
42-
PolarisCallContext polarisCallContext = new PolarisCallContext(null, null, null);
42+
PolarisCallContext polarisCallContext = Mockito.mock(PolarisCallContext.class);
4343
PolarisMetaStoreManager metastoreManager = Mockito.mock(PolarisMetaStoreManager.class);
4444
long principalId = 123L;
4545
String mainSecret = "test_secret";

runtime/service/src/test/java/org/apache/polaris/service/auth/internal/broker/RSAKeyPairJWTBrokerTest.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,10 @@
2424
import com.auth0.jwt.JWTVerifier;
2525
import com.auth0.jwt.algorithms.Algorithm;
2626
import com.auth0.jwt.interfaces.DecodedJWT;
27-
import io.quarkus.test.junit.QuarkusTest;
28-
import jakarta.inject.Inject;
2927
import java.security.interfaces.RSAPrivateKey;
3028
import java.security.interfaces.RSAPublicKey;
3129
import java.util.Optional;
3230
import org.apache.polaris.core.PolarisCallContext;
33-
import org.apache.polaris.core.config.PolarisConfigurationStore;
3431
import org.apache.polaris.core.entity.PolarisPrincipalSecrets;
3532
import org.apache.polaris.core.entity.PrincipalEntity;
3633
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
@@ -39,11 +36,8 @@
3936
import org.junit.jupiter.api.Test;
4037
import org.mockito.Mockito;
4138

42-
@QuarkusTest
4339
public class RSAKeyPairJWTBrokerTest {
4440

45-
@Inject protected PolarisConfigurationStore configurationStore;
46-
4741
@Test
4842
public void testSuccessfulTokenGeneration() throws Exception {
4943
var keyPair = PemUtils.generateKeyPair();
@@ -52,7 +46,7 @@ public void testSuccessfulTokenGeneration() throws Exception {
5246
final String clientId = "test-client-id";
5347
final String scope = "PRINCIPAL_ROLE:TEST";
5448

55-
PolarisCallContext polarisCallContext = new PolarisCallContext(null, null, configurationStore);
49+
PolarisCallContext polarisCallContext = Mockito.mock(PolarisCallContext.class);
5650
PolarisMetaStoreManager metastoreManager = Mockito.mock(PolarisMetaStoreManager.class);
5751
String mainSecret = "client-secret";
5852
PolarisPrincipalSecrets principalSecrets =

runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/AbstractPolarisGenericTableCatalogTest.java

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -44,23 +44,20 @@
4444
import org.apache.polaris.core.auth.PolarisAuthorizerImpl;
4545
import org.apache.polaris.core.auth.PolarisPrincipal;
4646
import org.apache.polaris.core.config.FeatureConfiguration;
47-
import org.apache.polaris.core.config.PolarisConfigurationStore;
4847
import org.apache.polaris.core.config.RealmConfig;
48+
import org.apache.polaris.core.context.CallContext;
4949
import org.apache.polaris.core.context.RealmContext;
5050
import org.apache.polaris.core.entity.CatalogEntity;
5151
import org.apache.polaris.core.entity.PolarisEntity;
5252
import org.apache.polaris.core.entity.PrincipalEntity;
5353
import org.apache.polaris.core.entity.table.GenericTableEntity;
5454
import org.apache.polaris.core.identity.provider.ServiceIdentityProvider;
55-
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
5655
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
5756
import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory;
5857
import org.apache.polaris.core.persistence.resolver.ResolverFactory;
5958
import org.apache.polaris.core.secrets.UserSecretsManager;
60-
import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
6159
import org.apache.polaris.core.storage.PolarisStorageIntegration;
6260
import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
63-
import org.apache.polaris.core.storage.StorageCredentialsVendor;
6461
import org.apache.polaris.core.storage.aws.AwsCredentialsStorageIntegration;
6562
import org.apache.polaris.core.storage.aws.AwsStorageConfigurationInfo;
6663
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
@@ -98,29 +95,27 @@ public abstract class AbstractPolarisGenericTableCatalogTest {
9895
public static final String SECRET_ACCESS_KEY = "secret_access_key";
9996
public static final String SESSION_TOKEN = "session_token";
10097

101-
@Inject MetaStoreManagerFactory metaStoreManagerFactory;
102-
@Inject UserSecretsManagerFactory userSecretsManagerFactory;
10398
@Inject ServiceIdentityProvider serviceIdentityProvider;
104-
@Inject PolarisConfigurationStore configurationStore;
10599
@Inject StorageCredentialCache storageCredentialCache;
106100
@Inject PolarisStorageIntegrationProvider storageIntegrationProvider;
107101
@Inject PolarisDiagnostics diagServices;
108102
@Inject ResolverFactory resolverFactory;
109103
@Inject ResolutionManifestFactory resolutionManifestFactory;
104+
@Inject PolarisMetaStoreManager metaStoreManager;
105+
@Inject UserSecretsManager userSecretsManager;
106+
@Inject CallContext callContext;
107+
@Inject RealmConfig realmConfig;
108+
@Inject StorageAccessConfigProvider storageAccessConfigProvider;
110109

111110
private PolarisGenericTableCatalog genericTableCatalog;
112111
private IcebergCatalog icebergCatalog;
113112
private AwsStorageConfigInfo storageConfigModel;
114113
private String realmName;
115-
private PolarisMetaStoreManager metaStoreManager;
116-
private UserSecretsManager userSecretsManager;
117114
private PolarisCallContext polarisContext;
118-
private RealmConfig realmConfig;
119115
private PolarisAdminService adminService;
120116
private FileIOFactory fileIOFactory;
121117
private PolarisPrincipal authenticatedRoot;
122118
private PolarisEntity catalogEntity;
123-
private StorageAccessConfigProvider storageAccessConfigProvider;
124119

125120
protected static final Schema SCHEMA =
126121
new Schema(
@@ -149,18 +144,7 @@ public void before(TestInfo testInfo) {
149144

150145
RealmContext realmContext = () -> realmName;
151146
QuarkusMock.installMockForType(realmContext, RealmContext.class);
152-
metaStoreManager = metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext);
153-
userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext);
154-
polarisContext =
155-
new PolarisCallContext(
156-
realmContext,
157-
metaStoreManagerFactory.getOrCreateSession(realmContext),
158-
configurationStore);
159-
realmConfig = polarisContext.getRealmConfig();
160-
StorageCredentialsVendor storageCredentialsVendor =
161-
new StorageCredentialsVendor(metaStoreManager, polarisContext);
162-
storageAccessConfigProvider =
163-
new StorageAccessConfigProvider(storageCredentialCache, storageCredentialsVendor);
147+
polarisContext = callContext.getPolarisCallContext();
164148

165149
PrincipalEntity rootPrincipal =
166150
metaStoreManager.findRootPrincipal(polarisContext).orElseThrow();

runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogTest.java

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@
9999
import org.apache.polaris.core.auth.PolarisAuthorizerImpl;
100100
import org.apache.polaris.core.auth.PolarisPrincipal;
101101
import org.apache.polaris.core.config.FeatureConfiguration;
102-
import org.apache.polaris.core.config.PolarisConfigurationStore;
103102
import org.apache.polaris.core.config.RealmConfig;
103+
import org.apache.polaris.core.context.CallContext;
104104
import org.apache.polaris.core.context.RealmContext;
105105
import org.apache.polaris.core.entity.CatalogEntity;
106106
import org.apache.polaris.core.entity.NamespaceEntity;
@@ -121,16 +121,13 @@
121121
import org.apache.polaris.core.persistence.pagination.Page;
122122
import org.apache.polaris.core.persistence.pagination.PageToken;
123123
import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory;
124-
import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactoryImpl;
125124
import org.apache.polaris.core.persistence.resolver.Resolver;
126125
import org.apache.polaris.core.persistence.resolver.ResolverFactory;
127126
import org.apache.polaris.core.secrets.UserSecretsManager;
128-
import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
129127
import org.apache.polaris.core.storage.PolarisStorageIntegration;
130128
import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
131129
import org.apache.polaris.core.storage.StorageAccessConfig;
132130
import org.apache.polaris.core.storage.StorageAccessProperty;
133-
import org.apache.polaris.core.storage.StorageCredentialsVendor;
134131
import org.apache.polaris.core.storage.aws.AwsCredentialsStorageIntegration;
135132
import org.apache.polaris.core.storage.aws.AwsStorageConfigurationInfo;
136133
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
@@ -230,30 +227,29 @@ public Map<String, String> getConfigOverrides() {
230227

231228
@Inject Clock clock;
232229
@Inject MetaStoreManagerFactory metaStoreManagerFactory;
233-
@Inject PolarisConfigurationStore configurationStore;
234230
@Inject StorageCredentialCache storageCredentialCache;
235231
@Inject PolarisStorageIntegrationProvider storageIntegrationProvider;
236-
@Inject UserSecretsManagerFactory userSecretsManagerFactory;
237232
@Inject ServiceIdentityProvider serviceIdentityProvider;
238233
@Inject PolarisDiagnostics diagServices;
239234
@Inject PolarisEventListener polarisEventListener;
235+
@Inject PolarisMetaStoreManager metaStoreManager;
236+
@Inject UserSecretsManager userSecretsManager;
237+
@Inject CallContext callContext;
238+
@Inject RealmConfig realmConfig;
239+
@Inject ResolutionManifestFactory resolutionManifestFactory;
240+
@Inject StorageAccessConfigProvider storageAccessConfigProvider;
240241

241242
private IcebergCatalog catalog;
242243
private String realmName;
243-
private PolarisMetaStoreManager metaStoreManager;
244-
private UserSecretsManager userSecretsManager;
245244
private PolarisCallContext polarisContext;
246-
private RealmConfig realmConfig;
247245
private PolarisAdminService adminService;
248246
private ResolverFactory resolverFactory;
249-
private ResolutionManifestFactory resolutionManifestFactory;
250247
private FileIOFactory fileIOFactory;
251248
private InMemoryFileIO fileIO;
252249
private PolarisEntity catalogEntity;
253250
private PolarisPrincipal authenticatedRoot;
254251
private TestPolarisEventListener testPolarisEventListener;
255252
private ReservedProperties reservedProperties;
256-
private StorageAccessConfigProvider storageAccessConfigProvider;
257253

258254
@BeforeAll
259255
public static void setUpMocks() {
@@ -283,18 +279,7 @@ public void before(TestInfo testInfo) {
283279

284280
RealmContext realmContext = () -> realmName;
285281
QuarkusMock.installMockForType(realmContext, RealmContext.class);
286-
metaStoreManager = metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext);
287-
userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext);
288-
polarisContext =
289-
new PolarisCallContext(
290-
realmContext,
291-
metaStoreManagerFactory.getOrCreateSession(realmContext),
292-
configurationStore);
293-
realmConfig = polarisContext.getRealmConfig();
294-
StorageCredentialsVendor storageCredentialsVendor =
295-
new StorageCredentialsVendor(metaStoreManager, polarisContext);
296-
storageAccessConfigProvider =
297-
new StorageAccessConfigProvider(storageCredentialCache, storageCredentialsVendor);
282+
polarisContext = callContext.getPolarisCallContext();
298283

299284
EntityCache entityCache = createEntityCache(diagServices, realmConfig, metaStoreManager);
300285
resolverFactory =
@@ -308,9 +293,6 @@ public void before(TestInfo testInfo) {
308293
referenceCatalogName);
309294
QuarkusMock.installMockForType(resolverFactory, ResolverFactory.class);
310295

311-
resolutionManifestFactory =
312-
new ResolutionManifestFactoryImpl(diagServices, realmContext, resolverFactory);
313-
314296
PrincipalEntity rootPrincipal =
315297
metaStoreManager.findRootPrincipal(polarisContext).orElseThrow();
316298
authenticatedRoot = PolarisPrincipal.of(rootPrincipal, Set.of());

runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogViewTest.java

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,16 @@
4141
import org.apache.polaris.core.auth.PolarisAuthorizerImpl;
4242
import org.apache.polaris.core.auth.PolarisPrincipal;
4343
import org.apache.polaris.core.config.FeatureConfiguration;
44-
import org.apache.polaris.core.config.PolarisConfigurationStore;
4544
import org.apache.polaris.core.config.RealmConfig;
45+
import org.apache.polaris.core.context.CallContext;
4646
import org.apache.polaris.core.context.RealmContext;
4747
import org.apache.polaris.core.entity.CatalogEntity;
4848
import org.apache.polaris.core.entity.PrincipalEntity;
4949
import org.apache.polaris.core.identity.provider.ServiceIdentityProvider;
50-
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
5150
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
5251
import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory;
5352
import org.apache.polaris.core.persistence.resolver.ResolverFactory;
5453
import org.apache.polaris.core.secrets.UserSecretsManager;
55-
import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
56-
import org.apache.polaris.core.storage.StorageCredentialsVendor;
5754
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
5855
import org.apache.polaris.service.admin.PolarisAdminService;
5956
import org.apache.polaris.service.catalog.PolarisPassthroughResolutionView;
@@ -105,24 +102,22 @@ public Map<String, String> getConfigOverrides() {
105102
CatalogProperties.VIEW_OVERRIDE_PREFIX + "key3", "catalog-override-key3",
106103
CatalogProperties.VIEW_OVERRIDE_PREFIX + "key4", "catalog-override-key4");
107104

108-
@Inject MetaStoreManagerFactory metaStoreManagerFactory;
109-
@Inject UserSecretsManagerFactory userSecretsManagerFactory;
110105
@Inject ServiceIdentityProvider serviceIdentityProvider;
111-
@Inject PolarisConfigurationStore configurationStore;
112106
@Inject StorageCredentialCache storageCredentialCache;
113107
@Inject PolarisDiagnostics diagServices;
114108
@Inject PolarisEventListener polarisEventListener;
115109
@Inject ResolverFactory resolverFactory;
116110
@Inject ResolutionManifestFactory resolutionManifestFactory;
111+
@Inject PolarisMetaStoreManager metaStoreManager;
112+
@Inject UserSecretsManager userSecretsManager;
113+
@Inject CallContext callContext;
114+
@Inject RealmConfig realmConfig;
115+
@Inject StorageAccessConfigProvider storageAccessConfigProvider;
117116

118117
private IcebergCatalog catalog;
119118

120119
private String realmName;
121-
private PolarisMetaStoreManager metaStoreManager;
122-
private UserSecretsManager userSecretsManager;
123120
private PolarisCallContext polarisContext;
124-
private RealmConfig realmConfig;
125-
private StorageAccessConfigProvider storageAccessConfigProvider;
126121

127122
private TestPolarisEventListener testPolarisEventListener;
128123

@@ -154,19 +149,7 @@ public void before(TestInfo testInfo) {
154149
bootstrapRealm(realmName);
155150
RealmContext realmContext = () -> realmName;
156151
QuarkusMock.installMockForType(realmContext, RealmContext.class);
157-
158-
metaStoreManager = metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext);
159-
userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext);
160-
polarisContext =
161-
new PolarisCallContext(
162-
realmContext,
163-
metaStoreManagerFactory.getOrCreateSession(realmContext),
164-
configurationStore);
165-
realmConfig = polarisContext.getRealmConfig();
166-
StorageCredentialsVendor storageCredentialsVendor =
167-
new StorageCredentialsVendor(metaStoreManager, polarisContext);
168-
storageAccessConfigProvider =
169-
new StorageAccessConfigProvider(storageCredentialCache, storageCredentialsVendor);
152+
polarisContext = callContext.getPolarisCallContext();
170153

171154
PrincipalEntity rootPrincipal =
172155
metaStoreManager.findRootPrincipal(polarisContext).orElseThrow();

0 commit comments

Comments
 (0)