#include "validation.h" #include using namespace radiantwave::validation; TEST(ValidationTest, ValidEmails) { EXPECT_TRUE(isValidEmail("user@example.com")); EXPECT_TRUE(isValidEmail("first.last@example.co.uk")); EXPECT_TRUE(isValidEmail("user+tag@example.com")); EXPECT_TRUE(isValidEmail("UPPER.CASE@EXAMPLE.ORG")); EXPECT_TRUE(isValidEmail("a@b.co")); } TEST(ValidationTest, InvalidEmails) { EXPECT_FALSE(isValidEmail("")); EXPECT_FALSE(isValidEmail("ab")); EXPECT_FALSE(isValidEmail("user@")); EXPECT_FALSE(isValidEmail("@example.com")); EXPECT_FALSE(isValidEmail("user@@example.com")); EXPECT_FALSE(isValidEmail("user@example")); // no dot in domain EXPECT_FALSE(isValidEmail("user name@example.com")); // whitespace EXPECT_FALSE(isValidEmail("user@.example.com")); // empty label EXPECT_FALSE(isValidEmail("user@example..com")); // empty label EXPECT_FALSE(isValidEmail(".user@example.com")); // leading dot in local EXPECT_FALSE(isValidEmail("user.@example.com")); // trailing dot in local EXPECT_FALSE(isValidEmail(std::string(255, 'a') + "@example.com")); } TEST(ValidationTest, SanitizeLicenseKey) { EXPECT_EQ(sanitizeLicenseKey(""), ""); EXPECT_EQ(sanitizeLicenseKey("abcd-efgh-1234-5678"), "ABCDEFGH12345678"); EXPECT_EQ(sanitizeLicenseKey("ab cd ef gh ij kl"), "ABCDEFGHIJKL"); // whitespace stripped EXPECT_EQ(sanitizeLicenseKey("AbC1!!dEf"), "ABC1DEF"); // symbols stripped EXPECT_EQ(sanitizeLicenseKey("12345678901234567890"), "1234567890123456"); // capped at 16 } TEST(ValidationTest, FormatLicenseKey) { EXPECT_EQ(formatLicenseKey(""), ""); EXPECT_EQ(formatLicenseKey("ABCD"), "ABCD"); EXPECT_EQ(formatLicenseKey("ABCDEFGH"), "ABCD-EFGH"); EXPECT_EQ(formatLicenseKey("ABCDEFGH12345678"), "ABCD-EFGH-1234-5678"); // Grouping applies to whatever is passed; length capping is the // sanitizer's responsibility. EXPECT_EQ(formatLicenseKey("ABCDEFGH123456789"), "ABCD-EFGH-1234-5678-9"); }