mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-08 19:42:48 +00:00
webauthnWhenConfiguredMessageConverter uses mock
Issue gh-16397
This commit is contained in:
parent
0d4f786484
commit
5462b4c358
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package org.springframework.security.config.annotation.web.configurers;
|
package org.springframework.security.config.annotation.web.configurers;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@ -25,12 +25,8 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.http.HttpInputMessage;
|
|
||||||
import org.springframework.http.HttpOutputMessage;
|
import org.springframework.http.HttpOutputMessage;
|
||||||
import org.springframework.http.converter.AbstractHttpMessageConverter;
|
|
||||||
import org.springframework.http.converter.HttpMessageConverter;
|
import org.springframework.http.converter.HttpMessageConverter;
|
||||||
import org.springframework.http.converter.HttpMessageNotReadableException;
|
|
||||||
import org.springframework.http.converter.HttpMessageNotWritableException;
|
|
||||||
import org.springframework.security.authentication.TestingAuthenticationToken;
|
import org.springframework.security.authentication.TestingAuthenticationToken;
|
||||||
import org.springframework.security.config.Customizer;
|
import org.springframework.security.config.Customizer;
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
@ -53,6 +49,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
import static org.hamcrest.Matchers.containsString;
|
import static org.hamcrest.Matchers.containsString;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.BDDMockito.given;
|
import static org.mockito.BDDMockito.given;
|
||||||
|
import static org.mockito.BDDMockito.willAnswer;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
||||||
@ -153,29 +150,19 @@ public class WebAuthnConfigurerTests {
|
|||||||
WebAuthnRelyingPartyOperations rpOperations = mock(WebAuthnRelyingPartyOperations.class);
|
WebAuthnRelyingPartyOperations rpOperations = mock(WebAuthnRelyingPartyOperations.class);
|
||||||
ConfigMessageConverter.rpOperations = rpOperations;
|
ConfigMessageConverter.rpOperations = rpOperations;
|
||||||
given(rpOperations.createPublicKeyCredentialCreationOptions(any())).willReturn(options);
|
given(rpOperations.createPublicKeyCredentialCreationOptions(any())).willReturn(options);
|
||||||
HttpMessageConverter<Object> converter = new AbstractHttpMessageConverter<>() {
|
HttpMessageConverter<Object> converter = mock(HttpMessageConverter.class);
|
||||||
@Override
|
given(converter.canWrite(any(), any())).willReturn(true);
|
||||||
protected boolean supports(Class<?> clazz) {
|
String expectedBody = "123";
|
||||||
return true;
|
willAnswer((args) -> {
|
||||||
}
|
HttpOutputMessage out = (HttpOutputMessage) args.getArguments()[2];
|
||||||
|
out.getBody().write(expectedBody.getBytes(StandardCharsets.UTF_8));
|
||||||
@Override
|
return null;
|
||||||
protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage)
|
}).given(converter).write(any(), any(), any());
|
||||||
throws IOException, HttpMessageNotReadableException {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void writeInternal(Object o, HttpOutputMessage outputMessage)
|
|
||||||
throws IOException, HttpMessageNotWritableException {
|
|
||||||
outputMessage.getBody().write("123".getBytes());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
ConfigMessageConverter.converter = converter;
|
ConfigMessageConverter.converter = converter;
|
||||||
this.spring.register(ConfigMessageConverter.class).autowire();
|
this.spring.register(ConfigMessageConverter.class).autowire();
|
||||||
this.mvc.perform(post("/webauthn/register/options"))
|
this.mvc.perform(post("/webauthn/register/options"))
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
.andExpect(content().string("123"));
|
.andExpect(content().string(expectedBody));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
|
Loading…
x
Reference in New Issue
Block a user