mirror of https://github.com/grpc/grpc-node.git
				
				
				
			Merge pull request #432 from nicolasnoble/backport-428
Backporting #428
This commit is contained in:
		
						commit
						2bfee5878c
					
				|  | @ -51,7 +51,7 @@ void buffer_destroy_func(void *user_data) { | ||||||
| grpc_slice CreateSliceFromString(const Local<String> source) { | grpc_slice CreateSliceFromString(const Local<String> source) { | ||||||
|   Nan::HandleScope scope; |   Nan::HandleScope scope; | ||||||
|   Nan::Utf8String *utf8_value = new Nan::Utf8String(source); |   Nan::Utf8String *utf8_value = new Nan::Utf8String(source); | ||||||
|   return grpc_slice_new_with_user_data(**utf8_value, source->Length(), |   return grpc_slice_new_with_user_data(**utf8_value, utf8_value->length(), | ||||||
|                                        string_destroy_func, utf8_value); |                                        string_destroy_func, utf8_value); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -839,8 +839,12 @@ describe('Other conditions', function() { | ||||||
|       unary: function(call, cb) { |       unary: function(call, cb) { | ||||||
|         var req = call.request; |         var req = call.request; | ||||||
|         if (req.error) { |         if (req.error) { | ||||||
|  |           var message = 'Requested error'; | ||||||
|  |           if (req.message) { | ||||||
|  |             message = req.message; | ||||||
|  |           } | ||||||
|           cb({code: grpc.status.UNKNOWN, |           cb({code: grpc.status.UNKNOWN, | ||||||
|               details: 'Requested error'}, null, trailer_metadata); |               details: message}, null, trailer_metadata); | ||||||
|         } else { |         } else { | ||||||
|           cb(null, {count: 1}, trailer_metadata); |           cb(null, {count: 1}, trailer_metadata); | ||||||
|         } |         } | ||||||
|  | @ -850,8 +854,12 @@ describe('Other conditions', function() { | ||||||
|         var errored; |         var errored; | ||||||
|         stream.on('data', function(data) { |         stream.on('data', function(data) { | ||||||
|           if (data.error) { |           if (data.error) { | ||||||
|  |             var message = 'Requested error'; | ||||||
|  |             if (data.message) { | ||||||
|  |               message = data.message; | ||||||
|  |             } | ||||||
|             errored = true; |             errored = true; | ||||||
|             cb(new Error('Requested error'), null, trailer_metadata); |             cb(new Error(message), null, trailer_metadata); | ||||||
|           } else { |           } else { | ||||||
|             count += 1; |             count += 1; | ||||||
|           } |           } | ||||||
|  | @ -865,8 +873,12 @@ describe('Other conditions', function() { | ||||||
|       serverStream: function(stream) { |       serverStream: function(stream) { | ||||||
|         var req = stream.request; |         var req = stream.request; | ||||||
|         if (req.error) { |         if (req.error) { | ||||||
|  |           var message = 'Requested error'; | ||||||
|  |           if (req.message) { | ||||||
|  |             message = req.message; | ||||||
|  |           } | ||||||
|           var err = {code: grpc.status.UNKNOWN, |           var err = {code: grpc.status.UNKNOWN, | ||||||
|                      details: 'Requested error'}; |                      details: message}; | ||||||
|           err.metadata = trailer_metadata; |           err.metadata = trailer_metadata; | ||||||
|           stream.emit('error', err); |           stream.emit('error', err); | ||||||
|         } else { |         } else { | ||||||
|  | @ -880,7 +892,11 @@ describe('Other conditions', function() { | ||||||
|         var count = 0; |         var count = 0; | ||||||
|         stream.on('data', function(data) { |         stream.on('data', function(data) { | ||||||
|           if (data.error) { |           if (data.error) { | ||||||
|             var err = new Error('Requested error'); |             var message = 'Requested error'; | ||||||
|  |             if (data.message) { | ||||||
|  |               message = data.message; | ||||||
|  |             } | ||||||
|  |             var err = new Error(message); | ||||||
|             err.metadata = trailer_metadata.clone(); |             err.metadata = trailer_metadata.clone(); | ||||||
|             err.metadata.add('count', '' + count); |             err.metadata.add('count', '' + count); | ||||||
|             stream.emit('error', err); |             stream.emit('error', err); | ||||||
|  | @ -1127,6 +1143,14 @@ describe('Other conditions', function() { | ||||||
|         done(); |         done(); | ||||||
|       }); |       }); | ||||||
|     }); |     }); | ||||||
|  |     it('for a UTF-8 error message', function(done) { | ||||||
|  |       client.unary({error: true, message: '測試字符串'}, function(err, data) { | ||||||
|  |         assert(err); | ||||||
|  |         assert.strictEqual(err.code, grpc.status.UNKNOWN); | ||||||
|  |         assert.strictEqual(err.details, '測試字符串'); | ||||||
|  |         done(); | ||||||
|  |       }); | ||||||
|  |     }); | ||||||
|   }); |   }); | ||||||
|   describe('call.getPeer should return the peer', function() { |   describe('call.getPeer should return the peer', function() { | ||||||
|     it('for a unary call', function(done) { |     it('for a unary call', function(done) { | ||||||
|  |  | ||||||
|  | @ -16,6 +16,7 @@ syntax = "proto3"; | ||||||
| 
 | 
 | ||||||
| message Request { | message Request { | ||||||
|   bool error = 1; |   bool error = 1; | ||||||
|  |   string message = 2; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message Response { | message Response { | ||||||
|  |  | ||||||
|  | @ -347,13 +347,13 @@ function statusCodeAndMessage(client, done) { | ||||||
|   var arg = { |   var arg = { | ||||||
|     response_status: { |     response_status: { | ||||||
|       code: 2, |       code: 2, | ||||||
|       message: 'test status message' |       message: 'test status message - 測試字符串' | ||||||
|     } |     } | ||||||
|   }; |   }; | ||||||
|   client.unaryCall(arg, function(err, resp) { |   client.unaryCall(arg, function(err, resp) { | ||||||
|     assert(err); |     assert(err); | ||||||
|     assert.strictEqual(err.code, 2); |     assert.strictEqual(err.code, 2); | ||||||
|     assert.strictEqual(err.details, 'test status message'); |     assert.strictEqual(err.details, 'test status message - 測試字符串'); | ||||||
|     done(); |     done(); | ||||||
|   }); |   }); | ||||||
|   var duplex = client.fullDuplexCall(); |   var duplex = client.fullDuplexCall(); | ||||||
|  | @ -361,7 +361,7 @@ function statusCodeAndMessage(client, done) { | ||||||
|   duplex.on('status', function(status) { |   duplex.on('status', function(status) { | ||||||
|     assert(status); |     assert(status); | ||||||
|     assert.strictEqual(status.code, 2); |     assert.strictEqual(status.code, 2); | ||||||
|     assert.strictEqual(status.details, 'test status message'); |     assert.strictEqual(status.details, 'test status message - 測試字符串'); | ||||||
|     done(); |     done(); | ||||||
|   }); |   }); | ||||||
|   duplex.on('error', function(){}); |   duplex.on('error', function(){}); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue