203 lines
6.2 KiB
JavaScript
203 lines
6.2 KiB
JavaScript
/*globals it, describe, beforeEach */
|
|
(function () {
|
|
'use strict';
|
|
|
|
var should = require('should'),
|
|
HStore = require('../lib/index.js'),
|
|
hstore;
|
|
|
|
describe('pg-hstore.stringify', function () {
|
|
describe('without sanitization', function(){
|
|
beforeEach(function () {
|
|
hstore = new HStore();
|
|
});
|
|
|
|
it('should hstore encode a string', function (done) {
|
|
var source = { foo: 'bar' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"bar"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode a number', function (done) {
|
|
var source = { foo: 1000 };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"1000"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode a boolean', function (done) {
|
|
var source = { foo: true };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"true"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode an object', function (done) {
|
|
var source = { foo: { bar: 1000 } };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"[object Object]"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode a null value', function (done) {
|
|
var source = { foo: null };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>NULL');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode a null string value', function (done) {
|
|
var source = { foo: 'null' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"null"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode single quotes correctly', function (done) {
|
|
var source = { 'foo \'quotes\'': 'with \'quotes\'' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo \'quotes\'"=>"with \'quotes\'"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode double quotes correctly', function (done) {
|
|
var source = { foo: 'with \"quotes\"' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"with "quotes""');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode double quote keys correctly', function (done) {
|
|
var source = { 'foo \"quotes\"': 'with \"quotes\"' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo "quotes""=>"with "quotes""');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode colon correctly', function (done) {
|
|
var source = { 'foo': 'with:colon' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"with:colon"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should not sanitize output', function (done) {
|
|
var source = { 'foo\'"\\': 'bar' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo\'"\\"=>"bar"');
|
|
done();
|
|
}, true);
|
|
});
|
|
});
|
|
|
|
describe('with sanitization', function(){
|
|
beforeEach(function () {
|
|
hstore = new HStore({sanitize : true});
|
|
});
|
|
|
|
it('should hstore encode a string', function (done) {
|
|
var source = { foo: 'bar' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"bar"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode a number', function (done) {
|
|
var source = { foo: 1000 };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"1000"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode a boolean', function (done) {
|
|
var source = { foo: true };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"true"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode a null value', function (done) {
|
|
var source = { foo: null };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>NULL');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode a null string value', function (done) {
|
|
var source = { foo: 'null' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"null"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode single quotes correctly', function (done) {
|
|
var source = { 'foo \'quotes\'': 'with \'quotes\'' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo \'\'quotes\'\'"=>"with \'\'quotes\'\'"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode double quotes correctly', function (done) {
|
|
var source = { foo: 'with "quotes"' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"with \\"quotes\\""');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode backslashes correctly', function (done) {
|
|
var source = { '\\f0122': '\\f0123' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"\\\\f0122"=>"\\\\f0123"');
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should hstore encode colon correctly', function (done) {
|
|
var source = { 'foo': 'with:colon' };
|
|
hstore.stringify(source, function (target) {
|
|
should.exist(target);
|
|
target.should.equal('"foo"=>"with:colon"');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
})();
|