mirror of
https://github.com/sofastack/sofa-rpc-node.git
synced 2025-12-08 20:26:00 +00:00
78 lines
1.9 KiB
JavaScript
78 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
const mm = require('mm');
|
|
const assert = require('assert');
|
|
const RpcService = require('../../').server.RpcService;
|
|
const logger = console;
|
|
|
|
describe('test/server/service.test.js', () => {
|
|
afterEach(mm.restore);
|
|
it('should work ok', async function() {
|
|
assert.throws(() => {
|
|
new RpcService();
|
|
}, null, '[RpcService] options.interfaceName is required');
|
|
|
|
const service = new RpcService({
|
|
interfaceName: 'com.node.test.TestService',
|
|
version: '1.0',
|
|
appName: 'test',
|
|
group: 'SOFA',
|
|
logger,
|
|
apiMeta: {
|
|
methods: [{
|
|
name: 'plus',
|
|
parameterTypes: [
|
|
'java.lang.Integer',
|
|
'java.lang.Integer',
|
|
],
|
|
returnType: 'java.lang.Integer',
|
|
}],
|
|
},
|
|
delegate: {
|
|
async plus(a, b) {
|
|
return a + b;
|
|
},
|
|
},
|
|
});
|
|
await service.ready();
|
|
|
|
assert(!service.app);
|
|
assert(!service.registry);
|
|
assert(!service.classMaps);
|
|
|
|
assert.deepEqual(service.normalizeReg('bolt://127.0.0.1:12200'), {
|
|
interfaceName: 'com.node.test.TestService',
|
|
version: '1.0',
|
|
group: 'SOFA',
|
|
url: 'bolt://127.0.0.1:12200?interface=com.node.test.TestService&version=1.0&group=SOFA',
|
|
});
|
|
|
|
await service.publish('bolt://127.0.0.1:12200');
|
|
assert(!service.publishUrl);
|
|
await service.unPublish();
|
|
|
|
const ctx = {};
|
|
const req = {
|
|
data: {
|
|
methodName: 'plus',
|
|
args: [ 1, 2 ],
|
|
},
|
|
options: {
|
|
timeout: 3000,
|
|
},
|
|
};
|
|
const res = {
|
|
isClosed: true,
|
|
meta: {},
|
|
remoteAddress: '127.0.0.1',
|
|
};
|
|
let executed = false;
|
|
mm(service.logger, 'warn', message => {
|
|
assert(message === '[RpcService] client maybe closed before sending response, remote address: %s');
|
|
executed = true;
|
|
});
|
|
await service.invoke(ctx, req, res);
|
|
assert(executed);
|
|
});
|
|
});
|