Skip to content

Commit 25cd473

Browse files
alxkmilayaperumalg
authored andcommitted
test: Enhance MistralAiBindingsPropertiesProcessor test coverage
Co-authored-by: Oleksandr Klymenko <[email protected]> Signed-off-by: Oleksandr Klymenko <[email protected]>
1 parent aa948c9 commit 25cd473

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

spring-ai-spring-cloud-bindings/src/test/java/org/springframework/ai/bindings/MistralAiBindingsPropertiesProcessorTests.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,4 +151,64 @@ void onlyApiKeyWithoutUriShouldSetBothProperties() {
151151
assertThat(this.properties).containsEntry("spring.ai.mistralai.base-url", null);
152152
}
153153

154+
@Test
155+
void extraPropertiesAreIgnored() {
156+
Bindings extraPropsBinding = new Bindings(new Binding("test-name", Paths.get("test-path"),
157+
Map.of(Binding.TYPE, MistralAiBindingsPropertiesProcessor.TYPE, "api-key", "demo", "uri",
158+
"https://mistralai.example.com", "extra-property", "should-be-ignored", "another-prop",
159+
"also-ignored")));
160+
161+
new MistralAiBindingsPropertiesProcessor().process(this.environment, extraPropsBinding, this.properties);
162+
163+
assertThat(this.properties).hasSize(2);
164+
assertThat(this.properties).containsEntry("spring.ai.mistralai.api-key", "demo");
165+
assertThat(this.properties).containsEntry("spring.ai.mistralai.base-url", "https://mistralai.example.com");
166+
assertThat(this.properties).doesNotContainKey("spring.ai.mistralai.extra-property");
167+
}
168+
169+
@Test
170+
void existingPropertiesAreOverwritten() {
171+
this.properties.put("spring.ai.mistralai.api-key", "old-key");
172+
this.properties.put("spring.ai.mistralai.base-url", "https://old.example.com");
173+
174+
new MistralAiBindingsPropertiesProcessor().process(this.environment, this.bindings, this.properties);
175+
176+
assertThat(this.properties).containsEntry("spring.ai.mistralai.api-key", "demo");
177+
assertThat(this.properties).containsEntry("spring.ai.mistralai.base-url", "https://my.mistralai.example.net");
178+
}
179+
180+
@Test
181+
void bindingWithDifferentKeyNamesAreIgnored() {
182+
// Using different key names (not "api-key" and "uri")
183+
Bindings wrongKeysBinding = new Bindings(new Binding("test-name", Paths.get("test-path"),
184+
Map.of(Binding.TYPE, MistralAiBindingsPropertiesProcessor.TYPE, "apiKey", "demo", // Wrong
185+
// key
186+
// name
187+
// (camelCase)
188+
"url", "https://mistralai.example.com"))); // Wrong key name
189+
190+
new MistralAiBindingsPropertiesProcessor().process(this.environment, wrongKeysBinding, this.properties);
191+
192+
// Should set null for missing expected keys
193+
assertThat(this.properties).containsEntry("spring.ai.mistralai.api-key", null);
194+
assertThat(this.properties).containsEntry("spring.ai.mistralai.base-url", null);
195+
}
196+
197+
@Test
198+
void multipleBindingsWithMistralAiTypeShouldProcessLast() {
199+
Binding mistralBinding1 = new Binding("mistral-1", Paths.get("path-1"), Map.of(Binding.TYPE,
200+
MistralAiBindingsPropertiesProcessor.TYPE, "api-key", "key1", "uri", "https://mistral1.example.com"));
201+
202+
Binding mistralBinding2 = new Binding("mistral-2", Paths.get("path-2"), Map.of(Binding.TYPE,
203+
MistralAiBindingsPropertiesProcessor.TYPE, "api-key", "key2", "uri", "https://mistral2.example.com"));
204+
205+
Bindings multipleBindings = new Bindings(mistralBinding1, mistralBinding2);
206+
207+
new MistralAiBindingsPropertiesProcessor().process(this.environment, multipleBindings, this.properties);
208+
209+
// Should process the last matching binding (overrides previous)
210+
assertThat(this.properties).containsEntry("spring.ai.mistralai.api-key", "key2");
211+
assertThat(this.properties).containsEntry("spring.ai.mistralai.base-url", "https://mistral2.example.com");
212+
}
213+
154214
}

0 commit comments

Comments
 (0)