node-postgres/test/unit/communication-tests.js

102 lines
2.4 KiB
JavaScript
Raw Normal View History

require(__dirname+'/test-helper');
2010-10-08 09:00:49 +08:00
test('client can take existing stream', function() {
var stream = new MemoryStream();
var client = new Client({
stream: stream
});
assert.equal(client.stream, stream);
});
2010-10-07 08:54:02 +08:00
test('using closed stream', function() {
var stream = new MemoryStream();
stream.readyState = 'closed';
stream.connect = function(port, host) {
this.connectCalled = true;
this.port = port;
this.host = host;
}
var client = new Client({
stream: stream,
user: '!',
database: 'x',
2010-10-07 08:54:02 +08:00
host: 'bang',
port: 1234
});
client.connect();
2010-10-07 08:54:02 +08:00
test('makes stream connect', function() {
assert.equal(stream.connectCalled, true);
});
2010-10-07 08:54:02 +08:00
test('uses configured port', function() {
assert.equal(stream.port, 1234);
});
2010-10-07 08:54:02 +08:00
test('uses configured host', function() {
assert.equal(stream.host, 'bang');
});
2010-10-11 06:30:33 +08:00
test('after stream connects', function() {
stream.emit('connect');
test('sends connection packet', function() {
assert.length(stream.packets, 1);
var expectedBuffer = new BufferList()
.add(Buffer([0,3,0, 0]))//version
.addCString('user')
.addCString('!')
.addCString('database')
.addCString('x')
.addCString("") //final terminator
.join(true);
assert.equalBuffers(stream.packets[0], expectedBuffer);
});
2010-10-11 06:30:33 +08:00
});
2010-10-07 08:54:02 +08:00
});
test('using opened stream', function() {
var stream = new MemoryStream();
stream.readyState = 'open';
stream.connect = function() {
assert.ok(false, "Should not call open");
};
var client = new Client({stream: stream});
test('does not call open', function() {
client.connect();
});
});
2010-10-07 10:34:51 +08:00
test('query queue', function() {
2010-10-08 09:00:49 +08:00
2010-10-07 10:34:51 +08:00
var stream = new MemoryStream();
2010-10-08 09:00:49 +08:00
2010-10-07 10:34:51 +08:00
stream.readyState = 'open';
2010-10-08 09:00:49 +08:00
var client = new Client({
stream: stream
});
client.connect();
2010-10-08 08:38:27 +08:00
test('new client has empty queue', function() {
assert.empty(client.queryQueue);
});
test('calling query queues the query object', function() {
2010-10-09 12:17:09 +08:00
var query = client.query('!');
2010-10-08 08:38:27 +08:00
assert.length(client.queryQueue, 1);
});
2010-10-08 09:00:49 +08:00
test('sends query after stream emits ready for query packet', function() {
assert.empty(stream.packets);
var handled = stream.emit('data', buffers.readyForQuery());
assert.ok(handled, "Stream should have had data handled");
assert.length(stream.packets, 1);
assert.equalBuffers(stream.packets[0], [0x51,0,0,0,6,33,0])
2010-10-08 09:00:49 +08:00
});
2010-10-08 08:38:27 +08:00
2010-10-07 10:34:51 +08:00
});