Skip to content

Commit 9d2c480

Browse files
add test cases for these methods
1 parent ca90eaa commit 9d2c480

File tree

2 files changed

+178
-2
lines changed

2 files changed

+178
-2
lines changed

code/tests/cases/test_input.c

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,82 @@ FOSSIL_TEST(c_test_io_clear_keybindings_removes_all) {
266266
ASSUME_ITS_EQUAL_I32(0, (int)count);
267267
}
268268

269+
FOSSIL_TEST(c_test_io_validate_is_weak_password_bad) {
270+
const char *password = "password123";
271+
const char *username = "user";
272+
const char *email = "[email protected]";
273+
int result = fossil_io_validate_is_weak_password(password, username, email);
274+
ASSUME_ITS_TRUE(result);
275+
}
276+
277+
FOSSIL_TEST(c_test_io_validate_is_weak_password_good) {
278+
const char *password = "S3cure!Passw0rd";
279+
const char *username = "user";
280+
const char *email = "[email protected]";
281+
int result = fossil_io_validate_is_weak_password(password, username, email);
282+
ASSUME_ITS_FALSE(result);
283+
}
284+
285+
FOSSIL_TEST(c_test_io_validate_is_suspicious_bot_true) {
286+
const char *ua = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)";
287+
int result = fossil_io_validate_is_suspicious_bot(ua);
288+
ASSUME_ITS_TRUE(result);
289+
}
290+
291+
FOSSIL_TEST(c_test_io_validate_is_suspicious_bot_false) {
292+
const char *ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64)";
293+
int result = fossil_io_validate_is_suspicious_bot(ua);
294+
ASSUME_ITS_FALSE(result);
295+
}
296+
297+
FOSSIL_TEST(c_test_io_validate_is_disposable_email_true) {
298+
const char *input = "[email protected]";
299+
int result = fossil_io_validate_is_disposable_email(input);
300+
ASSUME_ITS_TRUE(result);
301+
}
302+
303+
FOSSIL_TEST(c_test_io_validate_is_disposable_email_false) {
304+
const char *input = "[email protected]";
305+
int result = fossil_io_validate_is_disposable_email(input);
306+
ASSUME_ITS_FALSE(result);
307+
}
308+
309+
FOSSIL_TEST(c_test_io_validate_is_suspicious_user_true) {
310+
const char *input = "bot123456";
311+
int result = fossil_io_validate_is_suspicious_user(input);
312+
ASSUME_ITS_TRUE(result);
313+
}
314+
315+
FOSSIL_TEST(c_test_io_validate_is_suspicious_user_false) {
316+
const char *input = "john_doe";
317+
int result = fossil_io_validate_is_suspicious_user(input);
318+
ASSUME_ITS_FALSE(result);
319+
}
320+
321+
FOSSIL_TEST(c_test_io_validate_sanitize_string_script) {
322+
const char *input = "<script>alert('xss')</script>";
323+
char output[64];
324+
int flags = fossil_io_validate_sanitize_string(input, output, sizeof(output), FOSSIL_CTX_HTML);
325+
ASSUME_ITS_TRUE(flags & FOSSIL_SAN_SCRIPT);
326+
ASSUME_ITS_TRUE(flags & FOSSIL_SAN_MODIFIED);
327+
}
328+
329+
FOSSIL_TEST(c_test_io_validate_sanitize_string_sql) {
330+
const char *input = "SELECT * FROM users WHERE name='admin' --";
331+
char output[64];
332+
int flags = fossil_io_validate_sanitize_string(input, output, sizeof(output), FOSSIL_CTX_SQL);
333+
ASSUME_ITS_TRUE(flags & FOSSIL_SAN_SQL);
334+
ASSUME_ITS_TRUE(flags & FOSSIL_SAN_MODIFIED);
335+
}
336+
337+
FOSSIL_TEST(c_test_io_validate_sanitize_string_clean) {
338+
const char *input = "SafeString123";
339+
char output[64];
340+
int flags = fossil_io_validate_sanitize_string(input, output, sizeof(output), FOSSIL_CTX_GENERIC);
341+
ASSUME_ITS_EQUAL_I32(FOSSIL_SAN_OK, flags);
342+
ASSUME_ITS_EQUAL_CSTR(input, output);
343+
}
344+
269345
// * * * * * * * * * * * * * * * * * * * * * * * *
270346
// * Fossil Logic Test Pool
271347
// * * * * * * * * * * * * * * * * * * * * * * * *
@@ -290,6 +366,18 @@ FOSSIL_TEST_GROUP(c_input_tests) {
290366
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_length_invalid);
291367
FOSSIL_TEST_ADD(c_input_suite, c_test_io_getc);
292368

369+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_weak_password_bad);
370+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_weak_password_good);
371+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_suspicious_bot_true);
372+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_suspicious_bot_false);
373+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_disposable_email_true);
374+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_disposable_email_false);
375+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_suspicious_user_true);
376+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_is_suspicious_user_false);
377+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_sanitize_string_script);
378+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_sanitize_string_sql);
379+
FOSSIL_TEST_ADD(c_input_suite, c_test_io_validate_sanitize_string_clean);
380+
293381
FOSSIL_TEST_ADD(c_input_suite, c_test_io_register_keybinding_success);
294382
FOSSIL_TEST_ADD(c_input_suite, c_test_io_register_keybinding_duplicate);
295383
FOSSIL_TEST_ADD(c_input_suite, c_test_io_process_keybinding_no_binding);

code/tests/cases/test_input.cpp

