| // Copyright 2021 The Pigweed Authors |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| // use this file except in compliance with the License. You may obtain a copy of |
| // the License at |
| // |
| // https://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| // License for the specific language governing permissions and limitations under |
| // the License. |
| |
| /* eslint-env browser, jasmine */ |
| import 'jasmine'; |
| |
| import {Library} from 'pigweed/pw_protobuf_compiler/ts/proto_lib'; |
| import {AnotherMessage, SomeMessage} from 'test_protos_tspb/test_protos_tspb_pb/pw_rpc/ts/test_pb'; |
| |
| import * as descriptors from './descriptors'; |
| |
| const TEST_PROTO_PATH = 'pw_rpc/ts/test_protos-descriptor-set.proto.bin'; |
| |
| describe('Descriptors', () => { |
| it('parses from ServiceDescriptor binary', async () => { |
| const lib = await Library.fromFileDescriptorSet( |
| TEST_PROTO_PATH, 'test_protos_tspb'); |
| const fd = lib.fileDescriptorSet.getFileList()[0]; |
| const sd = fd.getServiceList()[0]; |
| const service = new descriptors.Service(sd, lib, fd.getPackage()!); |
| |
| expect(service.name).toEqual('pw.rpc.test1.TheTestService') |
| expect(service.methods.size).toEqual(4); |
| |
| const unaryMethod = service.methodsByName.get('SomeUnary')!; |
| expect(unaryMethod.name).toEqual('SomeUnary'); |
| expect(unaryMethod.clientStreaming).toBeFalse(); |
| expect(unaryMethod.serverStreaming).toBeFalse(); |
| expect(unaryMethod.service).toEqual(service); |
| expect(unaryMethod.requestType).toEqual(SomeMessage); |
| expect(unaryMethod.responseType).toEqual(AnotherMessage); |
| |
| const someBidiStreaming = service.methodsByName.get('SomeBidiStreaming')!; |
| expect(someBidiStreaming.name).toEqual('SomeBidiStreaming'); |
| expect(someBidiStreaming.clientStreaming).toBeTrue(); |
| expect(someBidiStreaming.serverStreaming).toBeTrue(); |
| expect(someBidiStreaming.service).toEqual(service); |
| expect(someBidiStreaming.requestType).toEqual(SomeMessage); |
| expect(someBidiStreaming.responseType).toEqual(AnotherMessage); |
| }); |
| }) |