Skip to content

Commit

Permalink
webauthnWhenConfiguredMessageConverter uses mock
Browse files Browse the repository at this point in the history
Issue gh-16397
  • Loading branch information
rwinch committed Jan 18, 2025
1 parent 0d4f786 commit 5462b4c
Showing 1 changed file with 11 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

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

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.List;

import org.junit.jupiter.api.Test;
Expand All @@ -25,12 +25,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.converter.AbstractHttpMessageConverter;
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.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
Expand All @@ -53,6 +49,7 @@
import static org.hamcrest.Matchers.containsString;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.mockito.BDDMockito.willAnswer;
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.post;
Expand Down Expand Up @@ -153,29 +150,19 @@ public void webauthnWhenConfiguredMessageConverter() throws Exception {
WebAuthnRelyingPartyOperations rpOperations = mock(WebAuthnRelyingPartyOperations.class);
ConfigMessageConverter.rpOperations = rpOperations;
given(rpOperations.createPublicKeyCredentialCreationOptions(any())).willReturn(options);
HttpMessageConverter<Object> converter = new AbstractHttpMessageConverter<>() {
@Override
protected boolean supports(Class<?> clazz) {
return true;
}

@Override
protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException {
return null;
}

@Override
protected void writeInternal(Object o, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
outputMessage.getBody().write("123".getBytes());
}
};
HttpMessageConverter<Object> converter = mock(HttpMessageConverter.class);
given(converter.canWrite(any(), any())).willReturn(true);
String expectedBody = "123";
willAnswer((args) -> {
HttpOutputMessage out = (HttpOutputMessage) args.getArguments()[2];
out.getBody().write(expectedBody.getBytes(StandardCharsets.UTF_8));
return null;
}).given(converter).write(any(), any(), any());
ConfigMessageConverter.converter = converter;
this.spring.register(ConfigMessageConverter.class).autowire();
this.mvc.perform(post("/webauthn/register/options"))
.andExpect(status().isOk())
.andExpect(content().string("123"));
.andExpect(content().string(expectedBody));
}

@Configuration
Expand Down

0 comments on commit 5462b4c

Please sign in to comment.