From 624dd43e23cceec90e2d47760a6f7e7aea359da1 Mon Sep 17 00:00:00 2001
From: rashmihunt <hrashmi@us.ibm.com>
Date: Fri, 30 Sep 2016 10:57:14 -0700
Subject: [PATCH 1/2] fixed wsdl-test failure

---
 package.json                                  |  3 +-
 test/wsdl-test.js                             | 60 +++++++++++++++----
 .../{strict => unsupported}/ImportSample.wsdl |  0
 .../{strict => unsupported}/ImportSample.xsd  |  0
 4 files changed, 51 insertions(+), 12 deletions(-)
 rename test/wsdl/{strict => unsupported}/ImportSample.wsdl (100%)
 rename test/wsdl/{strict => unsupported}/ImportSample.xsd (100%)

diff --git a/package.json b/package.json
index 43da0daa..0a0b2a22 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,8 @@
     "selectn": "^1.0.20",
     "strong-globalize": "^2.8.0",
     "xml-crypto": "^0.8.4",
-    "xmlbuilder": "^8.2.2"
+    "xmlbuilder": "^8.2.2",
+    "async": "~1.0.0"
   },
   "optionalDependencies": {
     "ursa": "^0.9.4"
diff --git a/test/wsdl-test.js b/test/wsdl-test.js
index e10395f3..60b58f60 100644
--- a/test/wsdl-test.js
+++ b/test/wsdl-test.js
@@ -5,34 +5,72 @@ 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 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();
+        });
+      });
+      done();
+    });
+  });
+
+  describe('should parse and describe wsdls directly under /wsdl/ dir', function () {
+    var files = [];
 
-    it('should parse and describe - 2nd set of wsdls', function (done) {
-      fs.readdirSync(__dirname+'/wsdl').forEach(function(file) {
+    before(function (done) {
+      fs.readdirSync(__dirname + '/wsdl/').forEach(function (file) {
         if (!/.wsdl$/.exec(file)) return;
-        soap.createClient(__dirname+'/wsdl/'+file, function(err, client) {
+        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) {
           assert.ok(!err);
           client.describe();
         });
       });
       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) {
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

From 91cc73617dd5a4658aeb09912c3d48e50805f155 Mon Sep 17 00:00:00 2001
From: rashmihunt <hrashmi@us.ibm.com>
Date: Fri, 30 Sep 2016 12:24:18 -0700
Subject: [PATCH 2/2] code review fixes

---
 package.json      |  4 ++--
 test/wsdl-test.js | 10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/package.json b/package.json
index 0a0b2a22..60af6657 100644
--- a/package.json
+++ b/package.json
@@ -17,8 +17,7 @@
     "selectn": "^1.0.20",
     "strong-globalize": "^2.8.0",
     "xml-crypto": "^0.8.4",
-    "xmlbuilder": "^8.2.2",
-    "async": "~1.0.0"
+    "xmlbuilder": "^8.2.2"
   },
   "optionalDependencies": {
     "ursa": "^0.9.4"
@@ -44,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 60b58f60..c4282138 100644
--- a/test/wsdl-test.js
+++ b/test/wsdl-test.js
@@ -26,10 +26,11 @@ describe('wsdl-tests', function() {
         soap.createClient(__dirname + '/wsdl/strict/' + file, {strict: true}, function (err, client) {
           assert.ok(!err);
           client.describe();
+          cb(err);
         });
-      });
-      done();
+      }, done);
     });
+
   });
 
   describe('should parse and describe wsdls directly under /wsdl/ dir', function () {
@@ -46,11 +47,10 @@ describe('wsdl-tests', function() {
     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) {
-          assert.ok(!err);
           client.describe();
+          cb(err);
         });
-      });
-      done();
+      }, done);
     });
   });