| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 | "use strict";var __importDefault = (this && this.__importDefault) || function (mod) {    return (mod && mod.__esModule) ? mod : { "default": mod };};Object.defineProperty(exports, "__esModule", { value: true });const assert_1 = __importDefault(require("assert"));const serializer_1 = require("./serializer");const buffer_list_1 = __importDefault(require("./testing/buffer-list"));describe('serializer', () => {    it('builds startup message', function () {        const actual = serializer_1.serialize.startup({            user: 'brian',            database: 'bang',        });        assert_1.default.deepEqual(actual, new buffer_list_1.default()            .addInt16(3)            .addInt16(0)            .addCString('user')            .addCString('brian')            .addCString('database')            .addCString('bang')            .addCString('client_encoding')            .addCString('UTF8')            .addCString('')            .join(true));    });    it('builds password message', function () {        const actual = serializer_1.serialize.password('!');        assert_1.default.deepEqual(actual, new buffer_list_1.default().addCString('!').join(true, 'p'));    });    it('builds request ssl message', function () {        const actual = serializer_1.serialize.requestSsl();        const expected = new buffer_list_1.default().addInt32(80877103).join(true);        assert_1.default.deepEqual(actual, expected);    });    it('builds SASLInitialResponseMessage message', function () {        const actual = serializer_1.serialize.sendSASLInitialResponseMessage('mech', 'data');        assert_1.default.deepEqual(actual, new buffer_list_1.default().addCString('mech').addInt32(4).addString('data').join(true, 'p'));    });    it('builds SCRAMClientFinalMessage message', function () {        const actual = serializer_1.serialize.sendSCRAMClientFinalMessage('data');        assert_1.default.deepEqual(actual, new buffer_list_1.default().addString('data').join(true, 'p'));    });    it('builds query message', function () {        var txt = 'select * from boom';        const actual = serializer_1.serialize.query(txt);        assert_1.default.deepEqual(actual, new buffer_list_1.default().addCString(txt).join(true, 'Q'));    });    describe('parse message', () => {        it('builds parse message', function () {            const actual = serializer_1.serialize.parse({ text: '!' });            var expected = new buffer_list_1.default().addCString('').addCString('!').addInt16(0).join(true, 'P');            assert_1.default.deepEqual(actual, expected);        });        it('builds parse message with named query', function () {            const actual = serializer_1.serialize.parse({                name: 'boom',                text: 'select * from boom',                types: [],            });            var expected = new buffer_list_1.default().addCString('boom').addCString('select * from boom').addInt16(0).join(true, 'P');            assert_1.default.deepEqual(actual, expected);        });        it('with multiple parameters', function () {            const actual = serializer_1.serialize.parse({                name: 'force',                text: 'select * from bang where name = $1',                types: [1, 2, 3, 4],            });            var expected = new buffer_list_1.default()                .addCString('force')                .addCString('select * from bang where name = $1')                .addInt16(4)                .addInt32(1)                .addInt32(2)                .addInt32(3)                .addInt32(4)                .join(true, 'P');            assert_1.default.deepEqual(actual, expected);        });    });    describe('bind messages', function () {        it('with no values', function () {            const actual = serializer_1.serialize.bind();            var expectedBuffer = new buffer_list_1.default()                .addCString('')                .addCString('')                .addInt16(0)                .addInt16(0)                .addInt16(0)                .join(true, 'B');            assert_1.default.deepEqual(actual, expectedBuffer);        });        it('with named statement, portal, and values', function () {            const actual = serializer_1.serialize.bind({                portal: 'bang',                statement: 'woo',                values: ['1', 'hi', null, 'zing'],            });            var expectedBuffer = new buffer_list_1.default()                .addCString('bang') // portal name                .addCString('woo') // statement name                .addInt16(4)                .addInt16(0)                .addInt16(0)                .addInt16(0)                .addInt16(0)                .addInt16(4)                .addInt32(1)                .add(Buffer.from('1'))                .addInt32(2)                .add(Buffer.from('hi'))                .addInt32(-1)                .addInt32(4)                .add(Buffer.from('zing'))                .addInt16(0)                .join(true, 'B');            assert_1.default.deepEqual(actual, expectedBuffer);        });    });    it('with custom valueMapper', function () {        const actual = serializer_1.serialize.bind({            portal: 'bang',            statement: 'woo',            values: ['1', 'hi', null, 'zing'],            valueMapper: () => null,        });        var expectedBuffer = new buffer_list_1.default()            .addCString('bang') // portal name            .addCString('woo') // statement name            .addInt16(4)            .addInt16(0)            .addInt16(0)            .addInt16(0)            .addInt16(0)            .addInt16(4)            .addInt32(-1)            .addInt32(-1)            .addInt32(-1)            .addInt32(-1)            .addInt16(0)            .join(true, 'B');        assert_1.default.deepEqual(actual, expectedBuffer);    });    it('with named statement, portal, and buffer value', function () {        const actual = serializer_1.serialize.bind({            portal: 'bang',            statement: 'woo',            values: ['1', 'hi', null, Buffer.from('zing', 'utf8')],        });        var expectedBuffer = new buffer_list_1.default()            .addCString('bang') // portal name            .addCString('woo') // statement name            .addInt16(4) // value count            .addInt16(0) // string            .addInt16(0) // string            .addInt16(0) // string            .addInt16(1) // binary            .addInt16(4)            .addInt32(1)            .add(Buffer.from('1'))            .addInt32(2)            .add(Buffer.from('hi'))            .addInt32(-1)            .addInt32(4)            .add(Buffer.from('zing', 'utf-8'))            .addInt16(0)            .join(true, 'B');        assert_1.default.deepEqual(actual, expectedBuffer);    });    describe('builds execute message', function () {        it('for unamed portal with no row limit', function () {            const actual = serializer_1.serialize.execute();            var expectedBuffer = new buffer_list_1.default().addCString('').addInt32(0).join(true, 'E');            assert_1.default.deepEqual(actual, expectedBuffer);        });        it('for named portal with row limit', function () {            const actual = serializer_1.serialize.execute({                portal: 'my favorite portal',                rows: 100,            });            var expectedBuffer = new buffer_list_1.default().addCString('my favorite portal').addInt32(100).join(true, 'E');            assert_1.default.deepEqual(actual, expectedBuffer);        });    });    it('builds flush command', function () {        const actual = serializer_1.serialize.flush();        var expected = new buffer_list_1.default().join(true, 'H');        assert_1.default.deepEqual(actual, expected);    });    it('builds sync command', function () {        const actual = serializer_1.serialize.sync();        var expected = new buffer_list_1.default().join(true, 'S');        assert_1.default.deepEqual(actual, expected);    });    it('builds end command', function () {        const actual = serializer_1.serialize.end();        var expected = Buffer.from([0x58, 0, 0, 0, 4]);        assert_1.default.deepEqual(actual, expected);    });    describe('builds describe command', function () {        it('describe statement', function () {            const actual = serializer_1.serialize.describe({ type: 'S', name: 'bang' });            var expected = new buffer_list_1.default().addChar('S').addCString('bang').join(true, 'D');            assert_1.default.deepEqual(actual, expected);        });        it('describe unnamed portal', function () {            const actual = serializer_1.serialize.describe({ type: 'P' });            var expected = new buffer_list_1.default().addChar('P').addCString('').join(true, 'D');            assert_1.default.deepEqual(actual, expected);        });    });    describe('builds close command', function () {        it('describe statement', function () {            const actual = serializer_1.serialize.close({ type: 'S', name: 'bang' });            var expected = new buffer_list_1.default().addChar('S').addCString('bang').join(true, 'C');            assert_1.default.deepEqual(actual, expected);        });        it('describe unnamed portal', function () {            const actual = serializer_1.serialize.close({ type: 'P' });            var expected = new buffer_list_1.default().addChar('P').addCString('').join(true, 'C');            assert_1.default.deepEqual(actual, expected);        });    });    describe('copy messages', function () {        it('builds copyFromChunk', () => {            const actual = serializer_1.serialize.copyData(Buffer.from([1, 2, 3]));            const expected = new buffer_list_1.default().add(Buffer.from([1, 2, 3])).join(true, 'd');            assert_1.default.deepEqual(actual, expected);        });        it('builds copy fail', () => {            const actual = serializer_1.serialize.copyFail('err!');            const expected = new buffer_list_1.default().addCString('err!').join(true, 'f');            assert_1.default.deepEqual(actual, expected);        });        it('builds copy done', () => {            const actual = serializer_1.serialize.copyDone();            const expected = new buffer_list_1.default().join(true, 'c');            assert_1.default.deepEqual(actual, expected);        });    });    it('builds cancel message', () => {        const actual = serializer_1.serialize.cancel(3, 4);        const expected = new buffer_list_1.default().addInt16(1234).addInt16(5678).addInt32(3).addInt32(4).join(true);        assert_1.default.deepEqual(actual, expected);    });});//# sourceMappingURL=outbound-serializer.test.js.map
 |