-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
server-test.js
97 lines (87 loc) · 3.23 KB
/
server-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
var fs = require('fs'),
soap = require('..'),
assert = require('assert'),
request = require('request'),
http = require('http');
var service = {
StockQuoteService: {
StockQuotePort: {
GetLastTradePrice: function(args) {
return { price: 19.56 };
}
}
}
}
var wsdlStrictTests = {},
wsdlNonStrictTests = {};
fs.readdirSync(__dirname+'/wsdl/strict').forEach(function(file) {
if (!/.wsdl$/.exec(file)) return;
wsdlStrictTests['should parse '+file] = function(done) {
soap.createClient(__dirname+'/wsdl/strict/'+file, {strict: true}, function(err, client) {
assert.ok(!err);
done();
});
};
})
fs.readdirSync(__dirname+'/wsdl').forEach(function(file) {
if (!/.wsdl$/.exec(file)) return;
wsdlNonStrictTests['should parse '+file] = function(done) {
soap.createClient(__dirname+'/wsdl/'+file, function(err, client) {
assert.ok(!err);
done();
});
};
})
module.exports = {
'SOAP Server': {
'should start': function(done) {
var wsdl = fs.readFileSync(__dirname+'/wsdl/strict/stockquote.wsdl', 'utf8'),
server = http.createServer(function(req, res) {
res.statusCode = 404;
res.end();
});
server.listen(15099);
soap.listen(server, '/stockquote', service, wsdl);
request('http://localhost:15099', function(err, res, body) {
assert.ok(!err);
done();
})
},
'should 404 on non-WSDL path': function(done) {
request('http://localhost:15099', function(err, res, body) {
assert.ok(!err);
assert.equal(res.statusCode, 404);
done();
})
},
'should server up WSDL': function(done) {
request('http://localhost:15099/stockquote?wsdl', function(err, res, body) {
assert.ok(!err);
assert.equal(res.statusCode, 200);
assert.ok(body.length);
done();
})
},
'should return complete client description': function(done) {
soap.createClient('http://localhost:15099/stockquote?wsdl', function(err, client) {
assert.ok(!err);
var description = client.describe(),
expected = { input: { tickerSymbol: "string" }, output:{ price: "float" } };
assert.deepEqual(expected , description.StockQuoteService.StockQuotePort.GetLastTradePrice );
done();
});
},
'should return correct results': function(done) {
soap.createClient('http://localhost:15099/stockquote?wsdl', function(err, client) {
assert.ok(!err);
client.GetLastTradePrice({ tickerSymbol: 'AAPL'}, function(err, result) {
assert.ok(!err);
assert.equal(19.56, parseFloat(result.price));
done();
});
});
}
},
'WSDL Parser (strict)': wsdlStrictTests,
'WSDL Parser (non-strict)': wsdlNonStrictTests
}