Files
radiantwave/tests/test_validation.cpp
T
2026-08-07 14:51:41 -05:00

46 lines
2.0 KiB
C++

#include "validation.h"
#include <gtest/gtest.h>
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");
}