diff --git a/package.json b/package.json index 43da0daa..60af6657 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ ], "license": "MIT", "devDependencies": { + "async": "^2.0.1", "babel-cli": "^6.9.0", "babel-preset-es2015": "^6.9.0", "colors": "^1.1.2", diff --git a/test/wsdl-test.js b/test/wsdl-test.js index e10395f3..c4282138 100644 --- a/test/wsdl-test.js +++ b/test/wsdl-test.js @@ -5,35 +5,73 @@ var fs = require('fs'), assert = require('assert'), should = require('should'), request = require('request'), - http = require('http'); + http = require('http'), + async = require('async'); describe('wsdl-tests', function() { - describe('wsdl parsing test cases', function () { + describe('should parse and describe wsdls under /wsdl/strict dir', function () { + var files = []; - it('should parse and describe - 1 set of wsdls', function (done) { - fs.readdirSync(__dirname+'/wsdl/strict').forEach(function(file) { + before(function (done) { + fs.readdirSync(__dirname + '/wsdl/strict').forEach(function (file) { if (!/.wsdl$/.exec(file)) return; - soap.createClient(__dirname+'/wsdl/strict/'+file, {strict: true}, function(err, client) { - assert.ok(!err); - client.describe(); - }); + files.push(file); }); done(); }); - - it('should parse and describe - 2nd set of wsdls', function (done) { - fs.readdirSync(__dirname+'/wsdl').forEach(function(file) { - if (!/.wsdl$/.exec(file)) return; - soap.createClient(__dirname+'/wsdl/'+file, function(err, client) { + it('should parse and describe wsdls under /wsdl/strict dir', function (done) { + async.each(files, function (file, cb) { + soap.createClient(__dirname + '/wsdl/strict/' + file, {strict: true}, function (err, client) { assert.ok(!err); client.describe(); + cb(err); }); + }, done); + }); + + }); + + describe('should parse and describe wsdls directly under /wsdl/ dir', function () { + var files = []; + + before(function (done) { + fs.readdirSync(__dirname + '/wsdl/').forEach(function (file) { + if (!/.wsdl$/.exec(file)) return; + files.push(file); }); done(); }); + it('should parse and describe wsdls directly under /wsdl/ dir', function (done) { + async.each(files, function (file, cb) { + soap.createClient(__dirname + '/wsdl/' + file, {strict: true}, function (err, client) { + client.describe(); + cb(err); + }); + }, done); + }); + }); + + + describe('wsdl parsing test cases', function () { + + it('document/encoded style wsdl is not a supported type', function (done) { + soap.createClient(__dirname+'/wsdl/unsupported/ImportSample.wsdl', function(err, client) { + var expectedError = false; + try { + client.describe(); + } catch (err) { + //Error is expected in this negative test where ImportSample.wsdl is an invalid wsdl since it uses + //document/encode style. Code throws "WSDL not supported DocumentEncode Style" error. + expectedError = true; + } + assert.ok(expectedError); + done(); + }); + }); + it('should not parse connection error', function (done) { soap.createClient(__dirname+'/wsdl/connection/econnrefused.wsdl', function(err, client) { assert.ok(/EADDRNOTAVAIL|ECONNREFUSED/.test(err), err); diff --git a/test/wsdl/strict/ImportSample.wsdl b/test/wsdl/unsupported/ImportSample.wsdl similarity index 100% rename from test/wsdl/strict/ImportSample.wsdl rename to test/wsdl/unsupported/ImportSample.wsdl diff --git a/test/wsdl/strict/ImportSample.xsd b/test/wsdl/unsupported/ImportSample.xsd similarity index 100% rename from test/wsdl/strict/ImportSample.xsd rename to test/wsdl/unsupported/ImportSample.xsd