@@ -379,6 +379,7 @@ TYPED_TEST(FlightSQLODBCTestBase, TestSQLDriverConnect) {
379379 EXPECT_EQ (ret, SQL_SUCCESS);
380380}
381381
382+ #if defined _WIN32 || defined _WIN64
382383TYPED_TEST (FlightSQLODBCTestBase, TestSQLDriverConnectDsn) {
383384 // ODBC Environment
384385 SQLHENV env;
@@ -452,58 +453,6 @@ TYPED_TEST(FlightSQLODBCTestBase, TestSQLDriverConnectDsn) {
452453 EXPECT_EQ (ret, SQL_SUCCESS);
453454}
454455
455- TEST_F (FlightSQLODBCRemoteTestBase, TestSQLDriverConnectInvalidUid) {
456- // ODBC Environment
457- SQLHENV env;
458- SQLHDBC conn;
459-
460- // Allocate an environment handle
461- SQLRETURN ret = SQLAllocEnv (&env);
462-
463- EXPECT_EQ (ret, SQL_SUCCESS);
464-
465- ret = SQLSetEnvAttr (env, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0 );
466-
467- EXPECT_EQ (ret, SQL_SUCCESS);
468-
469- // Allocate a connection using alloc handle
470- ret = SQLAllocHandle (SQL_HANDLE_DBC, env, &conn);
471-
472- EXPECT_EQ (ret, SQL_SUCCESS);
473-
474- // Invalid connect string
475- std::string connect_str = getInvalidConnectionString ();
476-
477- ASSERT_OK_AND_ASSIGN (std::wstring wconnect_str,
478- arrow::util::UTF8ToWideString (connect_str));
479- std::vector<SQLWCHAR> connect_str0 (wconnect_str.begin (), wconnect_str.end ());
480-
481- SQLWCHAR outstr[ODBC_BUFFER_SIZE];
482- SQLSMALLINT outstrlen;
483-
484- // Connecting to ODBC server.
485- ret = SQLDriverConnect (conn, NULL , &connect_str0[0 ],
486- static_cast <SQLSMALLINT>(connect_str0.size ()), outstr,
487- ODBC_BUFFER_SIZE, &outstrlen, SQL_DRIVER_NOPROMPT);
488-
489- EXPECT_TRUE (ret == SQL_ERROR);
490-
491- VerifyOdbcErrorState (SQL_HANDLE_DBC, conn, error_state_28000);
492-
493- std::string out_connection_string = ODBC::SqlWcharToString (outstr, outstrlen);
494- EXPECT_TRUE (out_connection_string.empty ());
495-
496- // Free connection handle
497- ret = SQLFreeHandle (SQL_HANDLE_DBC, conn);
498-
499- EXPECT_EQ (ret, SQL_SUCCESS);
500-
501- // Free environment handle
502- ret = SQLFreeHandle (SQL_HANDLE_ENV, env);
503-
504- EXPECT_EQ (ret, SQL_SUCCESS);
505- }
506-
507456TYPED_TEST (FlightSQLODBCTestBase, TestSQLConnect) {
508457 // ODBC Environment
509458 SQLHENV env;
@@ -791,6 +740,60 @@ TEST_F(FlightSQLODBCRemoteTestBase, TestSQLConnectDSNPrecedence) {
791740 EXPECT_EQ (ret, SQL_SUCCESS);
792741}
793742
743+ #endif
744+
745+ TEST_F (FlightSQLODBCRemoteTestBase, TestSQLDriverConnectInvalidUid) {
746+ // ODBC Environment
747+ SQLHENV env;
748+ SQLHDBC conn;
749+
750+ // Allocate an environment handle
751+ SQLRETURN ret = SQLAllocEnv (&env);
752+
753+ EXPECT_EQ (ret, SQL_SUCCESS);
754+
755+ ret = SQLSetEnvAttr (env, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0 );
756+
757+ EXPECT_EQ (ret, SQL_SUCCESS);
758+
759+ // Allocate a connection using alloc handle
760+ ret = SQLAllocHandle (SQL_HANDLE_DBC, env, &conn);
761+
762+ EXPECT_EQ (ret, SQL_SUCCESS);
763+
764+ // Invalid connect string
765+ std::string connect_str = getInvalidConnectionString ();
766+
767+ ASSERT_OK_AND_ASSIGN (std::wstring wconnect_str,
768+ arrow::util::UTF8ToWideString (connect_str));
769+ std::vector<SQLWCHAR> connect_str0 (wconnect_str.begin (), wconnect_str.end ());
770+
771+ SQLWCHAR outstr[ODBC_BUFFER_SIZE];
772+ SQLSMALLINT outstrlen;
773+
774+ // Connecting to ODBC server.
775+ ret = SQLDriverConnect (conn, NULL , &connect_str0[0 ],
776+ static_cast <SQLSMALLINT>(connect_str0.size ()), outstr,
777+ ODBC_BUFFER_SIZE, &outstrlen, SQL_DRIVER_NOPROMPT);
778+
779+ EXPECT_TRUE (ret == SQL_ERROR);
780+
781+ VerifyOdbcErrorState (SQL_HANDLE_DBC, conn, error_state_28000);
782+
783+ std::string out_connection_string = ODBC::SqlWcharToString (outstr, outstrlen);
784+ EXPECT_TRUE (out_connection_string.empty ());
785+
786+ // Free connection handle
787+ ret = SQLFreeHandle (SQL_HANDLE_DBC, conn);
788+
789+ EXPECT_EQ (ret, SQL_SUCCESS);
790+
791+ // Free environment handle
792+ ret = SQLFreeHandle (SQL_HANDLE_ENV, env);
793+
794+ EXPECT_EQ (ret, SQL_SUCCESS);
795+ }
796+
794797TEST (SQLDisconnect, TestSQLDisconnectWithoutConnection) {
795798 // ODBC Environment
796799 SQLHENV env;
0 commit comments