blob: f541effd935d6d04a8a796f8e275cf316e043dd7 [file] [log] [blame]
// Copyright 2021-2023 Buf Technologies, Inc.
//
// 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
//
// http://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.
import {
Code,
DubboError,
createCallbackClient,
createPromiseClient,
} from "@apachedubbo/dubbo";
import { TestService } from "../gen/grpc/testing/test_dubbo.js";
import { Empty } from "../gen/grpc/testing/empty_pb.js";
import { createTestServers } from "../helpers/testserver.js";
describe("unimplemented_server_streaming_method", function () {
const servers = createTestServers();
beforeAll(async () => await servers.start());
servers.describeTransports((transport, transportName) => {
it("with promise client", async function () {
const client = createPromiseClient(TestService, transport());
const request = new Empty();
try {
for await (const response of client.unimplementedStreamingOutputCall(
request
)) {
fail(`expecting no response, got: ${response.toJsonString()}`);
}
fail("expected to catch an error");
} catch (e) {
expect(e).toBeInstanceOf(DubboError);
expect(DubboError.from(e).code).toBe(Code.Unimplemented);
if (transportName.includes("against grpc-go")) {
expect(DubboError.from(e).message).toBe(
"[unimplemented] method UnimplementedStreamingOutputCall not implemented"
);
} else {
expect(DubboError.from(e).message).toBe(
"[unimplemented] grpc.testing.TestService.UnimplementedStreamingOutputCall is not implemented"
);
}
}
});
it("with callback client", function (done) {
const client = createCallbackClient(TestService, transport());
const request = new Empty();
client.unimplementedStreamingOutputCall(
request,
(response) => {
fail(`expecting no response, got: ${response.toJsonString()}`);
},
(err: DubboError | undefined) => {
expect(err?.code).toBe(Code.Unimplemented);
if (transportName.includes("against grpc-go")) {
expect(err?.message).toBe(
"[unimplemented] method UnimplementedStreamingOutputCall not implemented"
);
} else {
expect(err?.message).toBe(
"[unimplemented] grpc.testing.TestService.UnimplementedStreamingOutputCall is not implemented"
);
}
done();
}
);
});
});
afterAll(async () => await servers.stop());
});