Lines changed: 90 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,84 @@ FOSSIL_TEST(cpp_test_io_clear_keybindings) {
485485
ASSUME_ITS_EQUAL_I32(0, (int)bindings.size());
486486
}
487487

488+
FOSSIL_TEST(cpp_test_io_validate_is_weak_password_simple) {
489+
std::string password = "123456";
490+
bool result = fossil::io::Input::is_weak_password(password);
491+
ASSUME_ITS_TRUE(result);
492+
}
493+
494+
FOSSIL_TEST(cpp_test_io_validate_is_weak_password_with_username) {
495+
std::string password = "username123";
496+
std::string username = "username";
497+
bool result = fossil::io::Input::is_weak_password(password, username);
498+
ASSUME_ITS_TRUE(result);
499+
}
500+
501+
FOSSIL_TEST(cpp_test_io_validate_is_weak_password_with_email) {
502+
std::string password = "emailpassword";
503+
std::string email = "[email protected]";
504+
bool result = fossil::io::Input::is_weak_password(password, "", email);
505+
ASSUME_ITS_TRUE(result);
506+
}
507+
508+
FOSSIL_TEST(cpp_test_io_validate_is_weak_password_strong) {
509+
std::string password = "Str0ng!Passw0rd#2024";
510+
bool result = fossil::io::Input::is_weak_password(password);
511+
ASSUME_ITS_FALSE(result);
512+
}
513+
514+
FOSSIL_TEST(cpp_test_io_validate_is_suspicious_bot_known_bot) {
515+
std::string userAgent = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)";
516+
bool result = fossil::io::Input::is_suspicious_bot(userAgent);
517+
ASSUME_ITS_TRUE(result);
518+
}
519+
520+
FOSSIL_TEST(cpp_test_io_validate_is_suspicious_bot_normal_browser) {
521+
std::string userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0";
522+
bool result = fossil::io::Input::is_suspicious_bot(userAgent);
523+
ASSUME_ITS_FALSE(result);
524+
}
525+
526+
FOSSIL_TEST(cpp_test_io_validate_is_disposable_email_true) {
527+
std::string email = "[email protected]";
528+
bool result = fossil::io::Input::is_disposable_email(email);
529+
ASSUME_ITS_TRUE(result);
530+
}
531+
532+
FOSSIL_TEST(cpp_test_io_validate_is_disposable_email_false) {
533+
std::string email = "[email protected]";
534+
bool result = fossil::io::Input::is_disposable_email(email);
535+
ASSUME_ITS_FALSE(result);
536+
}
537+
538+
FOSSIL_TEST(cpp_test_io_validate_is_suspicious_user_true) {
539+
std::string username = "bot_user_123";
540+
bool result = fossil::io::Input::is_suspicious_user(username);
541+
ASSUME_ITS_TRUE(result);
542+
}
543+
544+
FOSSIL_TEST(cpp_test_io_validate_is_suspicious_user_false) {
545+
std::string username = "johnsmith";
546+
bool result = fossil::io::Input::is_suspicious_user(username);
547+
ASSUME_ITS_FALSE(result);
548+
}
549+
550+
FOSSIL_TEST(cpp_test_io_validate_sanitize_string_basic) {
551+
std::string input = "Hello <script>alert('x')</script>!";
552+
fossil_context_t ctx = FOSSIL_SANITIZE_HTML;
553+
int flags = fossil::io::Input::validate_sanitize_string(input, ctx);
554+
ASSUME_ITS_TRUE(flags != 0);
555+
ASSUME_ITS_FALSE(input.find("<script>") != std::string::npos);
556+
}
557+
558+
FOSSIL_TEST(cpp_test_io_validate_sanitize_string_noop) {
559+
std::string input = "SafeString123";
560+
fossil_context_t ctx = FOSSIL_SANITIZE_NONE;
561+
int flags = fossil::io::Input::validate_sanitize_string(input, ctx);
562+
ASSUME_ITS_EQUAL_I32(0, flags);
563+
ASSUME_ITS_EQUAL_CSTR("SafeString123", input.c_str());
564+
}
565+
488566
// * * * * * * * * * * * * * * * * * * * * * * * *
489567
// * Fossil Logic Test Pool
490568
// * * * * * * * * * * * * * * * * * * * * * * * *
@@ -513,7 +591,6 @@ FOSSIL_TEST_GROUP(cpp_input_tests) {
513591
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_email_invalid);
514592
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_length_valid);
515593
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_length_invalid);
516-
517594
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_input_class_gets_from_stream);
518595
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_input_class_gets_from_stream_ex);
519596
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_input_class_validate_input_buffer_valid);
@@ -522,7 +599,18 @@ FOSSIL_TEST_GROUP(cpp_input_tests) {
522599
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_input_class_gets_from_stream_empty);
523600
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_input_class_gets_from_stream_whitespace_only);
524601
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_getc);
525-
602+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_weak_password_simple);
603+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_weak_password_with_username);
604+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_weak_password_with_email);
605+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_weak_password_strong);
606+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_suspicious_bot_known_bot);
607+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_suspicious_bot_normal_browser);
608+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_disposable_email_true);
609+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_disposable_email_false);
610+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_suspicious_user_true);
611+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_is_suspicious_user_false);
612+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_sanitize_string_basic);
613+
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_validate_sanitize_string_noop);
526614
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_register_keybinding_success);
527615
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_register_keybinding_duplicate);
528616
FOSSIL_TEST_ADD(cpp_input_suite, cpp_test_io_register_keybinding_callback_success);

0 commit comments

Comments
 (0)