Skip to content

Commit bf18849

Browse files
committed
feat: strict assertions
1 parent 2e7c5b6 commit bf18849

1 file changed

Lines changed: 33 additions & 9 deletions

File tree

src/test-integration/java/dev/openfga/sdk/errors/FgaErrorIntegrationTest.java

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,28 @@ void testValidationError_InvalidType() throws Exception {
6565
CompletableFuture<ClientCheckResponse> future = fga.check(request);
6666
ExecutionException exception = assertThrows(ExecutionException.class, future::get);
6767

68-
String message = exception.getMessage();
69-
assertNotNull(message);
68+
String exceptionMessage = exception.getMessage();
69+
assertNotNull(exceptionMessage);
70+
assertTrue(exceptionMessage.contains("FgaApiValidationError"), "Should include error class name");
71+
assertTrue(exceptionMessage.contains("[check]"), "Should include operation name");
7072
assertTrue(
71-
message.contains("check") || message.contains("invalid_type") || message.contains("not found"),
72-
"Error message should contain context, got: " + message);
73+
exceptionMessage.contains("type 'invalid_type' not found"), "Should include actual error from server");
7374

7475
Throwable cause = exception.getCause();
7576
assertInstanceOf(FgaApiValidationError.class, cause);
7677

7778
FgaApiValidationError error = (FgaApiValidationError) cause;
7879
assertEquals("check", error.getOperationName());
7980
assertEquals(400, error.getStatusCode());
80-
assertNotNull(error.getApiErrorMessage());
81-
assertNotNull(error.getMessage());
81+
assertEquals("validation_error", error.getApiErrorCode());
82+
assertEquals("type 'invalid_type' not found", error.getApiErrorMessage());
83+
84+
// Verify formatted messages
85+
String errorMessage = error.getMessage();
86+
assertNotNull(errorMessage);
87+
assertTrue(errorMessage.contains("[check]"), "Should include operation name");
88+
assertTrue(errorMessage.contains("type 'invalid_type' not found"), "Should include server error");
89+
assertTrue(errorMessage.contains("validation_error"), "Should include error code");
8290
}
8391

8492
@Test
@@ -95,19 +103,35 @@ void testValidationError_InvalidRelation() throws Exception {
95103
CompletableFuture<ClientCheckResponse> future = fga.check(request);
96104
ExecutionException exception = assertThrows(ExecutionException.class, future::get);
97105

106+
// Verify ExecutionException message contains the full error details from server
107+
// Note: These assertions will fail if OpenFGA server changes its error message format,
108+
// which is intentional - integration tests should catch server behavior changes
109+
String exceptionMessage = exception.getMessage();
110+
assertNotNull(exceptionMessage);
111+
assertTrue(exceptionMessage.contains("FgaApiValidationError"), "Should include error class name");
112+
assertTrue(exceptionMessage.contains("[check]"), "Should include operation name");
113+
assertTrue(
114+
exceptionMessage.contains("relation 'document#invalid_relation' not found"),
115+
"Should include actual error from server");
116+
98117
Throwable cause = exception.getCause();
99118
assertInstanceOf(FgaApiValidationError.class, cause);
100119

101120
FgaApiValidationError error = (FgaApiValidationError) cause;
121+
122+
// Verify error object contains expected details
102123
assertEquals("check", error.getOperationName());
103124
assertEquals(400, error.getStatusCode());
104-
assertNotNull(error.getApiErrorMessage());
125+
assertEquals("validation_error", error.getApiErrorCode());
126+
assertEquals("relation 'document#invalid_relation' not found", error.getApiErrorMessage());
105127

128+
// Verify formatted messages
106129
String errorMessage = error.getMessage();
107130
assertNotNull(errorMessage);
131+
assertTrue(errorMessage.contains("[check]"), "Should include operation name");
108132
assertTrue(
109-
errorMessage.contains("check") || errorMessage.contains("relation") || errorMessage.contains("invalid"),
110-
"Error message should provide context, got: " + errorMessage);
133+
errorMessage.contains("relation 'document#invalid_relation' not found"), "Should include server error");
134+
assertTrue(errorMessage.contains("validation_error"), "Should include error code");
111135
}
112136

113137
@Test

0 commit comments

Comments
 (0)