mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
refactor login flow and hooks, address autologin issues
This commit is contained in:
parent
dcd6dc00f4
commit
bd2382c94e
43 changed files with 2179 additions and 484 deletions
104
webclient/integration/src/websocket/moderator.spec.ts
Normal file
104
webclient/integration/src/websocket/moderator.spec.ts
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
// Moderator command pipeline smoke tests — validates that sendModeratorCommand
|
||||
// encodes, correlates, and persists correctly end-to-end. One test per
|
||||
// distinct response pattern (simple vs. extension-payload).
|
||||
|
||||
import { create } from '@bufbuild/protobuf';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { Data } from '@app/types';
|
||||
import { store } from '@app/store';
|
||||
import { ModeratorCommands } from '@app/websocket';
|
||||
|
||||
import { connectAndLogin } from '../helpers/setup';
|
||||
import {
|
||||
buildResponse,
|
||||
buildResponseMessage,
|
||||
deliverMessage,
|
||||
} from '../helpers/protobuf-builders';
|
||||
import { findLastModeratorCommand } from '../helpers/command-capture';
|
||||
|
||||
describe('moderator commands', () => {
|
||||
it('getBanHistory populates server.banHistory on success', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.getBanHistory('baduser');
|
||||
|
||||
const { cmdId, value } = findLastModeratorCommand(Data.Command_GetBanHistory_ext);
|
||||
expect(value.userName).toBe('baduser');
|
||||
|
||||
const banEntry = create(Data.ServerInfo_BanSchema, {
|
||||
adminId: 'admin1',
|
||||
adminName: 'Admin',
|
||||
banTime: '2026-01-01',
|
||||
banLength: '60',
|
||||
visibleReason: 'spamming',
|
||||
});
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
ext: Data.Response_BanHistory_ext,
|
||||
value: create(Data.Response_BanHistorySchema, { banList: [banEntry] }),
|
||||
})));
|
||||
|
||||
const history = store.getState().server.banHistory.baduser;
|
||||
expect(history).toHaveLength(1);
|
||||
expect(history[0].visibleReason).toBe('spamming');
|
||||
});
|
||||
|
||||
it('viewLogHistory populates server.logs on success', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.viewLogHistory({ dateRange: 30 });
|
||||
|
||||
const { cmdId } = findLastModeratorCommand(Data.Command_ViewLogHistory_ext);
|
||||
|
||||
const logMsg = create(Data.ServerInfo_ChatMessageSchema, {
|
||||
senderName: 'alice',
|
||||
message: 'test message',
|
||||
});
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
ext: Data.Response_ViewLogHistory_ext,
|
||||
value: create(Data.Response_ViewLogHistorySchema, { logMessage: [logMsg] }),
|
||||
})));
|
||||
|
||||
const logs = store.getState().server.logs;
|
||||
expect(Object.keys(logs).length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it('warnUser sends command and updates state on success', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.warnUser('troublemaker', 'spamming chat');
|
||||
|
||||
const { cmdId, value } = findLastModeratorCommand(Data.Command_WarnUser_ext);
|
||||
expect(value.userName).toBe('troublemaker');
|
||||
expect(value.reason).toBe('spamming chat');
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
|
||||
expect(store.getState().server.warnUser).toBe('troublemaker');
|
||||
});
|
||||
|
||||
it('banFromServer sends command and updates state on success', () => {
|
||||
connectAndLogin();
|
||||
|
||||
ModeratorCommands.banFromServer(60, 'baduser', undefined, 'repeated offenses', 'rule violation');
|
||||
|
||||
const { cmdId, value } = findLastModeratorCommand(Data.Command_BanFromServer_ext);
|
||||
expect(value.userName).toBe('baduser');
|
||||
expect(value.minutes).toBe(60);
|
||||
expect(value.visibleReason).toBe('rule violation');
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
|
||||
expect(store.getState().server.banUser).toBe('baduser');
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue