nodeserver
Version:
Nodeserver is a NodeJS Web Server with reverse proxy functionality alternative to Nginx reverse proxy for NodeJS projects
377 lines (330 loc) • 7.81 kB
JavaScript
var assert = require('assert');
var http = require('http');
var querystring = require('querystring');
var nodeserverClass = require('../../nodeserver');
module.exports = exports = {
configEmpty: function(done) {
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {}
}
});
nodeserver.start();
var serverStatus = function(status) {
assert(status, 'The administrator should not be active');
nodeserver.exit();
done();
};
http.get('http://localhost:10000', function(res) {
console.log(res)
serverStatus(false);
}).on('error', function(e) {
serverStatus(true);
});
},
onlyActiveFalse: function(done) {
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {
active: false
}
}
});
nodeserver.start();
var serverStatus = function(status) {
nodeserver.exit();
assert(status, 'The administrator should not be active');
done();
};
http.get('http://localhost:10000', function(res) {
serverStatus(false);
}).on('error', function(e) {
serverStatus(true);
});
},
onlyActiveTrue: function(done) {
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {
active: true
}
}
});
nodeserver.start();
var serverStatus = function(status) {
nodeserver.exit();
assert(status, 'The administrator should be active on port 10000');
done();
};
http.get('http://localhost:10000', function(res) {
serverStatus(true);
}).on('error', function(e) {
serverStatus(false);
});
},
onlyActiveTrueAccess: function(done) {
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {
active: true
}
}
});
nodeserver.start();
var serverStatus = function(status, message) {
message = message || 'The administrator should be active on port 10000';
nodeserver.exit();
assert(status, message);
done();
};
var postData = querystring.stringify({
user: '',
password: ''
});
var options = {
hostname: 'localhost',
port: 10000,
path: '/login',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': postData.length
}
};
var req = http.request(options, function(res) {
if(res.headers.location == '/') {
serverStatus(false, 'The admin should not be logged');
} else {
serverStatus(true);
}
}).on('error', function(e) {
serverStatus(false);
});
req.write(postData);
req.end();
},
onlyUserVoidAccess: function(done) {
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {
active: true,
user: ''
}
}
});
nodeserver.start();
var serverStatus = function(status, message) {
message = message || 'The administrator should be active on port 10000';
nodeserver.exit();
assert(status, message);
done();
};
var postData = querystring.stringify({
user: '',
password: ''
});
var options = {
hostname: 'localhost',
port: 10000,
path: '/login',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': postData.length
}
};
var req = http.request(options, function(res) {
if(res.headers.location == '/') {
serverStatus(false, 'The admin should not be logged');
} else {
serverStatus(true);
}
}).on('error', function(e) {
serverStatus(false);
});
req.write(postData);
req.end();
},
onlyPasswordVoidAccess: function(done) {
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {
active: true,
password: ''
}
}
});
nodeserver.start();
var serverStatus = function(status, message) {
message = message || 'The administrator should be active on port 10000';
nodeserver.exit();
assert(status, message);
done();
};
var postData = querystring.stringify({
user: '',
password: ''
});
var options = {
hostname: 'localhost',
port: 10000,
path: '/login',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': postData.length
}
};
var req = http.request(options, function(res) {
if(res.headers.location == '/') {
serverStatus(false, 'The admin should not be logged');
} else {
serverStatus(true);
}
}).on('error', function(e) {
serverStatus(false);
});
req.write(postData);
req.end();
},
userPasswordVoidAccess: function(done) {
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {
active: true,
user: '',
password: ''
}
}
});
nodeserver.start();
var serverStatus = function(status, message) {
message = message || 'The administrator should be active on port 10000';
nodeserver.exit();
assert(status, message);
done();
};
var postData = querystring.stringify({
user: '',
password: ''
});
var options = {
hostname: 'localhost',
port: 10000,
path: '/login',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': postData.length
}
};
var req = http.request(options, function(res) {
if(res.headers.location == '/') {
serverStatus(false, 'The admin should not be logged');
} else {
serverStatus(true);
}
}).on('error', function(e) {
serverStatus(false);
});
req.write(postData);
req.end();
},
invalidPassword: function(done) {
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {
active: true,
user: 'nodeserver',
password: 'e854d7282f1e5a842e712eea4dfbdaf5'
}
}
});
nodeserver.start();
var serverStatus = function(status, message) {
message = message || 'The administrator should be active on port 10000';
nodeserver.exit();
assert(status, message);
done();
};
var postData = querystring.stringify({
user: 'nodeserver',
password: 'nodeserver-error'
});
var options = {
hostname: 'localhost',
port: 10000,
path: '/login',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': postData.length
}
};
var req = http.request(options, function(res) {
if(res.headers.location == '/') {
serverStatus(false, 'The admin should not be logged');
} else {
serverStatus(true);
}
}).on('error', function(e) {
serverStatus(false);
});
req.write(postData);
req.end();
},
usedPort: function(done) {
var server = http.createServer(function (request, response) {
response.writeHead(500, {"Content-Type": "text/plain"});
response.end("Oh no, other proccess uses this port\n");
});
server.listen(10000);
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {
active: true,
user: 'nodeserver',
password: 'e854d7282f1e5a842e712eea4dfbdaf5',
port: 10000
}
}
});
nodeserver.start();
nodeserver.exit();
server.close();
done();
},
allOkButDesactivate: function(done) {
var nodeserver = new nodeserverClass(false);
nodeserver.readConfig({
nodeserver: {
admin: {
active: false,
user: 'nodeserver',
password: 'e854d7282f1e5a842e712eea4dfbdaf5',
port: 10000
}
}
});
nodeserver.start();
var serverStatus = function(status) {
nodeserver.exit();
assert(status, 'The administrator should not be active');
done();
};
http.get('http://localhost:10000', function(res) {
serverStatus(false);
}).on('error', function(e) {
serverStatus(true);
});
}
};