fix(server): правки сервера, ника и комнат попадают в аудит

§11.5 требует, чтобы каждое мутирующее действие писалось в журнал сервера
с `actor.instance_admin=true`, но у PATCH /guilds/{id},
PATCH /guilds/{id}/members/{user_id} и у ручек комнат вызова `recordAudit`
не было: переименование сервера, смена ника, тайм-аут и создание, правка и
удаление комнаты не оставляли следа ни у владельца, ни у инстанс-админа.

- guild.update, member.update, member.timeout (в причине — срок тайм-аута),
  channel.create, channel.update, channel.delete;
- Go-тест TestAuditCoversGuildMemberAndChannelChanges проверяет записи на
  чужом сервере и флаг actor_instance_admin, а также что действие владельца
  этим флагом не помечается;
- e2e 19b в instance-admin.spec.ts включён вместо test.fixme с диагностикой.

Проверки: go test -tags sqlite_fts5 -race -count=1 ./internal/... — ok;
make go-lint — 0 issues; живьём на стенде тест 19b проходит.
This commit is contained in:
2026-09-26 14:15:49 +03:00
parent 5a419112e0
commit 73dd51b121
3 changed files with 169 additions and 7 deletions
+6 -7
View File
@@ -671,14 +671,13 @@ test.describe('инстанс-админ: чужой сервер (§11.5, §7.1
});
/**
* Известный пробел §11.5: «каждое действие пишется в аудит» выполняется не для
* всех мутаций. Переименование сервера, смена ника участника и создание,
* правка и удаление комнаты не пишут запись в аудит ни администратору, ни
* владельцу (в `internal/server/api_guilds.go` у этих ручек нет `recordAudit`).
* Тест оставлен как fixme с точной диагностикой: когда записи появятся, его
* достаточно раскомментировать.
* Пробел §11.5 был закрыт правкой сервера: «каждое действие пишется в аудит»
* раньше не выполнялось для переименования сервера, смены ника участника и
* создания/правки/удаления комнаты — у этих ручек не было `recordAudit`
* (`internal/server/api_guilds.go`). Теперь записи есть у владельца и у
* инстанс-админа (с `actor_instance_admin=true`).
*/
test.fixme('19b. Аудит: переименование сервера, ник и комнаты тоже попадают в журнал', async ({
test('19b. Аудит: переименование сервера, ник и комнаты тоже попадают в журнал', async ({
playwright,
}) => {
const ownerApi = await apiAs(playwright, owner.state);