public static UpdateTableRequest fromJson(String json) {
    return JsonUtil.parse(json, UpdateTableRequestParser::fromJson);
  }
@Test
  public void invalidRequirements() {
    assertThatThrownBy(
            () ->
                UpdateTableRequestParser.fromJson(
                    "{\"identifier\":{\"namespace\":[\"ns1\"],\"name\":\"table1\"},"
                        + "\"requirements\":[23],\"updates\":[]}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Cannot parse update requirement from non-object value: 23");

    assertThatThrownBy(
            () ->
                UpdateTableRequestParser.fromJson(
                    "{\"identifier\":{\"namespace\":[\"ns1\"],\"name\":\"table1\"},"
                        + "\"requirements\":[{}],\"updates\":[]}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Cannot parse update requirement. Missing field: type");

    assertThatThrownBy(
            () ->
                UpdateTableRequestParser.fromJson(
                    "{\"identifier\":{\"namespace\":[\"ns1\"],\"name\":\"table1\"},"
                        + "\"requirements\":[{\"type\":\"assert-table-uuid\"}],\"updates\":[]}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Cannot parse missing string: uuid");
  }