summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2025-04-21 14:58:22 +0100
committerdakkar <dakkar@thenautilus.net>2025-04-21 16:44:13 +0100
commitfda71c414727b98ed52eb6a9195b3bbdcfda9054 (patch)
tree949ec13907415d4abf841bc662d2537317bfd5f2
parentcheck signatures with and without query - fix #1036 (diff)
downloadsharkey-fda71c414727b98ed52eb6a9195b3bbdcfda9054.tar.gz
sharkey-fda71c414727b98ed52eb6a9195b3bbdcfda9054.tar.bz2
sharkey-fda71c414727b98ed52eb6a9195b3bbdcfda9054.zip
make `toPuny` work better in testing
-rw-r--r--packages/backend/src/core/UtilityService.ts13
-rw-r--r--packages/backend/test/unit/UtilityService.ts21
2 files changed, 32 insertions, 2 deletions
diff --git a/packages/backend/src/core/UtilityService.ts b/packages/backend/src/core/UtilityService.ts
index 81eaa5f95d..9ed8138ffe 100644
--- a/packages/backend/src/core/UtilityService.ts
+++ b/packages/backend/src/core/UtilityService.ts
@@ -106,13 +106,22 @@ export class UtilityService {
@bindThis
public toPuny(host: string): string {
- return domainToASCII(host.toLowerCase());
+ // domainToASCII will return an empty string if we give it a
+ // string like `name:123`, but `host` may well be in that form
+ // (e.g. when testing locally, you'll get `localhost:3000`); split
+ // the port off, and add it back later
+ const hostParts = host.toLowerCase().match(/^(.+?)(:.+)?$/);
+ if (!hostParts) return '';
+ const hostname = hostParts[1];
+ const port = hostParts[2] ?? '';
+
+ return domainToASCII(hostname) + port;
}
@bindThis
public toPunyNullable(host: string | null | undefined): string | null {
if (host == null) return null;
- return domainToASCII(host.toLowerCase());
+ return this.toPuny(host);
}
@bindThis
diff --git a/packages/backend/test/unit/UtilityService.ts b/packages/backend/test/unit/UtilityService.ts
index d86e794f2f..cb010ff1f9 100644
--- a/packages/backend/test/unit/UtilityService.ts
+++ b/packages/backend/test/unit/UtilityService.ts
@@ -22,6 +22,12 @@ describe('UtilityService', () => {
test('japanese', () => {
assert.equal(utilityService.punyHost('http://www.新聞.com'), 'www.xn--efvv70d.com');
});
+ test('simple, with port', () => {
+ assert.equal(utilityService.punyHost('http://www.foo.com:3000'), 'www.foo.com:3000');
+ });
+ test('japanese, with port', () => {
+ assert.equal(utilityService.punyHost('http://www.新聞.com:3000'), 'www.xn--efvv70d.com:3000');
+ });
});
describe('punyHostPSLDomain', () => {
@@ -31,6 +37,12 @@ describe('UtilityService', () => {
test('japanese', () => {
assert.equal(utilityService.punyHostPSLDomain('http://www.新聞.com'), 'xn--efvv70d.com');
});
+ test('simple, with port', () => {
+ assert.equal(utilityService.punyHostPSLDomain('http://www.foo.com:3000'), 'foo.com:3000');
+ });
+ test('japanese, with port', () => {
+ assert.equal(utilityService.punyHostPSLDomain('http://www.新聞.com:3000'), 'xn--efvv70d.com:3000');
+ });
test('lower', () => {
assert.equal(utilityService.punyHostPSLDomain('http://foo.github.io'), 'foo.github.io');
assert.equal(utilityService.punyHostPSLDomain('http://foo.bar.github.io'), 'bar.github.io');
@@ -40,4 +52,13 @@ describe('UtilityService', () => {
assert.equal(utilityService.punyHostPSLDomain('http://foo.bar.masto.host'), 'bar.masto.host');
});
});
+
+ describe('toPuny', () => {
+ test('without port ', () => {
+ assert.equal(utilityService.toPuny('www.foo.com'), 'www.foo.com');
+ });
+ test('with port ', () => {
+ assert.equal(utilityService.toPuny('www.foo.com:3000'), 'www.foo.com:3000');
+ });
+ });
});