From 0835064375ceb5deaf101b2d9b0549988a2de256 Mon Sep 17 00:00:00 2001 From: pajlada Date: Sat, 8 Mar 2025 12:13:58 +0100 Subject: [PATCH] fix: enable Twitch EventSub by default (#6040) this should let us get some more eyes on the implementation and make sure it doesn't misbehave --- CHANGELOG.md | 2 +- src/singletons/Settings.hpp | 2 +- tests/src/TwitchPubSubClient.cpp | 57 ++++++++++++++++++++++++++------ 3 files changed, 49 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c227323..5b04962d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,7 +38,7 @@ - Bugfix: Fixed color input thinking blue is also red. (#5982) - Bugfix: Fixed an issue where commands would sometimes reset if Chatterino was improperly shut down. (#6011) - Dev: Subscriptions to PubSub channel points redemption topics now use no auth token, making it continue to work during PubSub shutdown. (#5947) -- Dev: Add initial experimental EventSub support. (#5837, #5895, #5897, #5904, #5910, #5903, #5915, #5916, #5930, #5935, #5932, #5943, #5952, #5953, #5968, #5973, #5974, #5980, #5981, #5985, #5990, #5992, #5993, #5996, #5995, #6000, #6001, #6002, #6003, #6005, #6007, #6010, #6008, #6012, #6013, #6015, #6017, #6027, #6028, #6035, #6036) +- Dev: Add initial experimental EventSub support. (#5837, #5895, #5897, #5904, #5910, #5903, #5915, #5916, #5930, #5935, #5932, #5943, #5952, #5953, #5968, #5973, #5974, #5980, #5981, #5985, #5990, #5992, #5993, #5996, #5995, #6000, #6001, #6002, #6003, #6005, #6007, #6010, #6008, #6012, #6013, #6015, #6017, #6027, #6028, #6035, #6036, #6040) - Dev: Remove unneeded platform specifier for toasts. (#5914) - Dev: Highlight checks now use non-capturing groups for the boundaries. (#5784) - Dev: Removed unused PubSub whisper code. (#5898) diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index 9506b9eb..6484b872 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -659,7 +659,7 @@ public: }; BoolSetting enableExperimentalEventSub = { "/eventsub/enableExperimental", - false, + true, }; QStringSetting additionalExtensionIDs{"/misc/additionalExtensionIDs", ""}; diff --git a/tests/src/TwitchPubSubClient.cpp b/tests/src/TwitchPubSubClient.cpp index 3ca90943..ab21e285 100644 --- a/tests/src/TwitchPubSubClient.cpp +++ b/tests/src/TwitchPubSubClient.cpp @@ -1,3 +1,4 @@ +#include "mocks/BaseApplication.hpp" #include "providers/twitch/PubSubActions.hpp" #include "providers/twitch/PubSubClient.hpp" #include "providers/twitch/PubSubManager.hpp" @@ -73,6 +74,14 @@ public: } }; +const QString TEST_SETTINGS = R"( +{ + "eventsub": { + "enableExperimental": false + } +} +)"; + class FTest : public PubSub { public: @@ -86,9 +95,28 @@ public: } }; +class MockApplication : public mock::BaseApplication +{ +public: + MockApplication(const char *path, std::chrono::seconds pingInterval, + QString token = "token") + : mock::BaseApplication(TEST_SETTINGS) + , pubSub(path, pingInterval, token) + { + } + + PubSub *getTwitchPubSub() override + { + return &this->pubSub; + } + + FTest pubSub; +}; + TEST(TwitchPubSubClient, ServerRespondsToPings) { - FTest pubSub("", 1s); + MockApplication a("", 1s); + auto &pubSub = a.pubSub; pubSub.start(); @@ -127,7 +155,8 @@ TEST(TwitchPubSubClient, ServerRespondsToPings) TEST(TwitchPubSubClient, ServerDoesntRespondToPings) { - FTest pubSub("/dont-respond-to-ping", 1s); + MockApplication a("/dont-respond-to-ping", 1s); + auto &pubSub = a.pubSub; pubSub.start(); pubSub.listenToChannelModerationActions("123456"); @@ -156,7 +185,8 @@ TEST(TwitchPubSubClient, ServerDoesntRespondToPings) TEST(TwitchPubSubClient, DisconnectedAfter1s) { - FTest pubSub("/disconnect-client-after-1s", 10s); + MockApplication a("/disconnect-client-after-1s", 10s); + auto &pubSub = a.pubSub; pubSub.start(); @@ -191,7 +221,8 @@ TEST(TwitchPubSubClient, DisconnectedAfter1s) TEST(TwitchPubSubClient, ExceedTopicLimit) { - FTest pubSub("", 1s); + MockApplication a("", 1s); + auto &pubSub = a.pubSub; pubSub.start(); @@ -231,7 +262,8 @@ TEST(TwitchPubSubClient, ExceedTopicLimit) TEST(TwitchPubSubClient, ExceedTopicLimitSingleStep) { - FTest pubSub("", 1s); + MockApplication a("", 1s); + auto &pubSub = a.pubSub; pubSub.start(); @@ -260,7 +292,8 @@ TEST(TwitchPubSubClient, ExceedTopicLimitSingleStep) TEST(TwitchPubSubClient, ModeratorActionsUserBanned) { - FTest pubSub("/moderator-actions-user-banned", 1s); + MockApplication a("/moderator-actions-user-banned", 1s); + auto &pubSub = a.pubSub; pubSub.start(); @@ -303,7 +336,8 @@ TEST(TwitchPubSubClient, ModeratorActionsUserBanned) TEST(TwitchPubSubClient, MissingToken) { // The token that's required is "xD" - FTest pubSub("/authentication-required", 1s, ""); + MockApplication a("/authentication-required", 1s, ""); + auto &pubSub = a.pubSub; pubSub.start(); @@ -328,7 +362,8 @@ TEST(TwitchPubSubClient, MissingToken) TEST(TwitchPubSubClient, WrongToken) { // The token that's required is "xD" - FTest pubSub("/authentication-required", 1s); + MockApplication a("/authentication-required", 1s); + auto &pubSub = a.pubSub; pubSub.start(); @@ -353,7 +388,8 @@ TEST(TwitchPubSubClient, WrongToken) TEST(TwitchPubSubClient, CorrectToken) { // The token that's required is "xD" - FTest pubSub("/authentication-required", 1s, "xD"); + MockApplication a("/authentication-required", 1s, "xD"); + auto &pubSub = a.pubSub; pubSub.start(); @@ -377,7 +413,8 @@ TEST(TwitchPubSubClient, CorrectToken) TEST(TwitchPubSubClient, AutoModMessageHeld) { - FTest pubSub("/automod-held", 1s); + MockApplication a("/automod-held", 1s); + auto &pubSub = a.pubSub; pubSub.start();