mirror of
https://github.com/leanote/desktop-app.git
synced 2025-10-19 10:07:12 +00:00
185 lines
4.2 KiB
JavaScript
185 lines
4.2 KiB
JavaScript
var should = require('should'),
|
|
needle = require('./../'),
|
|
http = require('http'),
|
|
port = 11111,
|
|
server;
|
|
|
|
describe('parsing', function(){
|
|
|
|
var get_catch = function(url, opts, cb) {
|
|
var done = function(e) {
|
|
cb(e);
|
|
}
|
|
try {
|
|
needle.get(url, opts, function() {
|
|
done();
|
|
});
|
|
} catch(e) {
|
|
done(e);
|
|
}
|
|
}
|
|
|
|
describe('when response is an JSON string', function(){
|
|
|
|
var json_string = '{"foo":"bar"}';
|
|
|
|
before(function(done){
|
|
server = http.createServer(function(req, res) {
|
|
res.setHeader('Content-Type', 'application/json');
|
|
res.end(json_string);
|
|
}).listen(port, done);
|
|
});
|
|
|
|
after(function(done){
|
|
server.close(done);
|
|
})
|
|
|
|
describe('and parse option is not passed', function() {
|
|
|
|
it('should return object', function(done){
|
|
needle.get('localhost:' + port, function(err, response, body){
|
|
should.ifError(err);
|
|
body.should.have.property('foo', 'bar');
|
|
done();
|
|
})
|
|
})
|
|
|
|
})
|
|
|
|
describe('and parse option is true', function() {
|
|
|
|
describe('and JSON is valid', function() {
|
|
|
|
it('should return object', function(done){
|
|
needle.get('localhost:' + port, { parse: true }, function(err, response, body){
|
|
should.not.exist(err);
|
|
body.should.have.property('foo', 'bar')
|
|
done();
|
|
})
|
|
})
|
|
|
|
});
|
|
|
|
describe('and response is empty', function() {
|
|
|
|
var old_json_string;
|
|
|
|
before(function() {
|
|
old_json_string = json_string;
|
|
json_string = "";
|
|
});
|
|
|
|
after(function() {
|
|
json_string = old_json_string;
|
|
});
|
|
|
|
it('should return an empty string', function(done) {
|
|
needle.get('localhost:' + port, { parse: true }, function(err, resp) {
|
|
should.not.exist(err);
|
|
resp.body.should.equal('');
|
|
done();
|
|
})
|
|
})
|
|
|
|
})
|
|
|
|
describe('and JSON is invalid', function() {
|
|
|
|
var old_json_string;
|
|
|
|
before(function() {
|
|
old_json_string = json_string;
|
|
json_string = "this is not going to work";
|
|
});
|
|
|
|
after(function() {
|
|
json_string = old_json_string;
|
|
});
|
|
|
|
it('does not throw', function(done) {
|
|
(function(){
|
|
needle.get('localhost:' + port, { parse: true }, done);
|
|
}).should.not.throw();
|
|
});
|
|
|
|
it('does NOT return object', function(done) {
|
|
needle.get('localhost:' + port, { parse: true }, function(err, response, body) {
|
|
should.not.exist(err);
|
|
body.should.be.a.String;
|
|
body.toString().should.eql('this is not going to work');
|
|
done();
|
|
})
|
|
})
|
|
|
|
});
|
|
|
|
})
|
|
|
|
describe('and parse option is false', function() {
|
|
|
|
it('does NOT return object', function(done){
|
|
needle.get('localhost:' + port, { parse: false }, function(err, response, body) {
|
|
should.not.exist(err);
|
|
body.should.be.an.instanceof(Buffer)
|
|
body.toString().should.eql('{"foo":"bar"}');
|
|
done();
|
|
})
|
|
})
|
|
|
|
})
|
|
|
|
});
|
|
|
|
describe('when response is an XML string', function(){
|
|
|
|
before(function(done){
|
|
server = http.createServer(function(req, res) {
|
|
res.writeHeader(200, {'Content-Type': 'application/xml'})
|
|
res.end("<post><body>hello there</body></post>")
|
|
}).listen(port, done);
|
|
});
|
|
|
|
after(function(done){
|
|
server.close(done);
|
|
})
|
|
|
|
describe('and xml2js library is present', function(){
|
|
|
|
require.bind(null, 'xml2js').should.not.throw();
|
|
|
|
describe('and parse_response is true', function(){
|
|
|
|
it('should return valid object', function(done){
|
|
needle.get('localhost:' + port, function(err, response, body){
|
|
should.not.exist(err);
|
|
body.post.should.have.property('body', 'hello there');
|
|
done();
|
|
})
|
|
})
|
|
|
|
})
|
|
|
|
describe('and parse response is not true', function(){
|
|
|
|
it('should return xml string', function(){
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
describe('and xml2js is not found', function(){
|
|
|
|
it('should return xml string', function(){
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|