Browse Source

throw original exception to keep compatibility with common RestTemplate

Signed-off-by: Yohei Kishimoto <morokosi@users.noreply.github.com>
pull/18272/head
Yohei Kishimoto 2 weeks ago
parent
commit
63c5d7ba65
  1. 3
      kerberos/kerberos-client/src/main/java/org/springframework/security/kerberos/client/KerberosRestTemplate.java
  2. 17
      kerberos/kerberos-client/src/test/java/org/springframework/security/kerberos/client/KerberosRestTemplateTests.java

3
kerberos/kerberos-client/src/main/java/org/springframework/security/kerberos/client/KerberosRestTemplate.java

@ -244,6 +244,9 @@ public class KerberosRestTemplate extends RestTemplate {
}); });
} }
catch (RestClientException ex) {
throw ex;
}
catch (Exception ex) { catch (Exception ex) {
throw new RestClientException("Error running rest call", ex); throw new RestClientException("Error running rest call", ex);
} }

17
kerberos/kerberos-client/src/test/java/org/springframework/security/kerberos/client/KerberosRestTemplateTests.java

@ -19,6 +19,8 @@ package org.springframework.security.kerberos.client;
import java.io.File; import java.io.File;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import okhttp3.mockwebserver.Dispatcher; import okhttp3.mockwebserver.Dispatcher;
import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockResponse;
@ -33,8 +35,10 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.security.kerberos.test.KerberosSecurityTestcase; import org.springframework.security.kerberos.test.KerberosSecurityTestcase;
import org.springframework.security.kerberos.test.MiniKdc; import org.springframework.security.kerberos.test.MiniKdc;
import org.springframework.web.client.HttpClientErrorException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
class KerberosRestTemplateTests extends KerberosSecurityTestcase { class KerberosRestTemplateTests extends KerberosSecurityTestcase {
@ -72,6 +76,8 @@ class KerberosRestTemplateTests extends KerberosSecurityTestcase {
String serverPrincipal = "HTTP/localhost"; String serverPrincipal = "HTTP/localhost";
File serverKeytab = new File(workDir, "server.keytab"); File serverKeytab = new File(workDir, "server.keytab");
kdc.createPrincipal(serverKeytab, serverPrincipal); kdc.createPrincipal(serverKeytab, serverPrincipal);
setUpClient();
} }
@AfterEach @AfterEach
@ -81,13 +87,20 @@ class KerberosRestTemplateTests extends KerberosSecurityTestcase {
@Test @Test
void sendsNegotiateHeader() { void sendsNegotiateHeader() {
setUpClient();
String s = this.restTemplate.getForObject(this.baseUrl + "/get", String.class); String s = this.restTemplate.getForObject(this.baseUrl + "/get", String.class);
assertThat(s).isEqualTo(helloWorld); assertThat(s).isEqualTo(helloWorld);
} }
@Test
void throwsOriginalException() {
assertThatThrownBy(() -> restTemplate.getForObject(this.baseUrl + "/notfound", String.class))
.isInstanceOf(HttpClientErrorException.NotFound.class);
}
private void setUpClient() { private void setUpClient() {
this.restTemplate = new KerberosRestTemplate(this.clientKeytab.getAbsolutePath(), this.clientPrincipal); Map<String, Object> loginOptions = new HashMap<>();
loginOptions.put("refreshKrb5Config", "true");
this.restTemplate = new KerberosRestTemplate(this.clientKeytab.getAbsolutePath(), this.clientPrincipal, loginOptions);
} }
private MockResponse getRequest(RecordedRequest request, byte[] body, String contentType) { private MockResponse getRequest(RecordedRequest request, byte[] body, String contentType) {

Loading…
Cancel
Save