mirror of https://github.com/grpc/grpc-node.git
Add test
This commit is contained in:
parent
7e1d20fec1
commit
b52d38f663
|
@ -562,5 +562,131 @@ describe(`${anyGrpc.clientName} client -> ${anyGrpc.serverName} server`, functio
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe('Other conditions', function() {
|
||||||
|
var client;
|
||||||
|
var server;
|
||||||
|
var port;
|
||||||
|
before(function(done) {
|
||||||
|
server = new serverGrpc.Server();
|
||||||
|
var existing_metadata = new serverGrpc.Metadata();
|
||||||
|
existing_metadata.add('existing-metadata', 'yes');
|
||||||
|
server.addService(TestServiceClient.service, {
|
||||||
|
unary: function(call, cb) {
|
||||||
|
var req = call.request;
|
||||||
|
if (req.error) {
|
||||||
|
var message = 'Requested error';
|
||||||
|
if (req.message) {
|
||||||
|
message = req.message;
|
||||||
|
}
|
||||||
|
cb({code: serverGrpc.status.UNKNOWN,
|
||||||
|
message: message,
|
||||||
|
metadata: existing_metadata}, null, null);
|
||||||
|
} else {
|
||||||
|
cb(null, {count: 1});
|
||||||
|
}
|
||||||
|
}/*,
|
||||||
|
clientStream: function(stream, cb){
|
||||||
|
var count = 0;
|
||||||
|
var errored;
|
||||||
|
stream.on('data', function(data) {
|
||||||
|
if (data.error) {
|
||||||
|
var message = 'Requested error';
|
||||||
|
if (data.message) {
|
||||||
|
message = data.message;
|
||||||
|
}
|
||||||
|
errored = true;
|
||||||
|
cb(new Error(message), null, trailer_metadata);
|
||||||
|
} else {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
stream.on('end', function() {
|
||||||
|
if (!errored) {
|
||||||
|
cb(null, {count: count}, trailer_metadata);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
serverStream: function(stream) {
|
||||||
|
var req = stream.request;
|
||||||
|
if (req.error) {
|
||||||
|
var message = 'Requested error';
|
||||||
|
if (req.message) {
|
||||||
|
message = req.message;
|
||||||
|
}
|
||||||
|
var err = {code: serverGrpc.status.UNKNOWN,
|
||||||
|
details: message};
|
||||||
|
err.metadata = trailer_metadata;
|
||||||
|
stream.emit('error', err);
|
||||||
|
} else {
|
||||||
|
for (var i = 0; i < 5; i++) {
|
||||||
|
stream.write({count: i});
|
||||||
|
}
|
||||||
|
stream.end(trailer_metadata);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
bidiStream: function(stream) {
|
||||||
|
var count = 0;
|
||||||
|
stream.on('data', function(data) {
|
||||||
|
if (data.error) {
|
||||||
|
var message = 'Requested error';
|
||||||
|
if (data.message) {
|
||||||
|
message = data.message;
|
||||||
|
}
|
||||||
|
var err = new Error(message);
|
||||||
|
err.metadata = trailer_metadata.clone();
|
||||||
|
err.metadata.add('count', '' + count);
|
||||||
|
stream.emit('error', err);
|
||||||
|
} else {
|
||||||
|
stream.write({count: count});
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
stream.on('end', function() {
|
||||||
|
stream.end(trailer_metadata);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
*/});
|
||||||
|
server.bindAsync('localhost:0', serverInsecureCreds, (err, _port) => {
|
||||||
|
assert.ifError(err);
|
||||||
|
port = _port;
|
||||||
|
client = new TestServiceClient('localhost:' + port, clientInsecureCreds);
|
||||||
|
server.start();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
after(function() {
|
||||||
|
server.forceShutdown();
|
||||||
|
});
|
||||||
|
describe('Existing metadata', function() {
|
||||||
|
it('should not be present when a unary call succeeds', function(done) {
|
||||||
|
var call = client.unary({error: false}, function(err, data) {
|
||||||
|
assert.ifError(err);
|
||||||
|
});
|
||||||
|
call.on('status', function(status) {
|
||||||
|
assert.true(status.metadata.get('existing-metadata', []));
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('should be present when a unary call fails', function(done) {
|
||||||
|
var call = client.unary({error: true}, function(err, data) {
|
||||||
|
assert(err);
|
||||||
|
});
|
||||||
|
call.on('status', function(status) {
|
||||||
|
assert.deepEqual(status.metadata.get('existing-metadata'), ['yes']);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('Error object should contain the status', function() {
|
||||||
|
it('for a unary call', function(done) {
|
||||||
|
client.unary({error: true}, function(err, data) {
|
||||||
|
assert(err);
|
||||||
|
assert.strictEqual(err.code, clientGrpc.status.UNKNOWN);
|
||||||
|
assert.strictEqual(err.details, 'Requested error');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
Loading…
Reference in New Issue