Skip to content

Commit 4532f64

Browse files
ielatifilayaperumalg
authored andcommitted
Refactor AutoConfiguration tests to use the centralised SpringAiTestAutoConfigurations
- Refactor Anthropic AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Remove the use of BaseAnthropicIT#anthropicAutoConfig() and replace it by SpringAiTestAutoConfigurations#of() - Refactor Azure OpenAI AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Refactor Bedrock AI AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Refactor DeepSeek AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Refactor ElevenLabs AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Refactor Google Gen AI AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Remove the use of methods BaseGoogleGenAiIT.googleGenAiEmbeddingAutoConfig() and BaseGoogleGenAiIT.googleGenAiChatAutoConfig() and replace them by SpringAiTestAutoConfigurations.of() - Refactor MiniMax AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Refactor Mistral AI AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Remove the use of BaseMistralAiIt and replace it by SpringAiTestAutoConfigurations.of() - Refactor OCI Generative AI AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Refactor Ollama AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Refactor OpenAI AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Refactor Vertex AI AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Refactor ZhiPu AI AutoConfiguration tests using 'SpringAiTestAutoConfigurations' - Removes the use of ZhiPuAiITUtil and replace it by SpringAiTestAutoConfigurations.of() Signed-off-by: Issam El-atif <[email protected]>
1 parent 9de3592 commit 4532f64

File tree

79 files changed

+533
-1018
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+533
-1018
lines changed

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/test/java/org/springframework/ai/model/anthropic/autoconfigure/AnthropicChatAutoConfigurationIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springframework.ai.chat.model.ChatResponse;
3434
import org.springframework.ai.chat.model.Generation;
3535
import org.springframework.ai.chat.prompt.Prompt;
36+
import org.springframework.ai.utils.SpringAiTestAutoConfigurations;
3637
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3738

3839
import static org.assertj.core.api.Assertions.assertThat;
@@ -44,7 +45,7 @@ public class AnthropicChatAutoConfigurationIT {
4445

4546
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
4647
.withPropertyValues("spring.ai.anthropic.apiKey=" + System.getenv("ANTHROPIC_API_KEY"))
47-
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class));
48+
.withConfiguration(SpringAiTestAutoConfigurations.of(AnthropicChatAutoConfiguration.class));
4849

4950
@Test
5051
void call() {

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/test/java/org/springframework/ai/model/anthropic/autoconfigure/AnthropicModelConfigurationTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.junit.jupiter.api.Test;
2020

2121
import org.springframework.ai.anthropic.AnthropicChatModel;
22+
import org.springframework.ai.utils.SpringAiTestAutoConfigurations;
2223
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2324

2425
import static org.assertj.core.api.Assertions.assertThat;
@@ -32,7 +33,7 @@ public class AnthropicModelConfigurationTests {
3233

3334
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
3435
.withPropertyValues("spring.ai.anthropic.apiKey=" + System.getenv("ANTHROPIC_API_KEY"))
35-
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class));
36+
.withConfiguration(SpringAiTestAutoConfigurations.of(AnthropicChatAutoConfiguration.class));
3637

