Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public class StreamableHttpWebFluxTransportAutoConfiguration {
* @return list of named MCP transports
*/
@Bean
public List<NamedClientMcpTransport> streamableHttpwebFluxClientTransports(
public List<NamedClientMcpTransport> streamableHttpWebFluxClientTransports(
McpStreamableHttpClientProperties streamableProperties,
ObjectProvider<WebClient.Builder> webClientBuilderProvider,
ObjectProvider<ObjectMapper> objectMapperProvider) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,27 +48,27 @@ public class StreamableHttpWebFluxTransportAutoConfigurationTests {
@Test
void webFluxClientTransportsPresentIfWebClientStreamableHttpTransportPresent() {
this.applicationContext
.run(context -> assertThat(context.containsBean("streamableHttpwebFluxClientTransports")).isTrue());
.run(context -> assertThat(context.containsBean("streamableHttpWebFluxClientTransports")).isTrue());
}

@Test
void webFluxClientTransportsNotPresentIfMissingWebClientStreamableHttpTransportNotPresent() {
this.applicationContext
.withClassLoader(new FilteredClassLoader(
"io.modelcontextprotocol.client.transport.WebClientStreamableHttpTransport"))
.run(context -> assertThat(context.containsBean("streamableHttpwebFluxClientTransports")).isFalse());
.run(context -> assertThat(context.containsBean("streamableHttpWebFluxClientTransports")).isFalse());
}

@Test
void webFluxClientTransportsNotPresentIfMcpClientDisabled() {
this.applicationContext.withPropertyValues("spring.ai.mcp.client.enabled", "false")
.run(context -> assertThat(context.containsBean("streamableHttpwebFluxClientTransports")).isFalse());
.run(context -> assertThat(context.containsBean("streamableHttpWebFluxClientTransports")).isFalse());
}

@Test
void noTransportsCreatedWithEmptyConnections() {
this.applicationContext.run(context -> {
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpwebFluxClientTransports",
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpWebFluxClientTransports",
List.class);
assertThat(transports).isEmpty();
});
Expand All @@ -79,7 +79,7 @@ void singleConnectionCreatesOneTransport() {
this.applicationContext
.withPropertyValues("spring.ai.mcp.client.streamable-http.connections.server1.url=http://localhost:8080")
.run(context -> {
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpwebFluxClientTransports",
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpWebFluxClientTransports",
List.class);
assertThat(transports).hasSize(1);
assertThat(transports.get(0).name()).isEqualTo("server1");
Expand All @@ -93,7 +93,7 @@ void multipleConnectionsCreateMultipleTransports() {
.withPropertyValues("spring.ai.mcp.client.streamable-http.connections.server1.url=http://localhost:8080",
"spring.ai.mcp.client.streamable-http.connections.server2.url=http://otherserver:8081")
.run(context -> {
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpwebFluxClientTransports",
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpWebFluxClientTransports",
List.class);
assertThat(transports).hasSize(2);
assertThat(transports).extracting("name").containsExactlyInAnyOrder("server1", "server2");
Expand All @@ -113,7 +113,7 @@ void customStreamableHttpEndpointIsRespected() {
.withPropertyValues("spring.ai.mcp.client.streamable-http.connections.server1.url=http://localhost:8080",
"spring.ai.mcp.client.streamable-http.connections.server1.endpoint=/custom-mcp")
.run(context -> {
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpwebFluxClientTransports",
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpWebFluxClientTransports",
List.class);
assertThat(transports).hasSize(1);
assertThat(transports.get(0).name()).isEqualTo("server1");
Expand All @@ -130,7 +130,7 @@ void customWebClientBuilderIsUsed() {
.withPropertyValues("spring.ai.mcp.client.streamable-http.connections.server1.url=http://localhost:8080")
.run(context -> {
assertThat(context.getBean(WebClient.Builder.class)).isNotNull();
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpwebFluxClientTransports",
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpWebFluxClientTransports",
List.class);
assertThat(transports).hasSize(1);
});
Expand All @@ -142,7 +142,7 @@ void customObjectMapperIsUsed() {
.withPropertyValues("spring.ai.mcp.client.streamable-http.connections.server1.url=http://localhost:8080")
.run(context -> {
assertThat(context.getBean(ObjectMapper.class)).isNotNull();
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpwebFluxClientTransports",
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpWebFluxClientTransports",
List.class);
assertThat(transports).hasSize(1);
});
Expand All @@ -153,7 +153,7 @@ void defaultStreamableHttpEndpointIsUsedWhenNotSpecified() {
this.applicationContext
.withPropertyValues("spring.ai.mcp.client.streamable-http.connections.server1.url=http://localhost:8080")
.run(context -> {
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpwebFluxClientTransports",
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpWebFluxClientTransports",
List.class);
assertThat(transports).hasSize(1);
assertThat(transports.get(0).name()).isEqualTo("server1");
Expand All @@ -170,7 +170,7 @@ void mixedConnectionsWithAndWithoutCustomStreamableHttpEndpoint() {
"spring.ai.mcp.client.streamable-http.connections.server1.endpoint=/custom-mcp",
"spring.ai.mcp.client.streamable-http.connections.server2.url=http://otherserver:8081")
.run(context -> {
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpwebFluxClientTransports",
List<NamedClientMcpTransport> transports = context.getBean("streamableHttpWebFluxClientTransports",
List.class);
assertThat(transports).hasSize(2);
assertThat(transports).extracting("name").containsExactlyInAnyOrder("server1", "server2");
Expand Down