Skip to content

Commit ed9918f

Browse files
Fixing auth catch bug
1 parent 8ebc808 commit ed9918f

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/authorization/ElasticInferenceServiceAuthorizationRequestHandler.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ public void getAuthorization(ActionListener<ElasticInferenceServiceAuthorization
137137
} catch (Exception e) {
138138
logger.warn(Strings.format("Retrieving the authorization information encountered an exception: %s", e));
139139
requestCompleteLatch.countDown();
140+
listener.onFailure(e);
140141
}
141142
}
142143

x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/elastic/authorization/ElasticInferenceServiceAuthorizationRequestHandlerTests.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@
5454
import static org.hamcrest.Matchers.instanceOf;
5555
import static org.hamcrest.Matchers.is;
5656
import static org.mockito.ArgumentMatchers.any;
57+
import static org.mockito.ArgumentMatchers.anyString;
5758
import static org.mockito.Mockito.doAnswer;
59+
import static org.mockito.Mockito.doThrow;
5860
import static org.mockito.Mockito.mock;
5961
import static org.mockito.Mockito.times;
6062
import static org.mockito.Mockito.verify;
@@ -181,6 +183,36 @@ private void queueWebServerResponsesForRetries(String responseJson) {
181183
}
182184
}
183185

186+
public void testGetAuthorization_ReturnsFailure_WhenExceptionOccurs() throws IOException {
187+
var senderFactory = HttpRequestSenderTests.createSenderFactory(threadPool, clientManager);
188+
var eisGatewayUrl = getUrl(webServer);
189+
190+
var exceptionToThrow = new IllegalStateException("exception");
191+
var logger = mock(Logger.class);
192+
doThrow(exceptionToThrow).when(logger).debug(anyString());
193+
194+
var authHandler = new ElasticInferenceServiceAuthorizationRequestHandler(
195+
eisGatewayUrl,
196+
threadPool,
197+
logger,
198+
createNoopApplierFactory()
199+
);
200+
201+
try (var sender = senderFactory.createSender()) {
202+
var responseData = getEisAuthorizationResponseWithMultipleEndpoints(eisGatewayUrl);
203+
204+
webServer.enqueue(new MockResponse().setResponseCode(200).setBody(responseData.responseJson()));
205+
206+
PlainActionFuture<ElasticInferenceServiceAuthorizationModel> listener = new PlainActionFuture<>();
207+
authHandler.getAuthorization(listener, sender);
208+
209+
var exception = expectThrows(IllegalStateException.class, () -> listener.actionGet(TIMEOUT));
210+
assertThat(exception, is(exceptionToThrow));
211+
212+
assertThat(webServer.requests().size(), is(0));
213+
}
214+
}
215+
184216
public void testGetAuthorization_ReturnsAValidResponse() throws IOException {
185217
var senderFactory = HttpRequestSenderTests.createSenderFactory(threadPool, clientManager);
186218
var eisGatewayUrl = getUrl(webServer);

0 commit comments

Comments
 (0)