Skip to content

Commit dfb10f9

Browse files
hiepthain0v1
authored andcommitted
grpc-loader: add method options test
1 parent fc9db76 commit dfb10f9

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

packages/proto-loader/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"@types/node": "^10.17.26",
5858
"@types/yargs": "^17.0.24",
5959
"clang-format": "^1.2.2",
60+
"google-proto-files": "^3.0.2",
6061
"gts": "^3.1.0",
6162
"rimraf": "^3.0.2",
6263
"ts-node": "^10.9.2",

packages/proto-loader/test/descriptor_type_test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { rpcFileDescriptorSet } from '../test_protos/rpc.desc';
2020
import { readFileSync } from 'fs';
2121

2222
import * as proto_loader from '../src/index';
23+
import { dirname } from "path";
2324

2425
// Relative path from build output directory to test_protos directory
2526
const TEST_PROTO_DIR = `${__dirname}/../../test_protos/`;
@@ -128,4 +129,20 @@ describe('Descriptor types', () => {
128129
// This will throw if the file descriptor object cannot be parsed
129130
proto_loader.loadFileDescriptorSetFromObject(rpcFileDescriptorSet);
130131
});
132+
133+
it('Can parse method options into object correctly', () => {
134+
const includeDirs = [
135+
dirname(require.resolve('google-proto-files/package.json'))
136+
];
137+
const packageDefinition = proto_loader.loadSync(`${TEST_PROTO_DIR}/method_options.proto`, { includeDirs });
138+
assert('Hello' in packageDefinition);
139+
const service = packageDefinition.Hello as proto_loader.ServiceDefinition
140+
assert.deepStrictEqual(service.Hello.options, {
141+
deprecated: true,
142+
idempotency_level: 'IDEMPOTENCY_UNKNOWN',
143+
uninterpreted_option: { identifier_value: 'foo' },
144+
'(google.api.http)': { post: '/hello' },
145+
'(google.api.method_signature)': 'bar'
146+
})
147+
})
131148
});
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
syntax = "proto3";
2+
3+
import "google/api/annotations.proto";
4+
import "google/api/client.proto";
5+
import "google/api/httpbody.proto";
6+
7+
message Empty {}
8+
9+
message MethodSignature {
10+
repeated string method_signature = 0;
11+
}
12+
13+
service Hello {
14+
rpc Hello (Empty) returns (Empty) {
15+
option deprecated = true;
16+
option idempotency_level = IDEMPOTENCY_UNKNOWN;
17+
option uninterpreted_option = {
18+
identifier_value: 'foo'
19+
};
20+
option (google.api.http) = {
21+
post: "/hello"
22+
};
23+
option (google.api.method_signature) = 'bar';
24+
}
25+
}

0 commit comments

Comments
 (0)