def test_1122_connection_attributes(self):
     "1122 - test connection attribute values"
     connection = oracledb.connect(test_env.get_main_user(),
                                   test_env.get_main_password(),
                                   test_env.get_connect_string(),
                                   encoding="ASCII")
     self.assertEqual(connection.maxBytesPerCharacter, 1)
     connection = oracledb.connect(test_env.get_main_user(),
                                   test_env.get_main_password(),
                                   test_env.get_connect_string(),
                                   encoding="UTF-8")
     self.assertEqual(connection.maxBytesPerCharacter, 4)
     if test_env.get_client_version() >= (12, 1):
         self.assertEqual(connection.ltxid, b'')
     self.assertEqual(connection.current_schema, None)
     connection.current_schema = "test_schema"
     self.assertEqual(connection.current_schema, "test_schema")
     self.assertEqual(connection.edition, None)
     connection.external_name = "test_external"
     self.assertEqual(connection.external_name, "test_external")
     connection.internal_name = "test_internal"
     self.assertEqual(connection.internal_name, "test_internal")
     connection.stmtcachesize = 30
     self.assertEqual(connection.stmtcachesize, 30)
     self.assertRaises(TypeError, connection.stmtcachesize, 20.5)
     self.assertRaises(TypeError, connection.stmtcachesize, "value")
 def test_2407_heterogeneous(self):
     "2407 - test heterogeneous pool with user and password specified"
     pool = test_env.get_pool(min=2,
                              max=8,
                              increment=3,
                              homogeneous=False,
                              getmode=oracledb.SPOOL_ATTRVAL_WAIT)
     self.assertEqual(pool.homogeneous, 0)
     conn = pool.acquire()
     self.__verify_connection(pool.acquire(), test_env.get_main_user())
     conn.close()
     conn = pool.acquire(test_env.get_main_user(),
                         test_env.get_main_password())
     self.__verify_connection(conn, test_env.get_main_user())
     conn.close()
     conn = pool.acquire(test_env.get_proxy_user(),
                         test_env.get_proxy_password())
     self.__verify_connection(conn, test_env.get_proxy_user())
     conn.close()
     user_str = "%s[%s]" % \
             (test_env.get_main_user(), test_env.get_proxy_user())
     conn = pool.acquire(user_str, test_env.get_main_password())
     self.__verify_connection(conn, test_env.get_proxy_user(),
                              test_env.get_main_user())
     conn.close()
 def test_1107_change_password(self):
     "1107 - test changing password"
     connection = test_env.get_connection()
     if self.is_on_oracle_cloud(connection):
         self.skipTest("passwords on Oracle Cloud are strictly controlled")
     sys_random = random.SystemRandom()
     new_password = "".join(sys_random.choice(string.ascii_letters) \
                    for i in range(20))
     connection.changepassword(test_env.get_main_password(), new_password)
     cconnection = oracledb.connect(test_env.get_main_user(), new_password,
                                    test_env.get_connect_string())
     connection.changepassword(new_password, test_env.get_main_password())
 def test_1115_single_arg(self):
     "1115 - connection to database with user, password, DSN together"
     arg = "%s/%s@%s" % (test_env.get_main_user(),
                         test_env.get_main_password(),
                         test_env.get_connect_string())
     connection = oracledb.connect(arg)
     self.__verify_args(connection)
 def test_1106_bad_password(self):
     "1106 - connection to database with bad password"
     self.assertRaises(oracledb.DatabaseError,
                       oracledb.connect,
                       user=test_env.get_main_user(),
                       password=test_env.get_main_password() + "X",
                       dsn=test_env.get_connect_string())
 def test_1102_app_context_negative(self):
     "1102 - test invalid use of application context"
     self.assertRaises(TypeError,
                       oracledb.connect,
                       test_env.get_main_user(),
                       test_env.get_main_password(),
                       test_env.get_connect_string(),
                       appcontext=[('userenv', 'action')])
 def test_1108_change_password_negative(self):
     "1108 - test changing password to an invalid value"
     connection = test_env.get_connection()
     if self.is_on_oracle_cloud(connection):
         self.skipTest("passwords on Oracle Cloud are strictly controlled")
     new_password = "******" * 150
     self.assertRaises(oracledb.DatabaseError, connection.changepassword,
                       test_env.get_main_password(), new_password)
 def test_2408_heterogenous_without_user(self):
     "2408 - test heterogeneous pool without user and password specified"
     pool = test_env.get_pool(user="", password="", min=2, max=8,
                              increment=3,
                              getmode=oracledb.SPOOL_ATTRVAL_WAIT,
                              homogeneous=False)
     self.__verify_connection(pool.acquire(test_env.get_main_user(),
                              test_env.get_main_password()),
                              test_env.get_main_user())
     self.__verify_connection(pool.acquire(test_env.get_proxy_user(),
                              test_env.get_proxy_password()),
                              test_env.get_proxy_user())
     user_str = "%s[%s]" % \
             (test_env.get_main_user(), test_env.get_proxy_user())
     self.__verify_connection(pool.acquire(user_str,
                              test_env.get_main_password()),
                              test_env.get_proxy_user(),
                              test_env.get_main_user())
 def test_1109_parse_password(self):
     "1109 - test connecting with password containing / and @ symbols"
     connection = test_env.get_connection()
     if self.is_on_oracle_cloud(connection):
         self.skipTest("passwords on Oracle Cloud are strictly controlled")
     sys_random = random.SystemRandom()
     chars = list(
         sys_random.choice(string.ascii_letters) for i in range(20))
     chars[4] = "/"
     chars[8] = "@"
     new_password = "".join(chars)
     connection.changepassword(test_env.get_main_password(), new_password)
     try:
         arg = "%s/%s@%s" % (test_env.get_main_user(), new_password,
                             test_env.get_connect_string())
         oracledb.connect(arg)
     finally:
         connection.changepassword(new_password,
                                   test_env.get_main_password())
 def test_1110_encodings(self):
     "1110 - connection with only encoding/nencoding specified should work"
     connection = oracledb.connect(test_env.get_main_user(),
                                   test_env.get_main_password(),
                                   test_env.get_connect_string())
     encoding = connection.encoding
     nencoding = connection.nencoding
     alt_encoding = "ISO-8859-1"
     connection = oracledb.connect(test_env.get_main_user(),
                                   test_env.get_main_password(),
                                   test_env.get_connect_string(),
                                   encoding=alt_encoding)
     self.assertEqual(connection.encoding, alt_encoding)
     self.assertEqual(connection.nencoding, nencoding)
     connection = oracledb.connect(test_env.get_main_user(),
                                   test_env.get_main_password(),
                                   test_env.get_connect_string(),
                                   nencoding=alt_encoding)
     self.assertEqual(connection.encoding, encoding)
     self.assertEqual(connection.nencoding, alt_encoding)
 def test_1105_bad_connect_string(self):
     "1105 - connection to database with bad connect string"
     self.assertRaises(oracledb.DatabaseError, oracledb.connect,
                       test_env.get_main_user())
     self.assertRaises(oracledb.DatabaseError, oracledb.connect,
                       test_env.get_main_user() + "@" + \
                       test_env.get_connect_string())
     self.assertRaises(oracledb.DatabaseError, oracledb.connect,
                       test_env.get_main_user() + "@" + \
                       test_env.get_connect_string() + "/" + \
                       test_env.get_main_password())
 def test_1111_different_encodings(self):
     "1111 - different encodings can be specified for encoding/nencoding"
     connection = oracledb.connect(test_env.get_main_user(),
                                   test_env.get_main_password(),
                                   test_env.get_connect_string(),
                                   encoding="UTF-8",
                                   nencoding="UTF-16")
     value = "\u03b4\u4e2a"
     cursor = connection.cursor()
     nchar_var = cursor.var(oracledb.DB_TYPE_NVARCHAR, 100)
     nchar_var.setvalue(0, value)
     cursor.execute("select :value from dual", value=nchar_var)
     result, = cursor.fetchone()
     self.assertEqual(result, value)
