@@ -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