mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
144 lines
3.6 KiB
JavaScript
144 lines
3.6 KiB
JavaScript
"use strict";
|
|
|
|
var helper = require('./test-helper');
|
|
var util = require('util');
|
|
|
|
var pg = helper.pg
|
|
|
|
var createErorrClient = function() {
|
|
var client = helper.client();
|
|
client.once('error', function(err) {
|
|
assert.fail('Client shoud not throw error during query execution');
|
|
});
|
|
client.on('drain', client.end.bind(client));
|
|
return client;
|
|
};
|
|
|
|
const suite = new helper.Suite('error handling')
|
|
|
|
suite.test('query receives error on client shutdown', function(done) {
|
|
var client = new Client();
|
|
client.connect(assert.success(function() {
|
|
const config = {
|
|
text: 'select pg_sleep(5)',
|
|
name: 'foobar'
|
|
}
|
|
let queryError;
|
|
client.query(new pg.Query(config), assert.calls(function(err, res) {
|
|
assert(err instanceof Error)
|
|
queryError = err
|
|
}));
|
|
setTimeout(() => client.end(), 50)
|
|
client.once('end', () => {
|
|
assert(queryError instanceof Error)
|
|
done()
|
|
})
|
|
}));
|
|
});
|
|
|
|
var ensureFuture = function (testClient, done) {
|
|
var goodQuery = testClient.query(new pg.Query("select age from boom"));
|
|
assert.emits(goodQuery, 'row', function (row) {
|
|
assert.equal(row.age, 28);
|
|
done();
|
|
});
|
|
};
|
|
|
|
suite.test("when query is parsing", (done) => {
|
|
var client = createErorrClient();
|
|
|
|
var q = client.query({ text: "CREATE TEMP TABLE boom(age integer); INSERT INTO boom (age) VALUES (28);" });
|
|
|
|
|
|
//this query wont parse since there isn't a table named bang
|
|
var query = client.query(new pg.Query({
|
|
text: "select * from bang where name = $1",
|
|
values: ['0']
|
|
}));
|
|
|
|
assert.emits(query, 'error', function (err) {
|
|
ensureFuture(client, done);
|
|
});
|
|
});
|
|
|
|
suite.test("when a query is binding", function (done) {
|
|
var client = createErorrClient();
|
|
|
|
var q = client.query({ text: "CREATE TEMP TABLE boom(age integer); INSERT INTO boom (age) VALUES (28);" });
|
|
|
|
|
|
var query = client.query(new pg.Query({
|
|
text: 'select * from boom where age = $1',
|
|
values: ['asldkfjasdf']
|
|
}));
|
|
|
|
assert.emits(query, 'error', function (err) {
|
|
assert.equal(err.severity, "ERROR");
|
|
ensureFuture(client, done);
|
|
});
|
|
});
|
|
|
|
suite.test('non-query error with callback', function(done) {
|
|
var client = new Client({
|
|
user:'asldkfjsadlfkj'
|
|
});
|
|
client.connect(assert.calls(function(error, client) {
|
|
assert(error instanceof Error)
|
|
done()
|
|
}));
|
|
});
|
|
|
|
suite.test('non-error calls supplied callback', function(done) {
|
|
var client = new Client({
|
|
user: helper.args.user,
|
|
password: helper.args.password,
|
|
host: helper.args.host,
|
|
port: helper.args.port,
|
|
database: helper.args.database
|
|
});
|
|
|
|
client.connect(assert.calls(function(err) {
|
|
assert.ifError(err);
|
|
client.end(done);
|
|
}))
|
|
});
|
|
|
|
suite.test('when connecting to an invalid host with callback', function (done) {
|
|
var client = new Client({
|
|
user: 'very invalid username',
|
|
});
|
|
client.connect(function(error, client) {
|
|
assert(error instanceof Error);
|
|
done();
|
|
});
|
|
});
|
|
|
|
suite.test('when connecting to invalid host with promise', function(done) {
|
|
var client = new Client({
|
|
user: 'very invalid username'
|
|
});
|
|
client.connect().catch((e) => done());
|
|
});
|
|
|
|
suite.test('non-query error', function(done) {
|
|
var client = new Client({
|
|
user:'asldkfjsadlfkj'
|
|
});
|
|
client.connect()
|
|
.catch(e => {
|
|
assert(e instanceof Error)
|
|
done()
|
|
})
|
|
});
|
|
|
|
suite.test('within a simple query', (done) => {
|
|
var client = createErorrClient();
|
|
|
|
var query = client.query(new pg.Query("select eeeee from yodas_dsflsd where pixistix = 'zoiks!!!'"));
|
|
|
|
assert.emits(query, 'error', function(error) {
|
|
assert.equal(error.severity, "ERROR");
|
|
done();
|
|
});
|
|
});
|