void testBrowse()

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)));
  }