mirror of https://github.com/grpc/grpc-node.git
77 lines
4.0 KiB
TypeScript
77 lines
4.0 KiB
TypeScript
/*
|
|
* Copyright 2020 gRPC 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
|
|
*
|
|
* 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 * as assert from 'assert';
|
|
import * as uriParser from '../src/uri-parser';
|
|
import * as resolver from '../src/resolver';
|
|
|
|
describe('URI Parser', function(){
|
|
describe('parseUri', function() {
|
|
const expectationList: {target: string, result: uriParser.GrpcUri | null}[] = [
|
|
{target: 'localhost', result: {scheme: undefined, authority: undefined, path: 'localhost'}},
|
|
/* This looks weird, but it's OK because the resolver selection code will handle it */
|
|
{target: 'localhost:80', result: {scheme: 'localhost', authority: undefined, path: '80'}},
|
|
{target: 'dns:localhost', result: {scheme: 'dns', authority: undefined, path: 'localhost'}},
|
|
{target: 'dns:///localhost', result: {scheme: 'dns', authority: '', path: 'localhost'}},
|
|
{target: 'dns://authority/localhost', result: {scheme: 'dns', authority: 'authority', path: 'localhost'}},
|
|
{target: '//authority/localhost', result: {scheme: undefined, authority: 'authority', path: 'localhost'}},
|
|
// Regression test for https://github.com/grpc/grpc-node/issues/1359
|
|
{target: 'dns:foo-internal.aws-us-east-2.tracing.staging-edge.foo-data.net:443:443', result: {scheme: 'dns', authority: undefined, path: 'foo-internal.aws-us-east-2.tracing.staging-edge.foo-data.net:443:443'}}
|
|
];
|
|
for (const {target, result} of expectationList) {
|
|
it (target, function() {
|
|
assert.deepStrictEqual(uriParser.parseUri(target), result);
|
|
});
|
|
}
|
|
});
|
|
|
|
describe('parseUri + mapUriDefaultScheme', function() {
|
|
const expectationList: {target: string, result: uriParser.GrpcUri | null}[] = [
|
|
{target: 'localhost', result: {scheme: 'dns', authority: undefined, path: 'localhost'}},
|
|
{target: 'localhost:80', result: {scheme: 'dns', authority: undefined, path: 'localhost:80'}},
|
|
{target: 'dns:localhost', result: {scheme: 'dns', authority: undefined, path: 'localhost'}},
|
|
{target: 'dns:///localhost', result: {scheme: 'dns', authority: '', path: 'localhost'}},
|
|
{target: 'dns://authority/localhost', result: {scheme: 'dns', authority: 'authority', path: 'localhost'}},
|
|
{target: 'unix:socket', result: {scheme: 'unix', authority: undefined, path: 'socket'}},
|
|
{target: 'bad:path', result: {scheme: 'dns', authority: undefined, path: 'bad:path'}}
|
|
];
|
|
for (const {target, result} of expectationList) {
|
|
it(target, function() {
|
|
assert.deepStrictEqual(resolver.mapUriDefaultScheme(uriParser.parseUri(target) ?? {path: 'null'}), result);
|
|
})
|
|
}
|
|
});
|
|
|
|
describe('splitHostPort', function() {
|
|
const expectationList: {path: string, result: uriParser.HostPort | null}[] = [
|
|
{path: 'localhost', result: {host: 'localhost'}},
|
|
{path: 'localhost:123', result: {host: 'localhost', port: 123}},
|
|
{path: '12345:6789', result: {host: '12345', port: 6789}},
|
|
{path: '[::1]:123', result: {host: '::1', port: 123}},
|
|
{path: '[::1]', result: {host: '::1'}},
|
|
{path: '[', result: null},
|
|
{path: '[123]', result: null},
|
|
// Regression test for https://github.com/grpc/grpc-node/issues/1359
|
|
{path: 'foo-internal.aws-us-east-2.tracing.staging-edge.foo-data.net:443:443', result: {host: 'foo-internal.aws-us-east-2.tracing.staging-edge.foo-data.net:443:443'}}
|
|
];
|
|
for (const {path, result} of expectationList) {
|
|
it(path, function() {
|
|
assert.deepStrictEqual(uriParser.splitHostPort(path), result);
|
|
});
|
|
}
|
|
});
|
|
}); |