3738
@Test
3839
void chatModelActivation() {

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/test/java/org/springframework/ai/model/anthropic/autoconfigure/AnthropicPropertiesTests.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.springframework.ai.anthropic.AnthropicChatModel;
2222
import org.springframework.ai.anthropic.api.AnthropicApi.ToolChoiceTool;
2323
import org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration;
24+
import org.springframework.ai.utils.SpringAiTestAutoConfigurations;
2425
import org.springframework.boot.autoconfigure.AutoConfigurations;
2526
import org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration;
2627
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
@@ -45,7 +46,7 @@ public void connectionProperties() {
4546
"spring.ai.anthropic.chat.options.model=MODEL_XYZ",
4647
"spring.ai.anthropic.chat.options.temperature=0.55")
4748
// @formatter:on
48-
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class))
49+
.withConfiguration(SpringAiTestAutoConfigurations.of(AnthropicChatAutoConfiguration.class))
4950
.run(context -> {
5051
var chatProperties = context.getBean(AnthropicChatProperties.class);
5152
var connectionProperties = context.getBean(AnthropicConnectionProperties.class);
@@ -81,7 +82,7 @@ public void chatOptionsTest() {
8182
"spring.ai.anthropic.chat.options.toolChoice={\"name\":\"toolChoiceFunctionName\",\"type\":\"tool\"}"
8283
)
8384
// @formatter:on
84-
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class))
85+
.withConfiguration(SpringAiTestAutoConfigurations.of(AnthropicChatAutoConfiguration.class))
8586
.run(context -> {
8687
var chatProperties = context.getBean(AnthropicChatProperties.class);
8788
var connectionProperties = context.getBean(AnthropicConnectionProperties.class);
@@ -109,7 +110,7 @@ public void chatCompletionDisabled() {
109110

110111
// It is enabled by default
111112
new ApplicationContextRunner().withPropertyValues("spring.ai.anthropic.api-key=API_KEY")
112-
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class))
113+
.withConfiguration(SpringAiTestAutoConfigurations.of(AnthropicChatAutoConfiguration.class))
113114
.run(context -> {
114115
assertThat(context.getBeansOfType(AnthropicChatProperties.class)).isNotEmpty();
115116
assertThat(context.getBeansOfType(AnthropicChatModel.class)).isNotEmpty();
@@ -118,7 +119,7 @@ public void chatCompletionDisabled() {
118119
// Explicitly enable the chat auto-configuration.
119120
new ApplicationContextRunner()
120121
.withPropertyValues("spring.ai.anthropic.api-key=API_KEY", "spring.ai.model.chat=anthropic")
121-
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class))
122+
.withConfiguration(SpringAiTestAutoConfigurations.of(AnthropicChatAutoConfiguration.class))
122123
.run(context -> {
123124
assertThat(context.getBeansOfType(AnthropicChatProperties.class)).isNotEmpty();
124125
assertThat(context.getBeansOfType(AnthropicChatModel.class)).isNotEmpty();

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/test/java/org/springframework/ai/model/anthropic/autoconfigure/BaseAnthropicIT.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/test/java/org/springframework/ai/model/anthropic/autoconfigure/tool/FunctionCallWithFunctionBeanIT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@
3131
import org.springframework.ai.chat.model.ChatResponse;
3232
import org.springframework.ai.chat.prompt.Prompt;
3333
import org.springframework.ai.model.anthropic.autoconfigure.AnthropicChatAutoConfiguration;
34-
import org.springframework.ai.model.anthropic.autoconfigure.BaseAnthropicIT;
3534
import org.springframework.ai.model.anthropic.autoconfigure.tool.MockWeatherService.Request;
3635
import org.springframework.ai.model.anthropic.autoconfigure.tool.MockWeatherService.Response;
3736
import org.springframework.ai.model.tool.ToolCallingChatOptions;
37+
import org.springframework.ai.utils.SpringAiTestAutoConfigurations;
3838
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3939
import org.springframework.context.annotation.Bean;
4040
import org.springframework.context.annotation.Configuration;
@@ -49,7 +49,7 @@ class FunctionCallWithFunctionBeanIT {
4949

5050
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
5151
.withPropertyValues("spring.ai.anthropic.apiKey=" + System.getenv("ANTHROPIC_API_KEY"))
52-
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class))
52+
.withConfiguration(SpringAiTestAutoConfigurations.of(AnthropicChatAutoConfiguration.class))
5353
.withUserConfiguration(Config.class);
5454

5555
@Test

auto-configurations/models/spring-ai-autoconfigure-model-anthropic/src/test/java/org/springframework/ai/model/anthropic/autoconfigure/tool/FunctionCallWithPromptFunctionIT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
import org.springframework.ai.chat.model.ChatResponse;
3131
import org.springframework.ai.chat.prompt.Prompt;
3232
import org.springframework.ai.model.anthropic.autoconfigure.AnthropicChatAutoConfiguration;
33-
import org.springframework.ai.model.anthropic.autoconfigure.BaseAnthropicIT;
3433
import org.springframework.ai.tool.function.FunctionToolCallback;
34+
import org.springframework.ai.utils.SpringAiTestAutoConfigurations;
3535
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3636

3737
import static org.assertj.core.api.Assertions.assertThat;
@@ -43,7 +43,7 @@ public class FunctionCallWithPromptFunctionIT {
4343

4444
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
4545
.withPropertyValues("spring.ai.anthropic.apiKey=" + System.getenv("ANTHROPIC_API_KEY"))
46-
.withConfiguration(BaseAnthropicIT.anthropicAutoConfig(AnthropicChatAutoConfiguration.class));
46+
.withConfiguration(SpringAiTestAutoConfigurations.of(AnthropicChatAutoConfiguration.class));
4747

4848
@Test
4949
void functionCallTest() {

auto-configurations/models/spring-ai-autoconfigure-model-azure-openai/src/test/java/org/springframework/ai/model/azure/openai/autoconfigure/AzureOpenAiAutoConfigurationEntraIT.java

Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@
4949
import org.springframework.ai.chat.prompt.Prompt;
5050
import org.springframework.ai.chat.prompt.SystemPromptTemplate;
5151
import org.springframework.ai.embedding.EmbeddingResponse;
52-
import org.springframework.ai.model.tool.autoconfigure.ToolCallingAutoConfiguration;
53-
import org.springframework.boot.autoconfigure.AutoConfigurations;
52+
import org.springframework.ai.utils.SpringAiTestAutoConfigurations;
5453
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
5554
import org.springframework.core.io.ClassPathResource;
5655
import org.springframework.core.io.Resource;
@@ -63,6 +62,7 @@
6362
* @author Piotr Olaszewski
6463
* @author Soby Chacko
6564
* @author Manuel Andreo Garcia
65+
* @author Issam El-atif
6666
* @since 0.8.0
6767
*/
6868
@DisabledIfEnvironmentVariable(named = "AZURE_OPENAI_API_KEY", matches = ".+")
@@ -99,9 +99,7 @@ class AzureOpenAiAutoConfigurationEntraIT {
9999

100100
@Test
101101
void chatCompletion() {
102-
this.contextRunner
103-
.withConfiguration(
104-
AutoConfigurations.of(ToolCallingAutoConfiguration.class, AzureOpenAiChatAutoConfiguration.class))
102+
this.contextRunner.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
105103
.run(context -> {
106104
AzureOpenAiChatModel chatModel = context.getBean(AzureOpenAiChatModel.class);
107105
ChatResponse response = chatModel.call(new Prompt(List.of(this.userMessage, this.systemMessage)));
@@ -111,9 +109,7 @@ void chatCompletion() {
111109

112110
@Test
113111
void httpRequestContainsUserAgentAndCustomHeaders() {
114-
this.contextRunner
115-
.withConfiguration(
116-
AutoConfigurations.of(ToolCallingAutoConfiguration.class, AzureOpenAiChatAutoConfiguration.class))
112+
this.contextRunner.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
117113
.withPropertyValues("spring.ai.azure.openai.custom-headers.foo=bar",
118114
"spring.ai.azure.openai.custom-headers.fizz=buzz")
119115
.run(context -> {
@@ -140,9 +136,7 @@ void httpRequestContainsUserAgentAndCustomHeaders() {
140136

141137
@Test
142138
void chatCompletionStreaming() {
143-
this.contextRunner
144-
.withConfiguration(
145-
AutoConfigurations.of(ToolCallingAutoConfiguration.class, AzureOpenAiChatAutoConfiguration.class))
139+
this.contextRunner.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
146140
.run(context -> {
147141

148142
AzureOpenAiChatModel chatModel = context.getBean(AzureOpenAiChatModel.class);
@@ -167,8 +161,7 @@ void chatCompletionStreaming() {
167161
@Test
168162
void embedding() {
169163
this.contextRunner
170-
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
171-
AzureOpenAiEmbeddingAutoConfiguration.class))
164+
.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
172165
.run(context -> {
173166
AzureOpenAiEmbeddingModel embeddingModel = context.getBean(AzureOpenAiEmbeddingModel.class);
174167

@@ -189,8 +182,7 @@ void embedding() {
189182
@EnabledIfEnvironmentVariable(named = "AZURE_OPENAI_TRANSCRIPTION_DEPLOYMENT_NAME", matches = ".+")
190183
void transcribe() {
191184
this.contextRunner
192-
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
193-
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
185+
.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
194186
.run(context -> {
195187
AzureOpenAiAudioTranscriptionModel transcriptionModel = context
196188
.getBean(AzureOpenAiAudioTranscriptionModel.class);
@@ -205,28 +197,22 @@ void transcribe() {
205197
void chatActivation() {
206198

207199
// Disable the chat auto-configuration.
208-
this.contextRunner
209-
.withConfiguration(
210-
AutoConfigurations.of(ToolCallingAutoConfiguration.class, AzureOpenAiChatAutoConfiguration.class))
200+
this.contextRunner.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
211201
.withPropertyValues("spring.ai.model.chat=none")
212202
.run(context -> {
213203
assertThat(context.getBeansOfType(AzureOpenAiChatProperties.class)).isEmpty();
214204
assertThat(context.getBeansOfType(AzureOpenAiChatModel.class)).isEmpty();
215205
});
216206

217207
// The chat auto-configuration is enabled by default.
218-
this.contextRunner
219-
.withConfiguration(
220-
AutoConfigurations.of(ToolCallingAutoConfiguration.class, AzureOpenAiChatAutoConfiguration.class))
208+
this.contextRunner.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
221209
.run(context -> {
222210
assertThat(context.getBeansOfType(AzureOpenAiChatModel.class)).isNotEmpty();
223211
assertThat(context.getBeansOfType(AzureOpenAiChatProperties.class)).isNotEmpty();
224212
});
225213

226214
// Explicitly enable the chat auto-configuration.
227-
this.contextRunner
228-
.withConfiguration(
229-
AutoConfigurations.of(ToolCallingAutoConfiguration.class, AzureOpenAiChatAutoConfiguration.class))
215+
this.contextRunner.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
230216
.withPropertyValues("spring.ai.model.chat=azure-openai")
231217
.run(context -> {
232218
assertThat(context.getBeansOfType(AzureOpenAiChatModel.class)).isNotEmpty();
@@ -239,8 +225,7 @@ void embeddingActivation() {
239225

240226
// Disable the embedding auto-configuration.
241227
this.contextRunner
242-
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
243-
AzureOpenAiEmbeddingAutoConfiguration.class))
228+
.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
244229
.withPropertyValues("spring.ai.model.embedding=none")
245230
.run(context -> {
246231
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingModel.class)).isEmpty();
@@ -249,17 +234,15 @@ void embeddingActivation() {
249234

250235
// The embedding auto-configuration is enabled by default.
251236
this.contextRunner
252-
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
253-
AzureOpenAiEmbeddingAutoConfiguration.class))
237+
.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
254238
.run(context -> {
255239
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingModel.class)).isNotEmpty();
256240
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingProperties.class)).isNotEmpty();
257241
});
258242

259243
// Explicitly enable the embedding auto-configuration.
260244
this.contextRunner
261-
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
262-
AzureOpenAiEmbeddingAutoConfiguration.class))
245+
.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiEmbeddingAutoConfiguration.class))
263246
.withPropertyValues("spring.ai.model.embedding=azure-openai")
264247
.run(context -> {
265248
assertThat(context.getBeansOfType(AzureOpenAiEmbeddingModel.class)).isNotEmpty();
@@ -272,8 +255,7 @@ void audioTranscriptionActivation() {
272255

273256
// Disable the transcription auto-configuration.
274257
this.contextRunner
275-
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
276-
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
258+
.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
277259
.withPropertyValues("spring.ai.model.audio.transcription=none")
278260
.run(context -> {
279261
assertThat(context.getBeansOfType(AzureOpenAiAudioTranscriptionModel.class)).isEmpty();
@@ -282,14 +264,12 @@ void audioTranscriptionActivation() {
282264

283265
// The transcription auto-configuration is enabled by default.
284266
this.contextRunner
285-
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
286-
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
267+
.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
287268
.run(context -> assertThat(context.getBeansOfType(AzureOpenAiAudioTranscriptionModel.class)).isNotEmpty());
288269

289270
// Explicitly enable the transcription auto-configuration.
290271
this.contextRunner
291-
.withConfiguration(AutoConfigurations.of(ToolCallingAutoConfiguration.class,
292-
AzureOpenAiAudioTranscriptionAutoConfiguration.class))
272+
.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiAudioTranscriptionAutoConfiguration.class))
293273
.withPropertyValues("spring.ai.model.audio.transcription=azure-openai")
294274
.run(context -> assertThat(context.getBeansOfType(AzureOpenAiAudioTranscriptionModel.class)).isNotEmpty());
295275
}
@@ -298,9 +278,7 @@ void audioTranscriptionActivation() {
298278
void openAIClientBuilderCustomizer() {
299279
AtomicBoolean firstCustomizationApplied = new AtomicBoolean(false);
300280
AtomicBoolean secondCustomizationApplied = new AtomicBoolean(false);
301-
this.contextRunner
302-
.withConfiguration(
303-
AutoConfigurations.of(ToolCallingAutoConfiguration.class, AzureOpenAiChatAutoConfiguration.class))
281+
this.contextRunner.withConfiguration(SpringAiTestAutoConfigurations.of(AzureOpenAiChatAutoConfiguration.class))
304282
.withBean("first", AzureOpenAIClientBuilderCustomizer.class,
305283
() -> clientBuilder -> firstCustomizationApplied.set(true))
306284
.withBean("second", AzureOpenAIClientBuilderCustomizer.class,

0 commit comments

Comments
 (0)