in polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/PolarisTestMetaStoreManager.java [2034:2159]
void testBrowse() {
// create test catalog
PolarisBaseEntity catalog = this.createTestCatalog("test");
Assertions.assertThat(catalog).isNotNull();
// should see 2 top-level namespaces
this.validateListReturn(
List.of(catalog),
PolarisEntityType.NAMESPACE,
List.of(
ImmutablePair.of("N1", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("N5", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("N7", PolarisEntitySubType.NULL_SUBTYPE)));
// should see 3 top-level catalog roles including the admin one
this.validateListReturn(
List.of(catalog),
PolarisEntityType.CATALOG_ROLE,
List.of(
ImmutablePair.of(
PolarisEntityConstants.getNameOfCatalogAdminRole(),
PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("R1", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("R2", PolarisEntitySubType.NULL_SUBTYPE)));
// 2 principals
this.validateListReturn(
null,
PolarisEntityType.PRINCIPAL,
List.of(
ImmutablePair.of(
PolarisEntityConstants.getRootPrincipalName(), PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("P1", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("P2", PolarisEntitySubType.NULL_SUBTYPE)));
// 3 principal roles with the bootstrap service_admin
this.validateListReturn(
null,
PolarisEntityType.PRINCIPAL_ROLE,
List.of(
ImmutablePair.of("PR1", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("PR2", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of(
PolarisEntityConstants.getNameOfPrincipalServiceAdminRole(),
PolarisEntitySubType.NULL_SUBTYPE)));
// three namespaces under top-level namespace N1
PolarisBaseEntity N1 =
this.ensureExistsByName(List.of(catalog), PolarisEntityType.NAMESPACE, "N1");
this.validateListReturn(
List.of(catalog, N1),
PolarisEntityType.NAMESPACE,
PolarisEntitySubType.NULL_SUBTYPE,
List.of(
ImmutablePair.of("N2", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("N3", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("N4", PolarisEntitySubType.NULL_SUBTYPE)));
this.validateListReturn(
List.of(catalog, N1),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ANY_SUBTYPE,
List.of(ImmutablePair.of("T4", PolarisEntitySubType.ICEBERG_TABLE)));
PolarisBaseEntity N5 =
this.ensureExistsByName(List.of(catalog), PolarisEntityType.NAMESPACE, "N5");
this.validateListReturn(
List.of(catalog, N5),
PolarisEntityType.NAMESPACE,
List.of(ImmutablePair.of("N6", PolarisEntitySubType.NULL_SUBTYPE)));
// two tables and one view under top-level namespace N1_N1
PolarisBaseEntity N1_N2 =
this.ensureExistsByName(List.of(catalog, N1), PolarisEntityType.NAMESPACE, "N2");
// table or view object
this.validateListReturn(
List.of(catalog, N1, N1_N2),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ANY_SUBTYPE,
List.of(
ImmutablePair.of("T1", PolarisEntitySubType.ICEBERG_TABLE),
ImmutablePair.of("T2", PolarisEntitySubType.ICEBERG_TABLE),
ImmutablePair.of("V1", PolarisEntitySubType.ICEBERG_VIEW)));
// table object only
this.validateListReturn(
List.of(catalog, N1, N1_N2),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_TABLE,
List.of(
ImmutablePair.of("T1", PolarisEntitySubType.ICEBERG_TABLE),
ImmutablePair.of("T2", PolarisEntitySubType.ICEBERG_TABLE)));
// view object only
this.validateListReturn(
List.of(catalog, N1, N1_N2),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_VIEW,
List.of(ImmutablePair.of("V1", PolarisEntitySubType.ICEBERG_VIEW)));
// list all principals
this.validateListReturn(
null,
PolarisEntityType.PRINCIPAL,
List.of(
ImmutablePair.of("root", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("P1", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("P2", PolarisEntitySubType.NULL_SUBTYPE)));
// list all principal roles
this.validateListReturn(
null,
PolarisEntityType.PRINCIPAL_ROLE,
List.of(
ImmutablePair.of(
PolarisEntityConstants.getNameOfPrincipalServiceAdminRole(),
PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("PR1", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("PR2", PolarisEntitySubType.NULL_SUBTYPE)));
// list 2 policies under N7_N8
PolarisBaseEntity N7 =
this.ensureExistsByName(List.of(catalog), PolarisEntityType.NAMESPACE, "N7");
PolarisBaseEntity N7_N8 =
this.ensureExistsByName(List.of(catalog, N7), PolarisEntityType.NAMESPACE, "N8");
this.validateListReturn(
List.of(catalog, N7, N7_N8),
PolarisEntityType.POLICY,
List.of(
ImmutablePair.of("POL1", PolarisEntitySubType.NULL_SUBTYPE),
ImmutablePair.of("POL2", PolarisEntitySubType.NULL_SUBTYPE)));
}