|
5 | 5 |
|
6 | 6 | // core modules
|
7 | 7 | var http = require('http');
|
| 8 | +var domain = require('domain'); |
8 | 9 |
|
9 | 10 | // userland
|
10 | 11 | var assert = require('chai').assert;
|
@@ -983,5 +984,45 @@ describe('restify-errors node module.', function() {
|
983 | 984 | var serializedErr = serializer.err(err1, 'oh noes!');
|
984 | 985 | assert.notInclude(serializedErr.stack, 'cause=undefined');
|
985 | 986 | });
|
| 987 | + |
| 988 | + it('should serialize domain when not using node domains', function() { |
| 989 | + var serializer = restifyErrors.bunyanSerializer.create({ |
| 990 | + topLevelFields: true |
| 991 | + }); |
| 992 | + var err1 = new Error('foo'); |
| 993 | + err1.domain = 'bar'; |
| 994 | + |
| 995 | + logger.child({ serializers: serializer }).error(err1); |
| 996 | + |
| 997 | + var serializedErr = serializer.err(err1, 'oh noes!'); |
| 998 | + assert.include(serializedErr.stack, 'domain="bar"'); |
| 999 | + }); |
| 1000 | + |
| 1001 | + // eslint-disable-next-line max-len |
| 1002 | + it('should not serialize domain when using node domains', function(done) { |
| 1003 | + var dom = domain.create(); |
| 1004 | + dom.on('error', function(err1) { |
| 1005 | + var serializer = restifyErrors.bunyanSerializer.create({ |
| 1006 | + topLevelFields: true |
| 1007 | + }); |
| 1008 | + |
| 1009 | + logger.child({ serializers: serializer }).error(err1); |
| 1010 | + |
| 1011 | + var serializedErr = serializer.err(err1, 'oh noes!'); |
| 1012 | + // This weird pattern is necessary to make mocha report failures |
| 1013 | + // correctly inside a domain context |
| 1014 | + try { |
| 1015 | + assert.notInclude(serializedErr.stack, 'domain='); |
| 1016 | + return done(); |
| 1017 | + } catch (e) { |
| 1018 | + return done(e); |
| 1019 | + } |
| 1020 | + }); |
| 1021 | + dom.run(function() { |
| 1022 | + process.nextTick(function() { |
| 1023 | + throw new Error('foo'); |
| 1024 | + }); |
| 1025 | + }); |
| 1026 | + }); |
986 | 1027 | });
|
987 | 1028 | });
|
0 commit comments