mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
more integration tests
This commit is contained in:
parent
4b5f66d497
commit
decebc25c7
192 changed files with 3090 additions and 1657 deletions
66
webclient/integration/src/admin.spec.ts
Normal file
66
webclient/integration/src/admin.spec.ts
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
// Admin command pipeline smoke test — validates that sendAdminCommand
|
||||
// encodes, correlates, and persists correctly end-to-end.
|
||||
|
||||
import { create } from '@bufbuild/protobuf';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { Data } from '@app/types';
|
||||
import { store } from '@app/store';
|
||||
import { AdminCommands } from '@app/websocket';
|
||||
|
||||
import { connectAndLogin } from './helpers/setup';
|
||||
import {
|
||||
buildResponse,
|
||||
buildResponseMessage,
|
||||
buildSessionEventMessage,
|
||||
deliverMessage,
|
||||
} from './helpers/protobuf-builders';
|
||||
import { findLastAdminCommand } from './helpers/command-capture';
|
||||
|
||||
describe('admin commands', () => {
|
||||
it('adjustMod modifies the user level bitflags on success', () => {
|
||||
connectAndLogin();
|
||||
|
||||
// Add bob to the user list so the reducer has a target
|
||||
deliverMessage(buildSessionEventMessage(
|
||||
Data.Event_UserJoined_ext,
|
||||
create(Data.Event_UserJoinedSchema, {
|
||||
userInfo: create(Data.ServerInfo_UserSchema, {
|
||||
name: 'bob',
|
||||
userLevel: Data.ServerInfo_User_UserLevelFlag.IsRegistered,
|
||||
}),
|
||||
})
|
||||
));
|
||||
expect(store.getState().server.users.bob).toBeDefined();
|
||||
|
||||
AdminCommands.adjustMod('bob', true, false);
|
||||
|
||||
const { cmdId, value } = findLastAdminCommand(Data.Command_AdjustMod_ext);
|
||||
expect(value.userName).toBe('bob');
|
||||
expect(value.shouldBeMod).toBe(true);
|
||||
expect(value.shouldBeJudge).toBe(false);
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
|
||||
const bobLevel = store.getState().server.users.bob.userLevel;
|
||||
expect(bobLevel & Data.ServerInfo_User_UserLevelFlag.IsModerator).toBeTruthy();
|
||||
});
|
||||
|
||||
it('shutdownServer sends command and dispatches on success', () => {
|
||||
connectAndLogin();
|
||||
|
||||
AdminCommands.shutdownServer('Scheduled maintenance', 10);
|
||||
|
||||
const { cmdId, value } = findLastAdminCommand(Data.Command_ShutdownServer_ext);
|
||||
expect(value.reason).toBe('Scheduled maintenance');
|
||||
expect(value.minutes).toBe(10);
|
||||
|
||||
deliverMessage(buildResponseMessage(buildResponse({
|
||||
cmdId,
|
||||
responseCode: Data.Response_ResponseCode.RespOk,
|
||||
})));
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue