Add new tests and refactor
This commit is contained in:
parent
0e3565b308
commit
fb5a5fc68b
|
@ -299,7 +299,7 @@ describe('1. connection.js', function() {
|
||||||
|
|
||||||
it('1.5.1 close can be used as an alternative to release', async function() {
|
it('1.5.1 close can be used as an alternative to release', async function() {
|
||||||
const conn = await oracledb.getConnection(dbConfig);
|
const conn = await oracledb.getConnection(dbConfig);
|
||||||
await conn.close();
|
await conn.release();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ describe('1. connection.js', function() {
|
||||||
delete credential.connectString;
|
delete credential.connectString;
|
||||||
|
|
||||||
const connection = await oracledb.getConnection(credential);
|
const connection = await oracledb.getConnection(credential);
|
||||||
await connection.close();
|
await connection.release();
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -358,7 +358,7 @@ describe('1. connection.js', function() {
|
||||||
|
|
||||||
const pool = await oracledb.createPool(credential);
|
const pool = await oracledb.createPool(credential);
|
||||||
const conn = await pool.getConnection();
|
const conn = await pool.getConnection();
|
||||||
await conn.close();
|
await conn.release();
|
||||||
await pool.close();
|
await pool.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -369,12 +369,12 @@ describe('1. connection.js', function() {
|
||||||
it('1.8.1 ping() checks the connection is usable', async function() {
|
it('1.8.1 ping() checks the connection is usable', async function() {
|
||||||
const conn = await oracledb.getConnection(dbConfig);
|
const conn = await oracledb.getConnection(dbConfig);
|
||||||
await conn.ping();
|
await conn.ping();
|
||||||
await conn.close();
|
await conn.release();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('1.8.2 closed connection', async function() {
|
it('1.8.2 closed connection', async function() {
|
||||||
const conn = await oracledb.getConnection(dbConfig);
|
const conn = await oracledb.getConnection(dbConfig);
|
||||||
await conn.close();
|
await conn.release();
|
||||||
await assert.rejects(
|
await assert.rejects(
|
||||||
async () => await conn.ping(),
|
async () => await conn.ping(),
|
||||||
/NJS-003:/
|
/NJS-003:/
|
||||||
|
@ -411,20 +411,17 @@ describe('1. connection.js', function() {
|
||||||
credential.username = dbConfig.user;
|
credential.username = dbConfig.user;
|
||||||
|
|
||||||
const conn = await oracledb.getConnection(credential);
|
const conn = await oracledb.getConnection(credential);
|
||||||
await conn.close();
|
await conn.release();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('1.10.3 uses username alias to login with SYSDBA privilege', async function() {
|
it('1.10.3 uses username alias to login with SYSDBA privilege', async function() {
|
||||||
if (!dbConfig.test.DBA_PRIVILEGE) this.skip();
|
if (!dbConfig.test.DBA_PRIVILEGE) this.skip();
|
||||||
const credential = {
|
const credential = {...dbConfig, privilege: oracledb.SYSDBA};
|
||||||
username : dbConfig.test.DBA_user,
|
credential.user = dbConfig.test.DBA_user;
|
||||||
password : dbConfig.test.DBA_password,
|
credential.password = dbConfig.test.DBA_password;
|
||||||
connectString : dbConfig.connectString,
|
|
||||||
privilege: oracledb.SYSDBA
|
|
||||||
};
|
|
||||||
|
|
||||||
const conn = await oracledb.getConnection(credential);
|
const conn = await oracledb.getConnection(credential);
|
||||||
await conn.close();
|
await conn.release();
|
||||||
});
|
});
|
||||||
}); //1.10
|
}); //1.10
|
||||||
|
|
||||||
|
@ -465,7 +462,7 @@ describe('1. connection.js', function() {
|
||||||
|
|
||||||
it('1.12.1 exception_on_close', async function() {
|
it('1.12.1 exception_on_close', async function() {
|
||||||
const connection = await oracledb.getConnection(dbConfig);
|
const connection = await oracledb.getConnection(dbConfig);
|
||||||
await connection.close();
|
await connection.release();
|
||||||
await assert.rejects(
|
await assert.rejects(
|
||||||
async () => await connection.execute('SELECT * FROM DUAL'),
|
async () => await connection.execute('SELECT * FROM DUAL'),
|
||||||
/NJS-003:/
|
/NJS-003:/
|
||||||
|
@ -481,7 +478,7 @@ describe('1. connection.js', function() {
|
||||||
async () => await connection.execute("select INTERVAL '10-2' YEAR TO MONTH from dual"),
|
async () => await connection.execute("select INTERVAL '10-2' YEAR TO MONTH from dual"),
|
||||||
/NJS-010:/ //NJS-010: unsupported data type 2016 in column 1
|
/NJS-010:/ //NJS-010: unsupported data type 2016 in column 1
|
||||||
);
|
);
|
||||||
await connection.close();
|
await connection.release();
|
||||||
});
|
});
|
||||||
}); //1.13
|
}); //1.13
|
||||||
|
|
||||||
|
@ -489,15 +486,44 @@ describe('1. connection.js', function() {
|
||||||
|
|
||||||
it('1.14.1 unacceptable boundary numbers should get rejected', async function() {
|
it('1.14.1 unacceptable boundary numbers should get rejected', async function() {
|
||||||
const connection = await oracledb.getConnection(dbConfig);
|
const connection = await oracledb.getConnection(dbConfig);
|
||||||
const in_values = ["1e126", "-1e126"];
|
const in_values = ["1e126", "-1e126", "1/0", "-1/0", "1/0.0", "1.0/0", "1.0e126", "1.0e126.0", "NaN", "undefined", "Infinity", "-Infinity"];
|
||||||
await Promise.all(in_values.map(async function(element) {
|
await Promise.all(in_values.map(async function(element) {
|
||||||
await assert.rejects(
|
await assert.rejects(
|
||||||
async () => await connection.execute("select " + element + " from dual"),
|
async () =>
|
||||||
/ORA-01426:/ //ORA-01426: numeric overflow
|
await connection.execute("select " + element + " from dual"),
|
||||||
|
/ORA-01426:|ORA-01476:|ORA-00904:/ //ORA-01426: numeric overflow | ORA-01476: divisor is equal to zero | ORA-00904: invalid identifier'
|
||||||
);
|
);
|
||||||
}));
|
}));
|
||||||
await connection.close();
|
await connection.release();
|
||||||
});
|
});
|
||||||
}); //1.14
|
}); //1.14
|
||||||
|
|
||||||
|
describe('1.15 result after bad execute', function() {
|
||||||
|
|
||||||
|
it('1.15.1 subsequent executes should succeed after bad execute', async function() {
|
||||||
|
const connection = await oracledb.getConnection(dbConfig);
|
||||||
|
await assert.rejects(
|
||||||
|
async () =>
|
||||||
|
await connection.execute("begin raise_application_error(-20000, 'application error raised'); end;"),
|
||||||
|
/ORA-20000:/ //ORA-20000: application error raised
|
||||||
|
);
|
||||||
|
await connection.execute("begin null; end;");
|
||||||
|
await connection.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('1.15.2 result after bad execute', async function() {
|
||||||
|
const connection = await oracledb.getConnection(dbConfig);
|
||||||
|
await assert.rejects(
|
||||||
|
async () => await connection.execute("select y from dual", {},
|
||||||
|
{
|
||||||
|
outFormat: oracledb.OBJECT,
|
||||||
|
}),
|
||||||
|
/ORA-00904:/ //ORA-00904: "Y": invalid identifier'
|
||||||
|
);
|
||||||
|
const result = await connection.execute("select 1+1 from dual");
|
||||||
|
assert(result.rows[0][0], 2);
|
||||||
|
await connection.close();
|
||||||
|
});
|
||||||
|
}); //1.15
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -38,9 +38,7 @@
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
const oracledb = require('oracledb');
|
const config = {
|
||||||
|
|
||||||
var config = {
|
|
||||||
test: {
|
test: {
|
||||||
externalAuth: false,
|
externalAuth: false,
|
||||||
DBA_PRIVILEGE: false,
|
DBA_PRIVILEGE: false,
|
||||||
|
@ -56,7 +54,7 @@ if (process.env.NODE_ORACLEDB_CONNECTIONSTRING) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.env.NODE_ORACLEDB_EXTERNALAUTH) {
|
if (process.env.NODE_ORACLEDB_EXTERNALAUTH) {
|
||||||
var eauth = process.env.NODE_ORACLEDB_EXTERNALAUTH;
|
let eauth = process.env.NODE_ORACLEDB_EXTERNALAUTH;
|
||||||
eauth = String(eauth);
|
eauth = String(eauth);
|
||||||
eauth = eauth.toLowerCase();
|
eauth = eauth.toLowerCase();
|
||||||
if (eauth == 'true') {
|
if (eauth == 'true') {
|
||||||
|
@ -89,7 +87,7 @@ if (process.env.NODE_ORACLEDB_QA) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.env.NODE_ORACLEDB_DBA_PRIVILEGE) {
|
if (process.env.NODE_ORACLEDB_DBA_PRIVILEGE) {
|
||||||
var priv = process.env.NODE_ORACLEDB_DBA_PRIVILEGE;
|
let priv = process.env.NODE_ORACLEDB_DBA_PRIVILEGE;
|
||||||
priv = String(priv);
|
priv = String(priv);
|
||||||
priv = priv.toLowerCase();
|
priv = priv.toLowerCase();
|
||||||
if (priv == 'true') {
|
if (priv == 'true') {
|
||||||
|
@ -114,7 +112,7 @@ if (process.env.NODE_ORACLEDB_PROXY_SESSION_USER) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.env.NODE_PRINT_DEBUG_MESSAGE) {
|
if (process.env.NODE_PRINT_DEBUG_MESSAGE) {
|
||||||
var printDebugMsg = process.env.NODE_PRINT_DEBUG_MESSAGE;
|
let printDebugMsg = process.env.NODE_PRINT_DEBUG_MESSAGE;
|
||||||
printDebugMsg = String(printDebugMsg);
|
printDebugMsg = String(printDebugMsg);
|
||||||
printDebugMsg = printDebugMsg.toLowerCase();
|
printDebugMsg = printDebugMsg.toLowerCase();
|
||||||
if (printDebugMsg == 'true') {
|
if (printDebugMsg == 'true') {
|
||||||
|
@ -122,14 +120,4 @@ if (process.env.NODE_PRINT_DEBUG_MESSAGE) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function cloudServiceCheck() {
|
|
||||||
const connection = await oracledb.getConnection(config);
|
|
||||||
let result = await connection.execute("select sys_context('userenv', 'cloud_service') from dual");
|
|
||||||
if (result.rows[0][0]) {
|
|
||||||
config.test.isCloudService = true;
|
|
||||||
}
|
|
||||||
await connection.close();
|
|
||||||
}
|
|
||||||
cloudServiceCheck();
|
|
||||||
|
|
||||||
module.exports = config;
|
module.exports = config;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (c) 2018, 2022, Oracle and/or its affiliates. */
|
/* Copyright (c) 2023, Oracle and/or its affiliates. */
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
*
|
*
|
||||||
|
@ -23,19 +23,20 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*
|
*
|
||||||
* NAME
|
* NAME
|
||||||
* notes.js
|
* hooks.js
|
||||||
*
|
*
|
||||||
* DESCRIPTION
|
* DESCRIPTION
|
||||||
* The prerequiste checks of test suite.
|
* This file contains the global hooks for running the Mocha test suite. It
|
||||||
|
* verifies the database configuration before running the test suite in order
|
||||||
|
* to avoid unusual errors. It also sets up information about the database
|
||||||
|
* (such as whether the database is running in a cloud service or not) which
|
||||||
|
* may be used in the test suite.
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const oracledb = require('oracledb');
|
const oracledb = require('oracledb');
|
||||||
const assert = require('assert');
|
|
||||||
const dbConfig = require('./dbconfig.js');
|
const dbConfig = require('./dbconfig.js');
|
||||||
|
const assert = require('assert');
|
||||||
/****************** Verify the "user/password" provided by user **********************/
|
|
||||||
|
|
||||||
async function testConnection(description, additionalOptions = {}) {
|
async function testConnection(description, additionalOptions = {}) {
|
||||||
console.log(description);
|
console.log(description);
|
||||||
|
@ -48,6 +49,15 @@ async function testConnection(description, additionalOptions = {}) {
|
||||||
await connection.close();
|
await connection.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function cloudServiceCheck() {
|
||||||
|
const connection = await oracledb.getConnection(dbConfig);
|
||||||
|
let result = await connection.execute("select sys_context('userenv', 'cloud_service') from dual");
|
||||||
|
if (result.rows[0][0]) {
|
||||||
|
dbConfig.test.isCloudService = true;
|
||||||
|
}
|
||||||
|
await connection.close();
|
||||||
|
}
|
||||||
|
|
||||||
before(async function() {
|
before(async function() {
|
||||||
await testConnection("Regular connection");
|
await testConnection("Regular connection");
|
||||||
if (dbConfig.test.DBA_PRIVILEGE) {
|
if (dbConfig.test.DBA_PRIVILEGE) {
|
||||||
|
@ -59,4 +69,5 @@ before(async function() {
|
||||||
if (dbConfig.test.proxySessionUser) {
|
if (dbConfig.test.proxySessionUser) {
|
||||||
await testConnection("Proxy Session User", {user: `${dbConfig.user}[${dbConfig.test.proxySessionUser}]`});
|
await testConnection("Proxy Session User", {user: `${dbConfig.user}[${dbConfig.test.proxySessionUser}]`});
|
||||||
}
|
}
|
||||||
|
await cloudServiceCheck();
|
||||||
});
|
});
|
|
@ -5,7 +5,7 @@ require: ['async', 'should']
|
||||||
retries: 1
|
retries: 1
|
||||||
trace-warnings: true
|
trace-warnings: true
|
||||||
spec:
|
spec:
|
||||||
- test/notes.js
|
- test/hooks.js
|
||||||
- test/connection.js
|
- test/connection.js
|
||||||
- test/pool.js
|
- test/pool.js
|
||||||
- test/examples.js
|
- test/examples.js
|
||||||
|
|
Loading…
Reference in New Issue