mirror of
https://github.com/signalapp/libsignal.git
synced 2026-04-26 01:35:22 +02:00
Move some tests out of monolithic PublicAPITest.ts
This commit is contained in:
139
node/ts/test/protocol/AddressTest.ts
Normal file
139
node/ts/test/protocol/AddressTest.ts
Normal file
@@ -0,0 +1,139 @@
|
||||
//
|
||||
// Copyright 2021-2022 Signal Messenger, LLC.
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
//
|
||||
|
||||
/* eslint-disable @typescript-eslint/require-await */
|
||||
|
||||
import * as SignalClient from '../../index';
|
||||
import * as util from '../util';
|
||||
|
||||
import { assert, use } from 'chai';
|
||||
import * as chaiAsPromised from 'chai-as-promised';
|
||||
import * as uuid from 'uuid';
|
||||
|
||||
use(chaiAsPromised);
|
||||
util.initLogger();
|
||||
|
||||
describe('ProtocolAddress', () => {
|
||||
it('can hold arbitrary data', () => {
|
||||
const addr = SignalClient.ProtocolAddress.new('name', 42);
|
||||
assert.deepEqual(addr.name(), 'name');
|
||||
assert.deepEqual(addr.deviceId(), 42);
|
||||
});
|
||||
it('can round-trip ServiceIds', () => {
|
||||
const newUuid = uuid.v4();
|
||||
const aci = SignalClient.Aci.fromUuid(newUuid);
|
||||
const pni = SignalClient.Pni.fromUuid(newUuid);
|
||||
|
||||
const aciAddr = SignalClient.ProtocolAddress.new(aci, 1);
|
||||
const pniAddr = SignalClient.ProtocolAddress.new(pni, 1);
|
||||
assert.notEqual(aciAddr.toString(), pniAddr.toString());
|
||||
assert.isTrue(aciAddr.serviceId()?.isEqual(aci));
|
||||
assert.isTrue(pniAddr.serviceId()?.isEqual(pni));
|
||||
});
|
||||
});
|
||||
|
||||
describe('ServiceId', () => {
|
||||
const testingUuid = '8c78cd2a-16ff-427d-83dc-1a5e36ce713d';
|
||||
|
||||
it('handles ACIs', () => {
|
||||
const aci = SignalClient.Aci.fromUuid(testingUuid);
|
||||
assert.instanceOf(aci, SignalClient.Aci);
|
||||
assert.isTrue(
|
||||
aci.isEqual(SignalClient.Aci.fromUuidBytes(uuid.parse(testingUuid)))
|
||||
);
|
||||
assert.isFalse(aci.isEqual(SignalClient.Pni.fromUuid(testingUuid)));
|
||||
|
||||
assert.deepEqual(testingUuid, aci.getRawUuid());
|
||||
assert.deepEqual(uuid.parse(testingUuid), aci.getRawUuidBytes());
|
||||
assert.deepEqual(testingUuid, aci.getServiceIdString());
|
||||
assert.deepEqual(uuid.parse(testingUuid), aci.getServiceIdBinary());
|
||||
assert.deepEqual(`<ACI:${testingUuid}>`, `${aci}`);
|
||||
|
||||
{
|
||||
const aciServiceId = SignalClient.ServiceId.parseFromServiceIdString(
|
||||
aci.getServiceIdString()
|
||||
);
|
||||
assert.instanceOf(aciServiceId, SignalClient.Aci);
|
||||
assert.deepEqual(aci, aciServiceId);
|
||||
|
||||
const _: SignalClient.Aci = SignalClient.Aci.parseFromServiceIdString(
|
||||
aci.getServiceIdString()
|
||||
);
|
||||
}
|
||||
|
||||
{
|
||||
const aciServiceId = SignalClient.ServiceId.parseFromServiceIdBinary(
|
||||
aci.getServiceIdBinary()
|
||||
);
|
||||
assert.instanceOf(aciServiceId, SignalClient.Aci);
|
||||
assert.deepEqual(aci, aciServiceId);
|
||||
|
||||
const _: SignalClient.Aci = SignalClient.Aci.parseFromServiceIdBinary(
|
||||
aci.getServiceIdBinary()
|
||||
);
|
||||
}
|
||||
});
|
||||
it('handles PNIs', () => {
|
||||
const pni = SignalClient.Pni.fromUuid(testingUuid);
|
||||
assert.instanceOf(pni, SignalClient.Pni);
|
||||
assert.isTrue(
|
||||
pni.isEqual(SignalClient.Pni.fromUuidBytes(uuid.parse(testingUuid)))
|
||||
);
|
||||
assert.isFalse(pni.isEqual(SignalClient.Aci.fromUuid(testingUuid)));
|
||||
|
||||
assert.deepEqual(testingUuid, pni.getRawUuid());
|
||||
assert.deepEqual(uuid.parse(testingUuid), pni.getRawUuidBytes());
|
||||
assert.deepEqual(`PNI:${testingUuid}`, pni.getServiceIdString());
|
||||
assert.deepEqual(
|
||||
Buffer.concat([Buffer.of(0x01), pni.getRawUuidBytes()]),
|
||||
pni.getServiceIdBinary()
|
||||
);
|
||||
assert.deepEqual(`<PNI:${testingUuid}>`, `${pni}`);
|
||||
|
||||
{
|
||||
const pniServiceId = SignalClient.ServiceId.parseFromServiceIdString(
|
||||
pni.getServiceIdString()
|
||||
);
|
||||
assert.instanceOf(pniServiceId, SignalClient.Pni);
|
||||
assert.deepEqual(pni, pniServiceId);
|
||||
|
||||
const _: SignalClient.Pni = SignalClient.Pni.parseFromServiceIdString(
|
||||
pni.getServiceIdString()
|
||||
);
|
||||
}
|
||||
|
||||
{
|
||||
const pniServiceId = SignalClient.ServiceId.parseFromServiceIdBinary(
|
||||
pni.getServiceIdBinary()
|
||||
);
|
||||
assert.instanceOf(pniServiceId, SignalClient.Pni);
|
||||
assert.deepEqual(pni, pniServiceId);
|
||||
|
||||
const _: SignalClient.Pni = SignalClient.Pni.parseFromServiceIdBinary(
|
||||
pni.getServiceIdBinary()
|
||||
);
|
||||
}
|
||||
});
|
||||
it('accepts the null UUID', () => {
|
||||
SignalClient.ServiceId.parseFromServiceIdString(uuid.NIL);
|
||||
});
|
||||
it('rejects invalid values', () => {
|
||||
assert.throws(() =>
|
||||
SignalClient.ServiceId.parseFromServiceIdBinary(Buffer.of())
|
||||
);
|
||||
assert.throws(() => SignalClient.ServiceId.parseFromServiceIdString(''));
|
||||
});
|
||||
it('follows the standard ordering', () => {
|
||||
const original = [
|
||||
SignalClient.Aci.fromUuid(uuid.NIL),
|
||||
SignalClient.Aci.fromUuid(testingUuid),
|
||||
SignalClient.Pni.fromUuid(uuid.NIL),
|
||||
SignalClient.Pni.fromUuid(testingUuid),
|
||||
];
|
||||
const ids = util.shuffled(original);
|
||||
ids.sort(SignalClient.ServiceId.comparator);
|
||||
assert.deepEqual(ids, original);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user