From 57622f654e41fb64315cbf74c53eb04de31a2356 Mon Sep 17 00:00:00 2001 From: zack-rma Date: Mon, 23 Feb 2026 15:28:54 -0800 Subject: [PATCH 1/4] Added test to verify office permission bug is resolved. --- .../cda/api/rating/RatingSpecControllerTestIT.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java b/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java index a28b25c12..b50e4d527 100644 --- a/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java +++ b/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java @@ -101,6 +101,19 @@ void test_empty_rating_spec() throws Exception { .log().ifValidationFails(LogDetail.ALL,true) .statusCode(is(HttpServletResponse.SC_CREATED)); + // Read and verify no failure on missing office ID + given() + .log().ifValidationFails(LogDetail.ALL,true) + .accept(Formats.JSONV2) + .when() + .redirects().follow(true) + .redirects().max(3) + .get("/ratings/metadata") + .then() + .log().ifValidationFails(LogDetail.ALL,true) + .assertThat() + .statusCode(is(HttpServletResponse.SC_OK)); + //Read Response response = given() From 9335094caa9b859b0e40b7c88ed8f27177a93817 Mon Sep 17 00:00:00 2001 From: zack-rma Date: Tue, 24 Feb 2026 09:45:00 -0800 Subject: [PATCH 2/4] Added check for returned data not being empty --- .../java/cwms/cda/api/rating/RatingSpecControllerTestIT.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java b/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java index b50e4d527..286651902 100644 --- a/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java +++ b/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java @@ -48,6 +48,7 @@ import static cwms.cda.api.Controllers.RATING_ID_MASK; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -112,7 +113,8 @@ void test_empty_rating_spec() throws Exception { .then() .log().ifValidationFails(LogDetail.ALL,true) .assertThat() - .statusCode(is(HttpServletResponse.SC_OK)); + .statusCode(is(HttpServletResponse.SC_OK)) + .body("rating-metadata.size()", greaterThan(0)); //Read Response response = From 5bd37b3526adfbcfe3dbd99b925ceb4394fa0f8c Mon Sep 17 00:00:00 2001 From: zack-rma Date: Tue, 24 Feb 2026 10:03:27 -0800 Subject: [PATCH 3/4] Updated data check to match expected rating metadata --- .../rating/RatingSpecControllerTestIT.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java b/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java index 286651902..72d220371 100644 --- a/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java +++ b/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java @@ -48,8 +48,8 @@ import static cwms.cda.api.Controllers.RATING_ID_MASK; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.is; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @Tag("integration") @@ -102,22 +102,25 @@ void test_empty_rating_spec() throws Exception { .log().ifValidationFails(LogDetail.ALL,true) .statusCode(is(HttpServletResponse.SC_CREATED)); + RatingSpec ratingSpec = new RatingSpec(new RatingSpec.Builder().fromRatingSpec(new hec.data.cwmsRating.RatingSpec(specContainer))); + // Read and verify no failure on missing office ID - given() + Response response = given() .log().ifValidationFails(LogDetail.ALL,true) .accept(Formats.JSONV2) .when() .redirects().follow(true) .redirects().max(3) - .get("/ratings/metadata") - .then() - .log().ifValidationFails(LogDetail.ALL,true) - .assertThat() - .statusCode(is(HttpServletResponse.SC_OK)) - .body("rating-metadata.size()", greaterThan(0)); + .get("/ratings/metadata"); + JsonPath noOfficePath = new JsonPath(response.asString()); + assertFalse(noOfficePath.getList("rating-metadata").isEmpty()); + boolean foundMatching = IntStream.range(0, noOfficePath.getInt("rating-metadata.size()")) + .mapToObj(i -> noOfficePath.getObject("rating-metadata[" + i + "].rating-spec", RatingSpec.class)) + .anyMatch(s -> s.hashCode() == ratingSpec.hashCode()); + assertTrue(foundMatching); //Read - Response response = + response = given() .log().ifValidationFails(LogDetail.ALL,true) .accept(Formats.JSONV2) @@ -129,10 +132,9 @@ void test_empty_rating_spec() throws Exception { .redirects().max(3) .get("/ratings/metadata"); // then follows - RatingSpec ratingSpec = new RatingSpec(new RatingSpec.Builder().fromRatingSpec(new hec.data.cwmsRating.RatingSpec(specContainer))); JsonPath path = new JsonPath(response.asString()); //get values of JSON array after getting array size - boolean foundMatching = IntStream.range(0, path.getInt("rating-metadata.size()")) + foundMatching = IntStream.range(0, path.getInt("rating-metadata.size()")) .mapToObj(i -> path.getObject("rating-metadata[" + i + "].rating-spec", RatingSpec.class)) .anyMatch(s -> s.hashCode() == ratingSpec.hashCode()); assertTrue(foundMatching); From cd5cdc45f8aba8b40a907513c7e853ba99518e22 Mon Sep 17 00:00:00 2001 From: zack-rma Date: Wed, 25 Feb 2026 11:59:28 -0800 Subject: [PATCH 4/4] Updated test case for rating metadata --- .../java/cwms/cda/api/rating/RatingSpecControllerTestIT.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java b/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java index 72d220371..4e41a849e 100644 --- a/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java +++ b/cwms-data-api/src/test/java/cwms/cda/api/rating/RatingSpecControllerTestIT.java @@ -45,6 +45,7 @@ import static cwms.cda.api.Controllers.METHOD; import static cwms.cda.api.Controllers.OFFICE; +import static cwms.cda.api.Controllers.PAGE_SIZE; import static cwms.cda.api.Controllers.RATING_ID_MASK; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; @@ -108,6 +109,7 @@ void test_empty_rating_spec() throws Exception { Response response = given() .log().ifValidationFails(LogDetail.ALL,true) .accept(Formats.JSONV2) + .queryParam(PAGE_SIZE, 500) .when() .redirects().follow(true) .redirects().max(3)