Skip to content

Commit fa8cd0b

Browse files
committed
Add new LOB tests
1 parent 5b9be5e commit fa8cd0b

9 files changed

+2078
-117
lines changed

test/blobDMLBindAsBuffer.js

Lines changed: 851 additions & 0 deletions
Large diffs are not rendered by default.

test/blobPlsqlBindAsBuffer.js

Lines changed: 121 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ var should = require('should');
3838
var async = require('async');
3939
var dbConfig = require('./dbconfig.js');
4040
var fs = require('fs');
41+
var random = require('./random.js');
4142

4243
describe('75.blobPlsqlBindAsBuffer.js', function() {
4344
var connection = null;
@@ -289,15 +290,6 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
289290
);
290291
};
291292

292-
var getRandomString = function(length, specialStr) {
293-
var str='';
294-
var strLength = length - specialStr.length * 2;
295-
for( ; str.length < strLength; str += Math.random().toString(36).slice(2));
296-
str = str.substr(0, strLength);
297-
str = specialStr + str + specialStr;
298-
return str;
299-
};
300-
301293
describe('75.1 BLOB, PLSQL, BIND_IN', function() {
302294
var proc = "CREATE OR REPLACE PROCEDURE nodb_blobs_in_751 (blob_id IN NUMBER, blob_in IN BLOB)\n" +
303295
"AS \n" +
@@ -321,7 +313,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
321313
var size = 32768;
322314
var sequence = 1;
323315
var specialStr = "75.1.1";
324-
var bigStr = getRandomString(size, specialStr);
316+
var bigStr = random.getRandomString(size, specialStr);
325317
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
326318
var bindVar = {
327319
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
@@ -355,7 +347,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
355347
var size = 65535;
356348
var sequence = 2;
357349
var specialStr = "75.1.2";
358-
var bigStr = getRandomString(size, specialStr);
350+
var bigStr = random.getRandomString(size, specialStr);
359351
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
360352
var bindVar = {
361353
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
@@ -524,7 +516,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
524516
var size = 50000;
525517
var sequence = 6;
526518
var specialStr = "75.1.9";
527-
var bigStr = getRandomString(size, specialStr);
519+
var bigStr = random.getRandomString(size, specialStr);
528520
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
529521
var bindVar = [ sequence, { val: bufferStr, type: oracledb.BUFFER, dir: oracledb.BIND_IN, maxSize: size } ];
530522

@@ -551,7 +543,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
551543
var size = 65535;
552544
var sequence = 7;
553545
var specialStr = "75.1.10";
554-
var bigStr = getRandomString(size, specialStr);
546+
var bigStr = random.getRandomString(size, specialStr);
555547
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
556548
var bindVar = {
557549
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
@@ -622,7 +614,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
622614
var size = 32768;
623615
var sequence = 11;
624616
var specialStr = "75.2.1";
625-
var bigStr = getRandomString(size, specialStr);
617+
var bigStr = random.getRandomString(size, specialStr);
626618
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
627619
var bindVar = {
628620
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
@@ -664,7 +656,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
664656
var size = 65535;
665657
var sequence = 12;
666658
var specialStr = "75.2.2";
667-
var bigStr = getRandomString(size, specialStr);
659+
var bigStr = random.getRandomString(size, specialStr);
668660
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
669661
var bindVar = {
670662
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
@@ -778,7 +770,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
778770
var size = 50000;
779771
var sequence = 16;
780772
var specialStr = "75.2.6";
781-
var bigStr = getRandomString(size, specialStr);
773+
var bigStr = random.getRandomString(size, specialStr);
782774
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
783775
var bindVar = [ sequence, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: size } ];
784776

@@ -813,7 +805,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
813805
var size = 50000;
814806
var sequence = 17;
815807
var specialStr = "75.2.7";
816-
var bigStr = getRandomString(size, specialStr);
808+
var bigStr = random.getRandomString(size, specialStr);
817809
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
818810
var bindVar = [ sequence, { type: oracledb.BUFFER, dir: oracledb.BIND_OUT, maxSize: size - 1 } ];
819811

@@ -844,7 +836,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
844836
var size = 50000;
845837
var sequence = 18;
846838
var specialStr = "75.2.8";
847-
var bigStr = getRandomString(size, specialStr);
839+
var bigStr = random.getRandomString(size, specialStr);
848840
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
849841
var bindVar = {
850842
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
@@ -885,6 +877,14 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
885877
"END nodb_blob_in_out_753;";
886878
var sqlRun = "begin nodb_blob_in_out_753(lob_in_out => :lob_in_out); end;";
887879
var proc_drop = "DROP PROCEDURE nodb_blob_in_out_753";
880+
var blob_proc_inout_7531 = "CREATE OR REPLACE PROCEDURE nodb_blob_in_out_7531 (lob_id IN NUMBER, lob_in_out IN OUT RAW) \n" +
881+
"AS \n" +
882+
"BEGIN \n" +
883+
" insert into nodb_tab_blob_in (id, blob_1) values (lob_id, lob_in_out); \n" +
884+
" select blob_1 into lob_in_out from nodb_tab_blob_in where id = lob_id; \n" +
885+
"END nodb_blob_in_out_7531;";
886+
var sqlRun_7531 = "begin nodb_blob_in_out_7531(:i, :io); end;";
887+
var proc_drop_7531 = "DROP PROCEDURE nodb_blob_in_out_7531";
888888

889889
before(function(done) {
890890
executeSQL(blob_proc_inout, done);
@@ -897,7 +897,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
897897
it('75.3.1 PLSQL, BIND_INOUT with Buffer size 32K', function(done) {
898898
var size = 32768;
899899
var specialStr = "75.3.1";
900-
var bigStr = getRandomString(size, specialStr);
900+
var bigStr = random.getRandomString(size, specialStr);
901901
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
902902
var bindVar = {
903903
lob_in_out: { dir: oracledb.BIND_INOUT, type: oracledb.BUFFER, val: bufferStr, maxSize: size }
@@ -921,7 +921,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
921921
it('75.3.2 PLSQL, BIND_INOUT with Buffer size 32K - 1', function(done) {
922922
var size = 32767;
923923
var specialStr = "75.3.2";
924-
var bigStr = getRandomString(size, specialStr);
924+
var bigStr = random.getRandomString(size, specialStr);
925925
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
926926
var bindVar = {
927927
lob_in_out: { dir: oracledb.BIND_INOUT, type: oracledb.BUFFER, val: bufferStr, maxSize: size }
@@ -945,7 +945,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
945945
it('75.3.3 PLSQL, BIND_INOUT with Buffer size 64K - 1', function(done) {
946946
var size = 65535;
947947
var specialStr = "75.3.3";
948-
var bigStr = getRandomString(size, specialStr);
948+
var bigStr = random.getRandomString(size, specialStr);
949949
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
950950
var bindVar = {
951951
lob_in_out: { dir: oracledb.BIND_INOUT, type: oracledb.BUFFER, val: bufferStr, maxSize: size }
@@ -966,7 +966,98 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
966966
);
967967
}); // 75.3.3
968968

969-
});
969+
it('75.3.4 PLSQL, BIND_INOUT with OUT data > maxSize', function(done) {
970+
var specialStr = "75.3.4";
971+
var len = 65535;
972+
var bigStr = random.getRandomString(len, specialStr);
973+
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
974+
var bindVar = {
975+
lob_in_out: { dir: oracledb.BIND_INOUT, type: oracledb.BUFFER, val: bufferStr, maxSize: len - 1 }
976+
};
977+
978+
connection.execute(
979+
sqlRun,
980+
bindVar,
981+
function(err) {
982+
should.exist(err);
983+
// NJS-016: buffer is too small for OUT binds
984+
(err.message).should.startWith('NJS-016');
985+
done();
986+
}
987+
);
988+
}); // 75.3.4
989+
990+
it('75.3.5 PLSQL, bind out to varchar2 with OUT data < maxSize', function(done) {
991+
var sequence = 30;
992+
var specialStr = "75.3.5";
993+
var len = 300;
994+
var bigStr = random.getRandomString(len, specialStr);
995+
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
996+
997+
async.series([
998+
function(cb) {
999+
executeSQL(blob_proc_inout_7531, cb);
1000+
},
1001+
function(cb) {
1002+
var bindVar_7531 = {
1003+
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
1004+
io: { val:bufferStr, type: oracledb.BUFFER, dir: oracledb.BIND_INOUT, maxSize: len }
1005+
};
1006+
connection.execute(
1007+
sqlRun_7531,
1008+
bindVar_7531,
1009+
function(err, result) {
1010+
should.not.exist(err);
1011+
var resultVal = result.outBinds.io.toString('utf8');
1012+
var resultLength = resultVal.length;
1013+
var specStrLength = specialStr.length;
1014+
should.strictEqual(resultLength, len);
1015+
should.strictEqual(resultVal.substring(0, specStrLength), specialStr);
1016+
should.strictEqual(resultVal.substring(resultLength - specStrLength, resultLength), specialStr);
1017+
cb();
1018+
}
1019+
);
1020+
},
1021+
function(cb) {
1022+
executeSQL(proc_drop_7531, cb);
1023+
}
1024+
], done);
1025+
}); // 75.3.5
1026+
1027+
it('75.3.6 PLSQL, bind out to varchar2 with OUT data > maxSize', function(done) {
1028+
var sequence = 30;
1029+
var specialStr = "75.3.6";
1030+
var len = 300;
1031+
var bigStr = random.getRandomString(len, specialStr);
1032+
var bufferStr = node6plus ? Buffer.from(bigStr, "utf-8") : new Buffer(bigStr, "utf-8");
1033+
1034+
async.series([
1035+
function(cb) {
1036+
executeSQL(blob_proc_inout_7531, cb);
1037+
},
1038+
function(cb) {
1039+
var bindVar_7531 = {
1040+
i: { val: sequence, type: oracledb.NUMBER, dir: oracledb.BIND_IN },
1041+
io: { val:bufferStr, type: oracledb.BUFFER, dir: oracledb.BIND_INOUT, maxSize: len - 1 }
1042+
};
1043+
connection.execute(
1044+
sqlRun_7531,
1045+
bindVar_7531,
1046+
function(err) {
1047+
should.exist(err);
1048+
// ORA-01460: unimplemented or unreasonable conversion requested
1049+
(err.message).should.startWith('ORA-01460');
1050+
cb();
1051+
}
1052+
);
1053+
},
1054+
function(cb) {
1055+
executeSQL(proc_drop_7531, cb);
1056+
}
1057+
], done);
1058+
}); // 75.3.6
1059+
1060+
}); // 75.3
9701061

9711062
describe('75.4 Multiple BLOBs, BIND_IN', function() {
9721063
var proc = "CREATE OR REPLACE PROCEDURE nodb_blobs_in_754 (blob_id IN NUMBER, blob_1 IN BLOB, blob_2 IN BLOB)\n" +
@@ -989,8 +1080,8 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
9891080
var size_1 = 32768;
9901081
var size_2 = 50000;
9911082
var specialStr = "75.4.1";
992-
var bigStr_1 = getRandomString(size_1, specialStr);
993-
var bigStr_2 = getRandomString(size_2, specialStr);
1083+
var bigStr_1 = random.getRandomString(size_1, specialStr);
1084+
var bigStr_2 = random.getRandomString(size_2, specialStr);
9941085
var bufferStr_1 = node6plus ? Buffer.from(bigStr_1, "utf-8") : new Buffer(bigStr_1, "utf-8");
9951086
var bufferStr_2 = node6plus ? Buffer.from(bigStr_2, "utf-8") : new Buffer(bigStr_2, "utf-8");
9961087
var sequence = 51;
@@ -1028,7 +1119,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
10281119
var preparedCLOBID = 301;
10291120
var sequence = 52;
10301121
var size_1 = 32768;
1031-
var bigStr_1 = getRandomString(size_1, specialStr);
1122+
var bigStr_1 = random.getRandomString(size_1, specialStr);
10321123
var bufferStr_1 = node6plus ? Buffer.from(bigStr_1, "utf-8") : new Buffer(bigStr_1, "utf-8");
10331124

10341125
async.series([
@@ -1115,8 +1206,8 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
11151206
var size_1 = 32768;
11161207
var size_2 = 50000;
11171208
var sequence = 111;
1118-
var bigStr_1 = getRandomString(size_1, specialStr);
1119-
var bigStr_2 = getRandomString(size_2, specialStr);
1209+
var bigStr_1 = random.getRandomString(size_1, specialStr);
1210+
var bigStr_2 = random.getRandomString(size_2, specialStr);
11201211
var bufferStr_1 = node6plus ? Buffer.from(bigStr_1, "utf-8") : new Buffer(bigStr_1, "utf-8");
11211212
var bufferStr_2 = node6plus ? Buffer.from(bigStr_2, "utf-8") : new Buffer(bigStr_2, "utf-8");
11221213
var bindVar = {
@@ -1163,7 +1254,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
11631254
it('75.5.2 PLSQL, BIND_OUT, bind a JPG file and a Buffer', function(done) {
11641255
var specialStr = "75.5.2";
11651256
var size_1 = 32768;
1166-
var bigStr_1 = getRandomString(size_1, specialStr);
1257+
var bigStr_1 = random.getRandomString(size_1, specialStr);
11671258
var bufferStr_1 = node6plus ? Buffer.from(bigStr_1, "utf-8") : new Buffer(bigStr_1, "utf-8");
11681259
var sequence = 112;
11691260
var bindVar = {
@@ -1264,7 +1355,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
12641355
var preparedCLOBID = 500;
12651356
var size_1 = 32768;
12661357
var specialStr = "75.6.1";
1267-
var bigStr_1 = getRandomString(size_1, specialStr);
1358+
var bigStr_1 = random.getRandomString(size_1, specialStr);
12681359
var bufferStr_1 = node6plus ? Buffer.from(bigStr_1, "utf-8") : new Buffer(bigStr_1, "utf-8");
12691360

12701361
async.series([
@@ -1326,7 +1417,7 @@ describe('75.blobPlsqlBindAsBuffer.js', function() {
13261417
var preparedCLOBID = 501;
13271418
var size_1 = 65535;
13281419
var specialStr = "75.6.2";
1329-
var bigStr_1 = getRandomString(size_1, specialStr);
1420+
var bigStr_1 = random.getRandomString(size_1, specialStr);
13301421
var bufferStr_1 = node6plus ? Buffer.from(bigStr_1, "utf-8") : new Buffer(bigStr_1, "utf-8");
13311422

13321423
async.series([

0 commit comments

Comments
 (0)