Skip to content

Commit

Permalink
Added test for ca option and error reporting
Browse files Browse the repository at this point in the history
I added a test to check the ca option and the error reporting so, I
regenerated the certificates and keys and provided another to check
which provoke an error on the transport socket to check the implemented
error reporting.

I also added a shell script to regenerate the server key and certificate
  • Loading branch information
ifraixedes committed Nov 14, 2013
1 parent d29b3d6 commit 9b63b38
Show file tree
Hide file tree
Showing 8 changed files with 155 additions and 36 deletions.
14 changes: 14 additions & 0 deletions test/certs-generator.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash

echo Generating server key
openssl genrsa -out server.key 2048

echo Generating certificate signing request
openssl req -new -key server.key -out server.csr -config csr.config

echo Generating certificate from generated request
openssl x509 -req -in server.csr -signkey server.key -out server.cert -extfile csr.config -extensions v3_req

echo Generated certicate
echo
openssl x509 -in server.cert -noout -text
13 changes: 13 additions & 0 deletions test/csr.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[ req_distinguished_name ]
C = GB
ST = Test State or Province
L = Test Locality
O = Organization Name
OU = Organizational Unit Name
CN = Common Name
[ v3_req ]
subjectAltName = DNS.1: localhost, IP.1: 127.0.0.1
File renamed without changes.
28 changes: 28 additions & 0 deletions test/server-fail.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDSrWDfSigJZfSs
iBBaX5DX6DA/e2q2PapdLMZq1bcpB5L/RVikzHHrOz7HwxNjJQFrn1jO8HQRCOIL
OhnN01HsXvYR0EL/aIUEZn7Uf0r9yIoKD/wQn9oPessHmvysJImXH6ZfDw74F+10
kxncaFnXcKgJH5s1PHGNs5PeILcyyMb8yGVnDgUWIZEApNUCaqAxz2PFt2aNjthT
diLRxjEuWWnVMXjAdpLj+Bpp3QUJXgllIGTpHFICPg1Fy33qjxRIKI17JVANXeRf
qyHUT9yle3+Y8UBMcDtFfRi/7GFFKFU0+1pd3d1Ha+pHHIrASsSKK7CkoisKqnV2
2iwnXMzNAgMBAAECggEAf/fQX9ErgIntlN8RD9P8pyjiJa1RpGDQmsgXvc0S9Fkl
cOkubuvARqI2ACD+JbrUogqoZwqndbFvnGIuSleR64HC9g8KoxlZstKPN4QaiQzG
zFXpRi/SxJRRvszlraqD6MfQxuzeqtPd6HFxw++eor5LUz9fh3avguMRbltw6+bu
E5y8ej2+XdBeonlUuMoDteRq28hs3zxrnL/e9lIxY7ULSFlz5gS5I+IfxNyGEXeV
KGVRqKarW1Nyh5BlVuUnMN14yB9s0gjI4dp3e2OIKHBcHglJqzHKWtsdjb1Hb09O
B3YS21dg2YWTKmfF/OvLn2W4TOlrYmsoeGEtIy0AAQKBgQD57UEr6Ef9jFVTsAPy
EtnnT+U7msMuHS7KN2VFHz1FOqOwcrKOK1I4ECpYz4GOyn00VaWz02Bv3Srhx6nN
uRWZw1i5RoBhzIEg9DDOwV84nWeSLMzTMBTC8Mhp/0n3NgUsifG13lYKIUR7sBmv
sRWdayBKgWgRKZrivCFAuTWtzQKBgQDXy/XVvwQ5ksH5E/kFL5LNdjxC6z3WOprX
NU3OiDzvuJt+Ince2yhFKg8sXKUQSmrfjkex0XYyzQFiDvzE7lH6ye0xzZg+MUoR
wa5ugk2iTuq9lktFQxMZllEhUb9//1nqX7FlakTDMde15T45EwDT6TjudICHsZWt
QNV9GZybAQKBgGLboPLAL3GwR7QRpI3lPQINDUx1XAzqiC5+mPUtdSvkFQlfZRdt
NVlts4JrmgCkQcAovKGT08qLvkGOm7D/K/clWPv4UiHdJZqmXIP74zFeubANPnuu
wheV7IBY9aXuXT+P1OcuafQZ0p/mOVLQhg89Z4lxBHv9bAGRjsmuOPhlAoGAfZQp
uXtxf/eRfdtLnOL0cTCPHPo8gACWvwo7/yZ1H6O0iRCRdZlfs/An6E75l6NW0kXA
HxCf0ixO07uZCRkPB/yeVc8o+3g/fFnTomedughmvnFJ2EKSSN+a0uL5qAj3UFbj
qvrOjTDiMO346cnPP4KHKO0PJugHDE2gby6KXgECgYEA6KpLRrI9FmNKILJ3FRcr
go3J6oR3EuQllwLeUQsBnwfk66d50x6+VPWWcBLYzqhAjwPJh1zOGjtQBqoE1FS6
oqVTVrljRaiczonOl0boJZ08F5Phbm6dAxk+kMW3HdUQ95765JJrDpEW2q3sUJLB
ZUiY6/aNB+H+HH/vydXhCT0=
-----END PRIVATE KEY-----
23 changes: 23 additions & 0 deletions test/server.cert
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
-----BEGIN CERTIFICATE-----
MIID2TCCAsGgAwIBAgIJAIRJZ1kGT4ZGMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYD
VQQGEwJHQjEfMB0GA1UECBMWVGVzdCBTdGF0ZSBvciBQcm92aW5jZTEWMBQGA1UE
BxMNVGVzdCBMb2NhbGl0eTEaMBgGA1UEChMRT3JnYW5pemF0aW9uIE5hbWUxITAf
BgNVBAsTGE9yZ2FuaXphdGlvbmFsIFVuaXQgTmFtZTEUMBIGA1UEAxMLQ29tbW9u
IE5hbWUwHhcNMTMxMTE0MTYzMzM5WhcNMTMxMjE0MTYzMzM5WjCBmzELMAkGA1UE
BhMCR0IxHzAdBgNVBAgTFlRlc3QgU3RhdGUgb3IgUHJvdmluY2UxFjAUBgNVBAcT
DVRlc3QgTG9jYWxpdHkxGjAYBgNVBAoTEU9yZ2FuaXphdGlvbiBOYW1lMSEwHwYD
VQQLExhPcmdhbml6YXRpb25hbCBVbml0IE5hbWUxFDASBgNVBAMTC0NvbW1vbiBO
YW1lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArpabpovFB5NQXlNx
bMY696BZRx/AIpW5ouqsrr7ISFoNJlg7lSfjcli6h6OAk+BYQz/uVYw0VdT1vNRe
++cquGfmvQMv8wbWPW7mjMnZegvGmbwZZiVxcWeinTA1+JNd+HB2a2sqVv0nDUee
Ke8cOlgkIShrsTvkCAwOAJMM+/Es1UdqxV2T68zJk/N9sYrckV1M3WlQcIxCMV/u
0Qk2gUu2FyV8ghsQp8Mm4O+TvWBBPNqkHwXN7fdsVqq5Qx4WY0KaL5/SQK25zcDM
fN48Yqm03ccfb8S0STUH5zLtOKRNQPFVUJh4Be9MYzZugfULVZNmbZN0rpyjJ6nd
ZMGK5wIDAQABox4wHDAaBgNVHREEEzARgglsb2NhbGhvc3SHBH8AAAEwDQYJKoZI
hvcNAQEFBQADggEBAD2nQNFbqklcZOR2KqIXYHMGihtYJK/twAzR/YJIDy7GKFWj
pr77BUN9iRVDHCbww78WUPJ8NIrY2iTNoDwWlCbQlmpyvFc6Rv2k855XmN2hrdU9
FqwSTIvTwVH11Ue66IcZ7xIQCnEGmCeB5qg7ueMYuO/wbuEHggTd16AS7ZOS62Qw
f7CTzMk4U+ZJaqOwm8JkjOfoSU6L9nCCLu5iECKNnhubMhIIbY5r3Y28tQKMtT/M
sWxrJunAeTRlL97q7YXyZKIGDPqKZhK3hSyc66jj2a6aBXSltKBG4RElNbuw8SQ/
QHWmJtkpng/V5HjKC9CSLq6YWlJ9ER2qsVQbToM=
-----END CERTIFICATE-----
19 changes: 19 additions & 0 deletions test/server.csr
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIDDjCCAfYCAQAwgZsxCzAJBgNVBAYTAkdCMR8wHQYDVQQIExZUZXN0IFN0YXRl
IG9yIFByb3ZpbmNlMRYwFAYDVQQHEw1UZXN0IExvY2FsaXR5MRowGAYDVQQKExFP
cmdhbml6YXRpb24gTmFtZTEhMB8GA1UECxMYT3JnYW5pemF0aW9uYWwgVW5pdCBO
YW1lMRQwEgYDVQQDEwtDb21tb24gTmFtZTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAK6Wm6aLxQeTUF5TcWzGOvegWUcfwCKVuaLqrK6+yEhaDSZYO5Un
43JYuoejgJPgWEM/7lWMNFXU9bzUXvvnKrhn5r0DL/MG1j1u5ozJ2XoLxpm8GWYl
cXFnop0wNfiTXfhwdmtrKlb9Jw1HninvHDpYJCEoa7E75AgMDgCTDPvxLNVHasVd
k+vMyZPzfbGK3JFdTN1pUHCMQjFf7tEJNoFLthclfIIbEKfDJuDvk71gQTzapB8F
ze33bFaquUMeFmNCmi+f0kCtuc3AzHzePGKptN3HH2/EtEk1B+cy7TikTUDxVVCY
eAXvTGM2boH1C1WTZm2TdK6coyep3WTBiucCAwEAAaAtMCsGCSqGSIb3DQEJDjEe
MBwwGgYDVR0RBBMwEYIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEBBQUAA4IB
AQBQN6fOkBYelN/S1Sc9BC/EjkOUiUYJC+Wt7AzYwqEHpEcZ3qciZBnTDZUmjmd0
0NPM0klY0oygEpbV/aXQFDK9me/3vBF4TlXchTDOLLzvzbXvvnZbp3j5n1TzS4vu
HW+g52D87fWhjElNk4wPD2WrYagdxflTpL0TAoWl+7uW5krVa9gTTwgCQ6vw/4IV
1QdyT2G4TjUQBjk5yBerlj1k2Wzdn5ZgGnKAVBbO09raFwY0J+5JTBl+X/os7gW9
1w84wMnsd5vrsVi0UAnzwF5ZOziP2DDn+4cGe33bSvHgNP30NUXhtkX/3v6a74Tz
jYf1EnwrrWVKPmkH96V3YB5e
-----END CERTIFICATE REQUEST-----
55 changes: 27 additions & 28 deletions test/server.key
Original file line number Diff line number Diff line change
@@ -1,28 +1,27 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDSrWDfSigJZfSs
iBBaX5DX6DA/e2q2PapdLMZq1bcpB5L/RVikzHHrOz7HwxNjJQFrn1jO8HQRCOIL
OhnN01HsXvYR0EL/aIUEZn7Uf0r9yIoKD/wQn9oPessHmvysJImXH6ZfDw74F+10
kxncaFnXcKgJH5s1PHGNs5PeILcyyMb8yGVnDgUWIZEApNUCaqAxz2PFt2aNjthT
diLRxjEuWWnVMXjAdpLj+Bpp3QUJXgllIGTpHFICPg1Fy33qjxRIKI17JVANXeRf
qyHUT9yle3+Y8UBMcDtFfRi/7GFFKFU0+1pd3d1Ha+pHHIrASsSKK7CkoisKqnV2
2iwnXMzNAgMBAAECggEAf/fQX9ErgIntlN8RD9P8pyjiJa1RpGDQmsgXvc0S9Fkl
cOkubuvARqI2ACD+JbrUogqoZwqndbFvnGIuSleR64HC9g8KoxlZstKPN4QaiQzG
zFXpRi/SxJRRvszlraqD6MfQxuzeqtPd6HFxw++eor5LUz9fh3avguMRbltw6+bu
E5y8ej2+XdBeonlUuMoDteRq28hs3zxrnL/e9lIxY7ULSFlz5gS5I+IfxNyGEXeV
KGVRqKarW1Nyh5BlVuUnMN14yB9s0gjI4dp3e2OIKHBcHglJqzHKWtsdjb1Hb09O
B3YS21dg2YWTKmfF/OvLn2W4TOlrYmsoeGEtIy0AAQKBgQD57UEr6Ef9jFVTsAPy
EtnnT+U7msMuHS7KN2VFHz1FOqOwcrKOK1I4ECpYz4GOyn00VaWz02Bv3Srhx6nN
uRWZw1i5RoBhzIEg9DDOwV84nWeSLMzTMBTC8Mhp/0n3NgUsifG13lYKIUR7sBmv
sRWdayBKgWgRKZrivCFAuTWtzQKBgQDXy/XVvwQ5ksH5E/kFL5LNdjxC6z3WOprX
NU3OiDzvuJt+Ince2yhFKg8sXKUQSmrfjkex0XYyzQFiDvzE7lH6ye0xzZg+MUoR
wa5ugk2iTuq9lktFQxMZllEhUb9//1nqX7FlakTDMde15T45EwDT6TjudICHsZWt
QNV9GZybAQKBgGLboPLAL3GwR7QRpI3lPQINDUx1XAzqiC5+mPUtdSvkFQlfZRdt
NVlts4JrmgCkQcAovKGT08qLvkGOm7D/K/clWPv4UiHdJZqmXIP74zFeubANPnuu
wheV7IBY9aXuXT+P1OcuafQZ0p/mOVLQhg89Z4lxBHv9bAGRjsmuOPhlAoGAfZQp
uXtxf/eRfdtLnOL0cTCPHPo8gACWvwo7/yZ1H6O0iRCRdZlfs/An6E75l6NW0kXA
HxCf0ixO07uZCRkPB/yeVc8o+3g/fFnTomedughmvnFJ2EKSSN+a0uL5qAj3UFbj
qvrOjTDiMO346cnPP4KHKO0PJugHDE2gby6KXgECgYEA6KpLRrI9FmNKILJ3FRcr
go3J6oR3EuQllwLeUQsBnwfk66d50x6+VPWWcBLYzqhAjwPJh1zOGjtQBqoE1FS6
oqVTVrljRaiczonOl0boJZ08F5Phbm6dAxk+kMW3HdUQ95765JJrDpEW2q3sUJLB
ZUiY6/aNB+H+HH/vydXhCT0=
-----END PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEArpabpovFB5NQXlNxbMY696BZRx/AIpW5ouqsrr7ISFoNJlg7
lSfjcli6h6OAk+BYQz/uVYw0VdT1vNRe++cquGfmvQMv8wbWPW7mjMnZegvGmbwZ
ZiVxcWeinTA1+JNd+HB2a2sqVv0nDUeeKe8cOlgkIShrsTvkCAwOAJMM+/Es1Udq
xV2T68zJk/N9sYrckV1M3WlQcIxCMV/u0Qk2gUu2FyV8ghsQp8Mm4O+TvWBBPNqk
HwXN7fdsVqq5Qx4WY0KaL5/SQK25zcDMfN48Yqm03ccfb8S0STUH5zLtOKRNQPFV
UJh4Be9MYzZugfULVZNmbZN0rpyjJ6ndZMGK5wIDAQABAoIBAGmAQ3DCF387ax6F
CA62P13yPOD4888ycSpc65rxWPA30qhwOxkoMI6hxZ4/lGxH7q48zNZPUjTn6tN/
9iH9EFi9GLbxXSFb6UzYXmOHem8A/LNb8nFCgSoJeT/JqWOcEfYWZ8kDymMkuVuS
AqbOgl1TdAnBdkp0qZifSDraoccAd/VZFQA/aOIqiWGlYFb1nOpySbc+TrLlRhVz
jAOGfCs7lAFHf3FDFJOGyrIQ/othTc1ffHxfqTMYpi3szcfTBIAG1/xE/EyN5CHz
DFXfwkUU66JRll8j/E0B9OnDSuogi4FYFrqWJ+fjNPB4vxHaC8dQ+q7JehYPNWP9
A2LKiOECgYEA2mZ0PVuuhsZpv6YuoFua2nDQLCZ+p6VQjK6MasTuyEBqln3pV65B
m9xIegf4wgSCd8sh6Ops7FAw4cTy9DueB3vBzdG/kgupxo0zbDGmpaecUmXl2IVe
VaA4YWPU82Pw3tT//vpeYyOmKUTLEbtemj2xQrc/HnaddV6hOsAl9dcCgYEAzKU7
w+PJ/+QLYZuAUZq0GxQS+uOpUEW8U5SyD5ANh7sCImRa2bPhfFqefdxIQdcr2nQZ
OqdXa+sjug7CtyI+ZlGd0oHFiYhyc1WAXKlVrAtFb+ssWo40rUvvB+4H42q7I5SS
lCYxRjLd/Qph7X3M7je25PC4GVRSIWYQnBOhUXECgYBDqZo5qD3Z436/sWygocDI
DEtyYjq7Faxu6WT3byvLPqnHFhtE3ufUsdqCdBXNhjglhPlsf7RfQjjiuXHL2OyM
xPq2GVWQmaxvpy9XRcqrZ9I2dPtQqYEgZhMRmSxQe5YUc0kcZdT4QgMopfeD9tjI
UHSqhrs3ZOhDhJ3O5djc4QKBgQCI8DBT3oN29dQf1nxBHvJSBFbHB7xueJuSmjek
blJ/dsXw2ZJphxLlsYXI1rSLSj6QCYwwUXYQQuI/SE1HWmTC9u5SxH+4jlN3lck1
OCKZ41jtkUK2vd3F8L/cYI1qwirDnlGPTRc/0B33ixEIaFvPM/zwqZunZ2Ml8jQ/
HGugIQKBgQCWuZGkOz8bAGLiRifzqJJLPLPjR0IoNaljTL6h2ISl9RM3sLnSmeEa
klB8VmmPni/GxmJb6c1nj2qejw2mAqKa28KW5hYF4tkkbTasj1YE7MYsggoI4DRm
TndRVohGMPflZEbY9+lteF8oZE5igsB/qFPIsRZt2cIwUtd7+Ad59g==
-----END RSA PRIVATE KEY-----
39 changes: 31 additions & 8 deletions test/winston-logstash_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ describe('winston-logstash transport', function() {

function createTestSecureServer(port, options, on_data) {
var serverOptions = {
key: fs.readFileSync(__dirname + '/server.key'),
cert: fs.readFileSync(__dirname + '/server.pub'),
key: (options.serverKey) ? fs.readFileSync(options.serverKey) : fs.readFileSync(__dirname + '/server.key'),
cert: (options.serverCert) ? fs.readFileSync(options.serverCert) : fs.readFileSync(__dirname + '/server.cert'),
handshakeTimeout: 2000,
requestCert: options.verify ? options.verify : false,
ca: options.verify ? [ fs.readFileSync(__dirname + '/client.pub') ] : []
Expand All @@ -43,15 +43,16 @@ describe('winston-logstash transport', function() {
return server
}

function createLogger(port, secure) {
function createLogger(port, secure, caFilePath) {
return new (winston.Logger)({
transports: [
new (winston.transports.Logstash)({
port: port,
node_name: 'test',
localhost: 'localhost',
pid: 12345 ,
ssl_enable: secure ? true : false
ssl_enable: secure ? true : false,
ca: (secure && caFilePath) ? [__dirname + '/server.cert'] : undefined
})
]
});
Expand Down Expand Up @@ -113,7 +114,7 @@ describe('winston-logstash transport', function() {

it('send logs over SSL secured TCP as valid json', function(done) {
var response;
var logger = createLogger(port, true);
var logger = createLogger(port, true, __dirname + '/server.cert');
var expected = {"stream":"sample","level":"info","message":"hello world"};

test_server = createTestSecureServer(port, {}, function (data) {
Expand All @@ -127,7 +128,7 @@ describe('winston-logstash transport', function() {

it('send logs over SSL secured TCP as valid json with SSL verification', function(done) {
var response;
var logger = createLogger(port, true);
var logger = createLogger(port, true, __dirname + '/server.cert');
var expected = {"stream":"sample","level":"info","message":"hello world"};

test_server = createTestSecureServer(port, { verify: true }, function (data) {
Expand All @@ -139,6 +140,30 @@ describe('winston-logstash transport', function() {
logger.log('info', 'hello world', {stream: 'sample'});
});


it('logstash transport receive an error when there is a connection error different from ECONNREFUSED', function(done) {
var response;
var logger = createLogger(port, true, __dirname + '/server-fail.cert');
var expected = {"stream":"sample","level":"info","message":"hello world"};

test_server = createTestSecureServer(port, {
serverKey: __dirname + '/server-fail.key',
serverCert: __dirname + '/server-fail.cert',
verify: true
}, function (data) {
response = data.toString();
expect(JSON.parse(response)).to.be.eql(expected);
done();
});

logger.transports.logstash.on('error', function (err) {
expect(err).to.be.an.instanceof(Error);
done();
});

logger.log('info', 'hello world', {stream: 'sample'});
});

// Teardown
afterEach(function () {
if (test_server) {
Expand Down Expand Up @@ -171,8 +196,6 @@ describe('winston-logstash transport', function() {

});
});


});


0 comments on commit 9b63b38

Please sign in to comment.