public TableMetadata readTableMetadata(String metadataLocation) {
    URI metadataLocationUri = URI.create(metadataLocation);
    // TODO: cache fileIO
    FileIO fileIO = fileIOFactory.getFileIO(metadataLocationUri);

    return CompletableFuture.supplyAsync(() -> TableMetadataParser.read(fileIO, metadataLocation))
        .join();
  }
@SneakyThrows
  @Test
  public void testGetTableMetadataFromLocalFS() {
    when(mockFileIOFactory.getFileIO(any())).thenReturn(new SimpleLocalFileIO());
    String metadataLocation =
        Objects.requireNonNull(this.getClass().getResource("/iceberg.metadata.json"))
            .toURI()
            .toString();
    TableMetadata tableMetadata = metadataService.readTableMetadata(metadataLocation);
    assertThat(tableMetadata.uuid()).isEqualTo("55d4dc69-5b14-4483-bfc8-f33b80f99f99");
  }