diff --git a/tests/plugins/email_address_test.py b/tests/plugins/email_address_test.py index d33b3b4f..89e452ae 100644 --- a/tests/plugins/email_address_test.py +++ b/tests/plugins/email_address_test.py @@ -52,6 +52,57 @@ class TestEmailAddressDetector: ('user@gmail.com', True), ('user@yahoo.com', True), ('user@hotmail.com', True), + + # Additional test cases + + # Valid email addresses with different domain extensions + ('user@domain.co.uk', True), + ('user@domain.io', True), + ('user@domain.org', True), + ('user@sub.domain.com', True), + + # Valid email addresses with numbers + ('user123@example.com', True), + ('123user@example.com', True), + ('user123@123example.com', True), + + # Valid email addresses, part of larger text with special characters + ('Contact us at: user@example.com!', True), + ('Email: user@example.com for more info.', True), + + # Invalid email addresses with missing components + ('user@example', False), + ('user@.example.com', False), + ('@example.com', False), + ('user@', False), + + # Invalid email addresses with special characters + ('user@exa*mple.com', False), + ('user@examp!e.com', False), + ('user@exampl$.com', False), + ('user@exam^ple.com', False), + + # Unusual formats, mark as false + ('"user"@example.com', False), # Quoted local part + ('user@[123.123.123.123]', False), # IP address domain + + # Invalid email addresses, incorrect use of special characters + ('user@exa,mple.com', False), + ('user@exampcom', False), + ('user@exampl;e.com', False), + + # Edge cases - rare but valid email formats + ('user+mailbox/department=shipping@example.com', True), + ('customer/department=shipping@example.com', True), + ('!def!xyz%abc@example.com', True), + ('_Yosemite.Sam@example.com', True), + + # Edge cases - position of . (dot) + ('user@example..com', False), # Double dot in domain + ('.user@example.com', True), # Leading dot in local part + ('user@.example.com', False), # Leading dot in domain + ('user@example.com.', True), # Trailing dot in domain ], ) def test_analyze_line(self, payload, should_flag):