Skip to content

Commit 5462b4c

Browse files
committed
webauthnWhenConfiguredMessageConverter uses mock
Issue gh-16397
1 parent 0d4f786 commit 5462b4c

File tree

1 file changed

+11
-24
lines changed

1 file changed

+11
-24
lines changed

config/src/test/java/org/springframework/security/config/annotation/web/configurers/WebAuthnConfigurerTests.java

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package org.springframework.security.config.annotation.web.configurers;
1818

19-
import java.io.IOException;
19+
import java.nio.charset.StandardCharsets;
2020
import java.util.List;
2121

2222
import org.junit.jupiter.api.Test;
@@ -25,12 +25,8 @@
2525
import org.springframework.beans.factory.annotation.Autowired;
2626
import org.springframework.context.annotation.Bean;
2727
import org.springframework.context.annotation.Configuration;
28-
import org.springframework.http.HttpInputMessage;
2928
import org.springframework.http.HttpOutputMessage;
30-
import org.springframework.http.converter.AbstractHttpMessageConverter;
3129
import org.springframework.http.converter.HttpMessageConverter;
32-
import org.springframework.http.converter.HttpMessageNotReadableException;
33-
import org.springframework.http.converter.HttpMessageNotWritableException;
3430
import org.springframework.security.authentication.TestingAuthenticationToken;
3531
import org.springframework.security.config.Customizer;
3632
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -53,6 +49,7 @@
5349
import static org.hamcrest.Matchers.containsString;
5450
import static org.mockito.ArgumentMatchers.any;
5551
import static org.mockito.BDDMockito.given;
52+
import static org.mockito.BDDMockito.willAnswer;
5653
import static org.mockito.Mockito.mock;
5754
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
5855
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
@@ -153,29 +150,19 @@ public void webauthnWhenConfiguredMessageConverter() throws Exception {
153150
WebAuthnRelyingPartyOperations rpOperations = mock(WebAuthnRelyingPartyOperations.class);
154151
ConfigMessageConverter.rpOperations = rpOperations;
155152
given(rpOperations.createPublicKeyCredentialCreationOptions(any())).willReturn(options);
156-
HttpMessageConverter<Object> converter = new AbstractHttpMessageConverter<>() {
157-
@Override
158-
protected boolean supports(Class<?> clazz) {
159-
return true;
160-
}
161-
162-
@Override
163-
protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage)
164-
throws IOException, HttpMessageNotReadableException {
165-
return null;
166-
}
167-
168-
@Override
169-
protected void writeInternal(Object o, HttpOutputMessage outputMessage)
170-
throws IOException, HttpMessageNotWritableException {
171-
outputMessage.getBody().write("123".getBytes());
172-
}
173-
};
153+
HttpMessageConverter<Object> converter = mock(HttpMessageConverter.class);
154+
given(converter.canWrite(any(), any())).willReturn(true);
155+
String expectedBody = "123";
156+
willAnswer((args) -> {
157+
HttpOutputMessage out = (HttpOutputMessage) args.getArguments()[2];
158+
out.getBody().write(expectedBody.getBytes(StandardCharsets.UTF_8));
159+
return null;
160+
}).given(converter).write(any(), any(), any());
174161
ConfigMessageConverter.converter = converter;
175162
this.spring.register(ConfigMessageConverter.class).autowire();
176163
this.mvc.perform(post("/webauthn/register/options"))
177164
.andExpect(status().isOk())
178-
.andExpect(content().string("123"));
165+
.andExpect(content().string(expectedBody));
179166
}
180167

181168
@Configuration

0 commit comments

Comments
 (0)