mirror of https://github.com/grpc/grpc-node.git
grpc-loader: add method options test
This commit is contained in:
parent
fc9db761a9
commit
dfb10f9ac4
|
@ -57,6 +57,7 @@
|
||||||
"@types/node": "^10.17.26",
|
"@types/node": "^10.17.26",
|
||||||
"@types/yargs": "^17.0.24",
|
"@types/yargs": "^17.0.24",
|
||||||
"clang-format": "^1.2.2",
|
"clang-format": "^1.2.2",
|
||||||
|
"google-proto-files": "^3.0.2",
|
||||||
"gts": "^3.1.0",
|
"gts": "^3.1.0",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
|
|
|
@ -20,6 +20,7 @@ import { rpcFileDescriptorSet } from '../test_protos/rpc.desc';
|
||||||
import { readFileSync } from 'fs';
|
import { readFileSync } from 'fs';
|
||||||
|
|
||||||
import * as proto_loader from '../src/index';
|
import * as proto_loader from '../src/index';
|
||||||
|
import { dirname } from "path";
|
||||||
|
|
||||||
// Relative path from build output directory to test_protos directory
|
// Relative path from build output directory to test_protos directory
|
||||||
const TEST_PROTO_DIR = `${__dirname}/../../test_protos/`;
|
const TEST_PROTO_DIR = `${__dirname}/../../test_protos/`;
|
||||||
|
@ -128,4 +129,20 @@ describe('Descriptor types', () => {
|
||||||
// This will throw if the file descriptor object cannot be parsed
|
// This will throw if the file descriptor object cannot be parsed
|
||||||
proto_loader.loadFileDescriptorSetFromObject(rpcFileDescriptorSet);
|
proto_loader.loadFileDescriptorSetFromObject(rpcFileDescriptorSet);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Can parse method options into object correctly', () => {
|
||||||
|
const includeDirs = [
|
||||||
|
dirname(require.resolve('google-proto-files/package.json'))
|
||||||
|
];
|
||||||
|
const packageDefinition = proto_loader.loadSync(`${TEST_PROTO_DIR}/method_options.proto`, { includeDirs });
|
||||||
|
assert('Hello' in packageDefinition);
|
||||||
|
const service = packageDefinition.Hello as proto_loader.ServiceDefinition
|
||||||
|
assert.deepStrictEqual(service.Hello.options, {
|
||||||
|
deprecated: true,
|
||||||
|
idempotency_level: 'IDEMPOTENCY_UNKNOWN',
|
||||||
|
uninterpreted_option: { identifier_value: 'foo' },
|
||||||
|
'(google.api.http)': { post: '/hello' },
|
||||||
|
'(google.api.method_signature)': 'bar'
|
||||||
|
})
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
import "google/api/annotations.proto";
|
||||||
|
import "google/api/client.proto";
|
||||||
|
import "google/api/httpbody.proto";
|
||||||
|
|
||||||
|
message Empty {}
|
||||||
|
|
||||||
|
message MethodSignature {
|
||||||
|
repeated string method_signature = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
service Hello {
|
||||||
|
rpc Hello (Empty) returns (Empty) {
|
||||||
|
option deprecated = true;
|
||||||
|
option idempotency_level = IDEMPOTENCY_UNKNOWN;
|
||||||
|
option uninterpreted_option = {
|
||||||
|
identifier_value: 'foo'
|
||||||
|
};
|
||||||
|
option (google.api.http) = {
|
||||||
|
post: "/hello"
|
||||||
|
};
|
||||||
|
option (google.api.method_signature) = 'bar';
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue