Cockatrice/tests
SwitchOCE 7709184ecc
[Server] Let users fetch their own private chat history (#7506)
* [Server] Let users fetch their own private chat history

Players lose their private conversations on reconnect or on another
device. Servatrice can already log private messages, but only
moderators can read the logs.

Add Command_GetPrivateChatHistory / Response_PrivateChatHistory so a
registered user can page through their own logged conversation with one
other user. Operators opt in with logging/allow_user_chat_history
(default off, and log_user_msg_chat must be on). The caller is matched
by account id so reused guest or deleted-account names can't read older
messages; only time, sender name and text are returned. Pages hold
1..200 messages and never split a second, since log_time has 1-second
resolution.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* [Server] Harden private chat history identity matching

Match both participants by account id and name so a federated user's remote id cannot collide with a local account, and stop storing foreign ids in the local chat log. Extract the paging assembly into a pure helper and cover the whole-second boundary rules with gtests.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Lukas Brübach <44814898+BruebachL@users.noreply.github.com>
2026-11-09 13:21:43 +01:00
..
card_zone_algorithms [Refactor] Move game logic into libcockatrice_game (#7437) 2026-10-31 18:44:15 +01:00
carddatabase [Card] Add Scryfall Tagger tag search and filtering (#7337) 2026-11-08 20:57:45 +01:00
deck_list_model Fix deck export and mana group ordering (#7729) 2026-11-04 15:43:38 +01:00
deck_list_zones Fix deck export and mana group ordering (#7729) 2026-11-04 15:43:38 +01:00
game [Client] Preview token edits live and preserve custom drafts (#7737) 2026-11-09 12:59:53 +01:00
icon_assets [Icons] Add an icon asset ratchet test (#7596) 2026-11-04 18:39:42 +01:00
loading_from_clipboard Support tab-separated deck imports (#4222) (#7267) 2026-10-11 21:19:10 +02:00
model_contract [Tests] Use QtTest for model contracts and signal spies (#7630) 2026-11-02 07:27:43 +01:00
movecard_tests [Server/Client/Protocol] Shuffle or reorder player seats before a game starts (#7398) 2026-11-04 15:44:50 +01:00
oracle [Card] Add Scryfall Tagger tag search and filtering (#7337) 2026-11-08 20:57:45 +01:00
picture_loader_benchmark [Network] Add a configured QNetworkAccessManager factory (#7628) 2026-10-25 00:33:43 +02:00
settings [Crash] Add lifecycle breadcrumbs for unattributable native crashes (#7813) 2026-11-08 23:06:21 +01:00
support [DlgCreateGame] Heap-allocate create game dialog to prevent crash on parent deletion (#7777) 2026-11-05 07:49:20 +01:00
theme_migration [Game] Add hover zoom and a tabbed card panel to the board (#7700) 2026-11-08 21:51:31 +01:00
card_art_crop_test.cpp [Banner] Keep horizontal user banner crops inside the artwork (#7742) 2026-11-04 17:08:54 +01:00
card_update_progress_test.cpp [Client] Improve card database update visibility (#7458) 2026-10-09 11:07:48 +02:00
clamped_arithmetic_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
client_login_status_test.cpp [CI] Pin used GH Actions (#7716) 2026-11-08 15:45:54 +01:00
CMakeLists.txt [Server] Let users fetch their own private chat history (#7506) 2026-11-09 13:21:43 +01:00
crash_reporter_test.cpp [Crash] Add lifecycle breadcrumbs for unattributable native crashes (#7813) 2026-11-08 23:06:21 +01:00
create_game_form_widget_test.cpp [Refactor] Split CreateGameFormWidget out of DlgCreateGame (#7801) 2026-11-08 16:22:31 +01:00
deck_hash_performance_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
deck_state_manager_test.cpp [Client] Make DeckStateManager::decrementCard remove tokens from the token zone if the token is not in the given zone (#7588) 2026-11-03 10:37:17 +01:00
expression_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
font_config_test.cpp [Fonts] Add AppFont roles and FontConfig fonts.toml round-trip (#7534) 2026-11-04 07:57:52 +01:00
forwarded_address_test.cpp [Server] Parse the rightmost address from forwarded header lists (#7586) 2026-10-18 16:53:55 -04:00
game_creation_options_test.cpp [Lobby] Add instant quick host to the game room (#7802) 2026-11-08 22:12:29 +01:00
holder_line_test.cpp [CrashReporting] Name the files and processes behind a failed installer purge (#7590) 2026-10-24 00:46:54 +02:00
image_redirect_chain_test.cpp [PictureLoader] Improve image negotiation, cache recovery and redirects (#7703) 2026-11-08 19:02:07 +01:00
image_request_queue_test.cpp [PictureLoader] Improve image negotiation, cache recovery and redirects (#7703) 2026-11-08 19:02:07 +01:00
installer_close_server_test.cpp [Installer] Graceful close and a way out of a stuck update (#7687) 2026-10-31 15:32:59 +01:00
lag_monitor_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
latency_tracker_test.cpp [CI] Update Linux Dockerfiles (#6894) 2026-11-08 09:01:56 +01:00
loader_local_matching_test.cpp [CI] Update Linux Dockerfiles (#6894) 2026-11-08 09:01:56 +01:00
local_client_lifetime_test.cpp [Client] Fix crash when local game commands are sent after shutdown (#7714) 2026-11-02 13:28:23 +01:00
metrics_registry_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
moxfield_signature_spells_test.cpp Import Moxfield signature spells into the deck [skip ci] (#7751) 2026-11-03 10:40:28 +01:00
password_hash_test.cpp [Utility] Budget scrypt's XY array in the derivation memory limit (#7712) 2026-11-02 07:29:15 +01:00
payload_paths_test.cpp [Installer] Name only the payload programs installed in the directory (#7684) 2026-10-30 13:16:50 +01:00
playmat_resolver_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
private_chat_paging_test.cpp [Server] Let users fetch their own private chat history (#7506) 2026-11-09 13:21:43 +01:00
random_reveal_test.cpp [Game] Reveal multiple distinct random hand cards to a recipient (#7753) 2026-11-08 16:41:14 +01:00
rate_limiter_test.cpp [Server] Inform client of login/registration rate limit timeout (#7468) 2026-10-16 05:47:43 +02:00
report_categories_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_card_counter_test.cpp [Build] Let AUTOMOC process library headers (#7638) 2026-10-31 18:49:05 +01:00
server_counter_test.cpp [CI] Update Linux Dockerfiles (#6894) 2026-11-08 09:01:56 +01:00
server_developer_role_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_dump_zone_test.cpp [CI] Pin used GH Actions (#7716) 2026-11-08 15:45:54 +01:00
server_forced_password_change_test.cpp [Server/Client] Enforce and complete the forced password change at login (#7680) 2026-11-02 07:01:29 +01:00
server_game_join_test.cpp [ServerGame] Refactor out spectator/judge bools into RoleInfo (#7761) 2026-11-02 00:37:05 -07:00
server_logger_test.cpp [CardDB] Break the CardInfo <-> CardSet cycle on reload (#7645) 2026-10-31 19:37:15 +01:00
server_moderator_role_test.cpp [Report] Add report reopen action for closed reports (#7442) 2026-10-11 15:28:45 +02:00
server_rate_limiter_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
server_room_channels_test.cpp [Servatrice] Log room channel messages in audit log (#7479) 2026-10-16 22:46:39 +02:00
single_instance_manager_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
spoiler_file_test.cpp [DlgCreateGame] Heap-allocate create game dialog to prevent crash on parent deletion (#7777) 2026-11-05 07:49:20 +01:00
svg_recolor_test.cpp [Icons] Tint semantic glyphs and add badge and sticker treatments (#7775) 2026-11-08 19:09:01 +01:00
test_age_formatting.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00
translation_loader_test.cpp [Translation] Name languages without reading the translation files (#7662) 2026-10-26 02:39:26 +01:00
translation_loader_test.ts [Translations] Load Qt's own translations and build ours with the binary (#7384) 2026-10-03 15:04:30 +02:00
trusted_sources_test.cpp [Servatrice] Match trusted_sources by address, not substring (#7582) 2026-10-18 16:50:04 -04:00
user_data_backup_test.cpp [Installer][Client] Back up user data before old uninstallers can delete it (#7503) 2026-10-16 22:05:42 +02:00
user_games_model_test.cpp Fix user card games for offline users and stale requests (#7738) 2026-11-04 05:29:51 +01:00
warning_categories_test.cpp [Tooling] Apply include-what-you-use across the tree (#7396) 2026-10-08 11:13:50 +02:00