test: fix most e2e tests

This commit is contained in:
2026-06-11 10:21:28 +02:00
parent 1671a04f03
commit b630bacdc6
9 changed files with 230 additions and 36 deletions

View File

@@ -0,0 +1,71 @@
import { SignalingTransportHandler, ResolvedSignalCredential } from './signaling-transport-handler';
import { SIGNALING_TYPE_IDENTIFY } from '../realtime.constants';
describe('SignalingTransportHandler identify', () => {
const SIGNAL_URL = 'ws://signal.example.com:3001';
function createHandler(resolved: ResolvedSignalCredential | null) {
const sentMessages: Record<string, unknown>[] = [];
const manager = {
isSocketOpen: () => true,
sendRawMessage: (message: Record<string, unknown>) => {
sentMessages.push(message);
}
};
const coordinator = {
getConnectedSignalingManagers: () => [{ signalUrl: SIGNAL_URL, manager }],
getSignalingManager: (signalUrl: string) => (signalUrl === SIGNAL_URL ? manager : null)
} as unknown as ConstructorParameters<typeof SignalingTransportHandler>[0]['signalingCoordinator'];
const handler = new SignalingTransportHandler<unknown>({
signalingCoordinator: coordinator,
logger: { warn: () => undefined, error: () => undefined, info: () => undefined } as never,
getLocalPeerId: () => 'local-peer',
resolveCredential: () => resolved,
getHomeCredential: () => resolved,
getClientInstanceId: () => 'device-a'
});
return { handler, sentMessages };
}
it('uses the freshly supplied display name over the stale stored credential', () => {
const { handler, sentMessages } = createHandler({
userId: 'user-1',
token: 'token-1',
displayName: 'Alice'
});
handler.identify('user-1', 'Alice One', undefined, {
description: 'New bio',
profileUpdatedAt: 123456
});
const identifyMessages = sentMessages.filter((entry) => entry['type'] === SIGNALING_TYPE_IDENTIFY);
expect(identifyMessages.length).toBeGreaterThan(0);
for (const message of identifyMessages) {
expect(message['displayName']).toBe('Alice One');
expect(message['profileUpdatedAt']).toBe(123456);
expect(message['description']).toBe('New bio');
}
});
it('falls back to the stored credential display name when none is supplied', () => {
const { handler, sentMessages } = createHandler({
userId: 'user-1',
token: 'token-1',
displayName: 'Alice'
});
handler.identify('user-1', ' ', undefined);
const identifyMessages = sentMessages.filter((entry) => entry['type'] === SIGNALING_TYPE_IDENTIFY);
expect(identifyMessages.length).toBeGreaterThan(0);
for (const message of identifyMessages) {
expect(message['displayName']).toBe('Alice');
}
});
});

View File

@@ -226,7 +226,7 @@ export class SignalingTransportHandler<TMessage> {
signalUrl?: string,
profile?: Pick<IdentifyCredentials, 'description' | 'profileUpdatedAt' | 'homeSignalServerUrl'>
): void {
const normalizedDisplayName = displayName.trim() || DEFAULT_DISPLAY_NAME;
const trimmedDisplayName = displayName.trim();
const normalizedDescription = typeof profile?.description === 'string'
? (profile.description.trim() || undefined)
: undefined;
@@ -243,7 +243,7 @@ export class SignalingTransportHandler<TMessage> {
if (signalUrl) {
this.identifyOnSignalUrl(signalUrl, {
fallbackOderId: oderId,
displayName: normalizedDisplayName,
displayName: trimmedDisplayName,
description: normalizedDescription,
profileUpdatedAt: normalizedProfileUpdatedAt,
homeSignalServerUrl: normalizedHomeSignalServerUrl,
@@ -262,7 +262,7 @@ export class SignalingTransportHandler<TMessage> {
for (const { signalUrl: managerSignalUrl, manager } of connectedManagers) {
const credentials = this.identifyOnSignalUrl(managerSignalUrl, {
fallbackOderId: oderId,
displayName: normalizedDisplayName,
displayName: trimmedDisplayName,
description: normalizedDescription,
profileUpdatedAt: normalizedProfileUpdatedAt,
homeSignalServerUrl: normalizedHomeSignalServerUrl,
@@ -312,7 +312,7 @@ export class SignalingTransportHandler<TMessage> {
const credentials: IdentifyCredentials = {
oderId: resolved.userId,
token: resolved.token,
displayName: resolved.displayName || params.displayName,
displayName: params.displayName || resolved.displayName || DEFAULT_DISPLAY_NAME,
description: params.description,
profileUpdatedAt: params.profileUpdatedAt,
homeSignalServerUrl: params.homeSignalServerUrl ?? resolved.homeSignalServerUrl,