public boolean setProperties(Namespace namespace, Map<String, String> properties) {
    return updateProperties(namespace, props -> props.putAll(properties));
  }
@Test
  public void testSetProperties() throws NessieConflictException, NessieNotFoundException {
    String branch = "setPropertiesBranch";
    createBranch(branch);
    Map<String, String> catalogOptions =
        Map.of(
            CatalogProperties.USER, "iceberg-user",
            CatalogProperties.APP_ID, "iceberg-nessie");
    NessieIcebergClient client = new NessieIcebergClient(api, branch, null, catalogOptions);

    Namespace ns = Namespace.of("a");
    client.createNamespace(ns, Map.of("k1", "v1a"));

    assertThat(client.setProperties(ns, Map.of("k1", "v1b", "k2", "v2"))).isTrue();

    assertThat(client.loadNamespaceMetadata(ns))
        .hasSize(2)
        .containsEntry("k1", "v1b")
        .containsEntry("k2", "v2");

    List<LogResponse.LogEntry> entries = api.getCommitLog().refName(branch).get().getLogEntries();
    assertThat(entries)
        .isNotEmpty()
        .first()
        .extracting(LogResponse.LogEntry::getCommitMeta)
        .satisfies(
            meta -> {
              assertThat(meta.getMessage()).contains("update namespace a");
              assertThat(meta.getAuthor()).isEqualTo("iceberg-user");
              assertThat(meta.getProperties())
                  .containsEntry(NessieUtil.APPLICATION_TYPE, "iceberg")
                  .containsEntry(CatalogProperties.APP_ID, "iceberg-nessie");
            });
  }