wechaty-grpc
Version:
gRPC for Wechaty
68 lines • 2.75 kB
JavaScript
import { test } from 'tstest';
import { promisify } from 'util';
import { grpc, google, } from '../src/mod.js';
test('HealthCheck protocol buffer', async (t) => {
const request = new google.HealthCheckRequest();
const response = new google.HealthCheckResponse();
response.setStatus(google.HealthCheckResponse.ServingStatus.SERVING);
await t.ok(request && response, 'should export HealCheck protobuf');
});
test('health check smoke testing', async (t) => {
const ENDPOINT = 'localhost:18788';
/**
* Create Server
*/
const testServer = getTestServer();
const server = new grpc.Server();
server.addService(google.HealthService, testServer);
await promisify(server.bindAsync
.bind(server))(ENDPOINT, grpc.ServerCredentials.createInsecure());
server.start();
/**
* Create Client
*/
const client = new google.HealthClient(ENDPOINT, grpc.credentials.createInsecure());
const request = new google.HealthCheckRequest();
const response = await promisify(client.check
.bind(client))(request);
t.equal(response.getStatus(), google.HealthCheckResponse.ServingStatus.SERVING, 'should return SERVING_STATUS_SERVING for check method');
/**
* gRPC: Stream
*/
const eventStream = client.watch(request);
let counter = 0;
const future = new Promise((resolve, reject) => {
eventStream
.on('data', (response) => {
t.equal(response.getStatus(), google.HealthCheckResponse.ServingStatus.SERVING, `should return SERVING_STATUS_SERVING for watch method with counter #${counter}`);
counter++;
})
.on('close', resolve)
.on('error', reject);
});
await future;
t.equal(counter, 2, 'should return 2 responses');
await new Promise(resolve => server.tryShutdown(resolve));
// server.forceShutdown()
});
function getTestServer() {
const puppetTestServer = {
check: (_call, callback) => {
const response = new google.HealthCheckResponse();
response.setStatus(google.HealthCheckResponse.ServingStatus.SERVING);
callback(null, response);
},
watch: (call) => {
const response1 = new google.HealthCheckResponse();
response1.setStatus(google.HealthCheckResponse.ServingStatus.SERVING);
call.write(response1);
const response2 = new google.HealthCheckResponse();
response2.setStatus(google.HealthCheckResponse.ServingStatus.SERVING);
call.write(response2);
call.end();
},
};
return puppetTestServer;
}
//# sourceMappingURL=health-check.spec.js.map