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