2323import io .debezium .platform .data .model .ConnectionEntity ;
2424import io .debezium .platform .domain .views .Connection ;
2525import io .debezium .platform .environment .connection .destination .MilvusConnectionValidator ;
26- import io .debezium .platform .environment .database .MilvusTestResource ;
2726import io .quarkus .test .common .QuarkusTestResource ;
2827import io .quarkus .test .junit .QuarkusTest ;
2928
3433 * connection validation against an actual Milvus instance without authentication.
3534 * </p>
3635 *
37- * @author Pranav Tiwari
3836 */
3937@ QuarkusTest
4038@ QuarkusTestResource (MilvusTestResource .class )
@@ -62,6 +60,7 @@ void shouldConnectWithoutAuth() {
6260 ConnectionValidationResult result = connectionValidator .validate (connectionConfig );
6361
6462 assertTrue (result .valid (), "Connection validation should succeed" );
63+ assertThat (result .message ()).doesNotContainIgnoringCase ("error" , "fail" , "invalid" );
6564 }
6665
6766 @ Test
@@ -84,6 +83,7 @@ void shouldConnectWithDatabase() {
8483 ConnectionValidationResult result = connectionValidator .validate (connectionConfig );
8584
8685 assertTrue (result .valid (), "Connection validation with database should succeed" );
86+ assertThat (result .message ()).doesNotContainIgnoringCase ("error" , "fail" , "invalid" );
8787 }
8888
8989 @ Test
@@ -132,4 +132,123 @@ void shouldHandleTimeout() {
132132 assertFalse (result .valid (), "Connection validation should fail" );
133133 assertThat (result .message ()).containsAnyOf ("timeout" , "connect" , "Connection timeout" );
134134 }
135+
136+ @ Test
137+ @ DisplayName ("Should successfully connect with username and password authentication" )
138+ void shouldConnectWithUsernamePassword () {
139+ GenericContainer <?> container = MilvusTestResource .getContainer ();
140+
141+ Awaitility .await ()
142+ .atMost (300 , TimeUnit .SECONDS )
143+ .until (container ::isRunning );
144+
145+ String uri = String .format ("http://%s:%d" ,
146+ container .getHost (),
147+ container .getMappedPort (19530 ));
148+
149+ Connection connectionConfig = new TestConnectionView (ConnectionEntity .Type .MILVUS , Map .of (
150+ "uri" , uri ,
151+ "username" , "root" ,
152+ "password" , "milvus" ));
153+
154+ ConnectionValidationResult result = connectionValidator .validate (connectionConfig );
155+
156+ assertTrue (result .valid (), "Connection validation with username and password should succeed" );
157+ assertThat (result .message ()).doesNotContainIgnoringCase ("error" , "fail" , "invalid" , "authentication" );
158+ }
159+
160+ @ Test
161+ @ DisplayName ("Should successfully connect with token authentication" )
162+ void shouldConnectWithTokenAuth () {
163+ GenericContainer <?> container = MilvusTestResource .getContainer ();
164+
165+ Awaitility .await ()
166+ .atMost (300 , TimeUnit .SECONDS )
167+ .until (container ::isRunning );
168+
169+ String uri = String .format ("http://%s:%d" ,
170+ container .getHost (),
171+ container .getMappedPort (19530 ));
172+
173+ Connection connectionConfig = new TestConnectionView (ConnectionEntity .Type .MILVUS , Map .of (
174+ "uri" , uri ,
175+ "token" , "root:milvus" ));
176+
177+ ConnectionValidationResult result = connectionValidator .validate (connectionConfig );
178+
179+ assertTrue (result .valid (), "Connection validation with token authentication should succeed" );
180+ assertThat (result .message ()).doesNotContainIgnoringCase ("error" , "fail" , "invalid" , "authentication" );
181+ }
182+
183+ @ Test
184+ @ DisplayName ("Should fail with invalid username and password" )
185+ void shouldFailWithInvalidCredentials () {
186+ GenericContainer <?> container = MilvusTestResource .getContainer ();
187+
188+ Awaitility .await ()
189+ .atMost (300 , TimeUnit .SECONDS )
190+ .until (container ::isRunning );
191+
192+ String uri = String .format ("http://%s:%d" ,
193+ container .getHost (),
194+ container .getMappedPort (19530 ));
195+
196+ Connection connectionConfig = new TestConnectionView (ConnectionEntity .Type .MILVUS , Map .of (
197+ "uri" , uri ,
198+ "username" , "root" ,
199+ "password" , "wrongpassword" ));
200+
201+ ConnectionValidationResult result = connectionValidator .validate (connectionConfig );
202+
203+ assertFalse (result .valid (), "Connection validation with invalid credentials should fail" );
204+ assertThat (result .message ()).containsAnyOf ("authentication" , "auth" , "permission" , "credentials" );
205+ }
206+
207+ @ Test
208+ @ DisplayName ("Should fail with invalid token" )
209+ void shouldFailWithInvalidToken () {
210+ GenericContainer <?> container = MilvusTestResource .getContainer ();
211+
212+ Awaitility .await ()
213+ .atMost (300 , TimeUnit .SECONDS )
214+ .until (container ::isRunning );
215+
216+ String uri = String .format ("http://%s:%d" ,
217+ container .getHost (),
218+ container .getMappedPort (19530 ));
219+
220+ Connection connectionConfig = new TestConnectionView (ConnectionEntity .Type .MILVUS , Map .of (
221+ "uri" , uri ,
222+ "token" , "root:invalidtoken" ));
223+
224+ ConnectionValidationResult result = connectionValidator .validate (connectionConfig );
225+
226+ assertFalse (result .valid (), "Connection validation with invalid token should fail" );
227+ assertThat (result .message ()).containsAnyOf ("authentication" , "auth" , "permission" , "credentials" );
228+ }
229+
230+ @ Test
231+ @ DisplayName ("Should successfully connect with all parameters including authentication" )
232+ void shouldConnectWithAllParams () {
233+ GenericContainer <?> container = MilvusTestResource .getContainer ();
234+
235+ Awaitility .await ()
236+ .atMost (300 , TimeUnit .SECONDS )
237+ .until (container ::isRunning );
238+
239+ String uri = String .format ("http://%s:%d" ,
240+ container .getHost (),
241+ container .getMappedPort (19530 ));
242+
243+ Connection connectionConfig = new TestConnectionView (ConnectionEntity .Type .MILVUS , Map .of (
244+ "uri" , uri ,
245+ "database" , "default" ,
246+ "username" , "root" ,
247+ "password" , "milvus" ));
248+
249+ ConnectionValidationResult result = connectionValidator .validate (connectionConfig );
250+
251+ assertTrue (result .valid (), "Connection validation with all parameters should succeed" );
252+ assertThat (result .message ()).doesNotContainIgnoringCase ("error" , "fail" , "invalid" , "authentication" );
253+ }
135254}
0 commit comments