|
@@ -31,6 +31,32 @@ TEST(Settings, EmbeddingTimeoutRoundTrip) {
|
|
|
EXPECT_EQ(s2.embeddingReadTimeoutSec, 120u);
|
|
EXPECT_EQ(s2.embeddingReadTimeoutSec, 120u);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+TEST(Settings, CaptchaDefaults) {
|
|
|
|
|
+ Settings s = Settings::fromJson(nlohmann::json::object());
|
|
|
|
|
+ EXPECT_EQ(s.captchaProvider, "");
|
|
|
|
|
+ EXPECT_EQ(s.captchaSecret, "");
|
|
|
|
|
+ EXPECT_EQ(s.captchaVerifyUrl, "");
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+TEST(Settings, CaptchaProviderAndUrlRoundTrip) {
|
|
|
|
|
+ nlohmann::json j{{"captcha_provider", "turnstile"},
|
|
|
|
|
+ {"captcha_verify_url", "https://challenges.cloudflare.com/turnstile/v0/siteverify"}};
|
|
|
|
|
+ Settings s = Settings::fromJson(j);
|
|
|
|
|
+ EXPECT_EQ(s.captchaProvider, "turnstile");
|
|
|
|
|
+ EXPECT_EQ(s.captchaVerifyUrl, "https://challenges.cloudflare.com/turnstile/v0/siteverify");
|
|
|
|
|
+ Settings s2 = Settings::fromJson(s.toJson());
|
|
|
|
|
+ EXPECT_EQ(s2.captchaProvider, "turnstile");
|
|
|
|
|
+ EXPECT_EQ(s2.captchaVerifyUrl, "https://challenges.cloudflare.com/turnstile/v0/siteverify");
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+TEST(Settings, CaptchaSecretRoundTrip) {
|
|
|
|
|
+ nlohmann::json j{{"captcha_secret", "mysecret"}};
|
|
|
|
|
+ Settings s = Settings::fromJson(j);
|
|
|
|
|
+ EXPECT_EQ(s.captchaSecret, "mysecret");
|
|
|
|
|
+ Settings s2 = Settings::fromJson(s.toJson());
|
|
|
|
|
+ EXPECT_EQ(s2.captchaSecret, "mysecret");
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
TEST(ApiKey, JsonRoundTripAndPublicMasks) {
|
|
TEST(ApiKey, JsonRoundTripAndPublicMasks) {
|
|
|
ApiKey k = ApiKey::fromJson(nlohmann::json::parse(
|
|
ApiKey k = ApiKey::fromJson(nlohmann::json::parse(
|
|
|
R"({"key":"abcdef0123456789","label":"n8n","projects":["p1","p2"],"admin":false,"created_at":7})"));
|
|
R"({"key":"abcdef0123456789","label":"n8n","projects":["p1","p2"],"admin":false,"created_at":7})"));
|