public static S3SignResponse fromJson(String json) {
    return JsonUtil.parse(json, S3SignResponseParser::fromJson);
  }
@Test
  public void missingFields() {
    assertThatThrownBy(() -> S3SignResponseParser.fromJson("{}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Cannot parse missing string: uri");

    assertThatThrownBy(
            () ->
                S3SignResponseParser.fromJson(
                    "{\"uri\" : \"http://localhost:49208/iceberg-signer-test\"}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Cannot parse missing field: headers");
  }