예제 #13
0
 def test_1915_nclob_different_encodings(self):
     "1915 - test binding and fetching NCLOB data (different encodings)"
     connection = oracledb.connect(test_env.get_main_user(),
                                   test_env.get_main_password(),
                                   test_env.get_connect_string(),
                                   encoding="UTF-8",
                                   nencoding="UTF-16")
     value = "\u03b4\u4e2a"
     cursor = connection.cursor()
     cursor.execute("truncate table TestNCLOBs")
     cursor.setinputsizes(val=oracledb.DB_TYPE_NVARCHAR)
     cursor.execute("insert into TestNCLOBs values (1, :val)", val=value)
     cursor.execute("select NCLOBCol from TestNCLOBs")
     nclob, = cursor.fetchone()
     cursor.setinputsizes(val=oracledb.DB_TYPE_NVARCHAR)
     cursor.execute("update TestNCLOBs set NCLOBCol = :val",
                    val=nclob.read() + value)
     cursor.execute("select NCLOBCol from TestNCLOBs")
     nclob, = cursor.fetchone()
     self.assertEqual(nclob.read(), value + value)
예제 #14
0
# Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# SetupTest.py
#
# Creates users and populates their schemas with the tables and packages
# necessary for the cx_Oracle test suite.
#------------------------------------------------------------------------------

import cx_Oracle

import test_env
import DropTest

# connect as administrative user (usually SYSTEM or ADMIN)
conn = cx_Oracle.connect(test_env.get_admin_connect_string())

# drop existing users and editions, if applicable
DropTest.drop_tests(conn)

# create test schemas
print("Creating test schemas...")
test_env.run_sql_script(conn,
                        "SetupTest",
                        main_user=test_env.get_main_user(),
                        main_password=test_env.get_main_password(),
                        proxy_user=test_env.get_proxy_user(),
                        proxy_password=test_env.get_proxy_password())
print("Done.")