import random import string from event_validation_rules import validation_rules def generate_long_string(length): return ''.join( random.choices(string.ascii_letters + string.digits, k=length)) def generate_test_case_with_long_fields(): """Generate a test case with long fields.""" record_content = {} for field, rules in validation_rules.items(): if rules['type'] == 'string': record_content[field] = generate_long_string(rules['length'] + 1) elif rules['type'] == 'list': record_content[field] = [generate_long_string(rules['item_length']+1)] record_content['email_address'] = 'user@example.com' record_content['form_id'] = '12345' return [{ 'record_content': record_content, 'campaign_id': '12345', 'territory': 'Sony Music Germany', 'valid_mail_list': ['123'], 'expected_result': 'address is too long, address2 is too long, ae_framework_id is too long, ae_segment_id is too long, birthdate is too long, city is too long, country_region is too long, Array custom_field contains a string longer than 2000, first_name is too long, language is too long, last_name is too long, mobile_phone is too long, music_affinity is too long, postal_code is too long, source is too long, sourceChannel is too long, spotify_id is too long, state_province is too long, Array triggered_sends contains a string longer than 255, twitter_username is too long, wyng_campaign_id is too long, wyng_property_id is too long' }] def generate_test_case_with_correct_length_fields(): """Generate a test case with long fields.""" record_content = {} for field, rules in validation_rules.items(): if rules['type'] == 'string': record_content[field] = generate_long_string(rules['length']) elif rules['type'] == 'list': record_content[field] = [generate_long_string(rules['item_length'])] record_content['email_address'] = 'user@example.com' record_content['form_id'] = '12345' return [{ 'record_content': record_content, 'campaign_id': '12345', 'territory': 'Sony Music Germany', 'valid_mail_list': ['123'], 'expected_result': '' }] def generate_test_case_for_email(emails, expected_result): """Generate a test case for email addresses.""" cases = [] for email in emails: cases.append( { 'record_content': { 'email_address': email, 'form_id': '12345', }, 'campaign_id': '12345', 'territory': 'Sony Music Germany', 'valid_mail_list': ['123'], 'expected_result': expected_result }) return cases def generate_test_case_with_invalid_email(): """Generate a test case with invalid email addresses.""" invalid_emails = [ 'userexample.com', 'user@examplecom', 'userexamplecom', 'name.su$rname@$blah.com', '.a@test.jp', 'Joe Smith '] return generate_test_case_for_email(invalid_emails, 'Invalid Email') def generate_test_case_with_valid_email(): invalid_emails = [ 'user@example.com', 'name.su$rname@blah.com', 'a..a@test.jp', 'a..@test.jp', 'firstname.lastname@example.com', 'email@subdomain.example.com', '1234567890@example.com', 'email@example.name', 'Abc..123@example.com'] return generate_test_case_for_email(invalid_emails, '') def generate_test_case_for_valid_mail_list(): """Generate a test case for valid mailing lists.""" return [ { 'record_content': { 'email_address': 'user@example.com', 'form_id': '12345', 'mailing_list': ['123'], }, 'campaign_id': '12345', 'territory': 'Sony Music Germany', 'valid_mail_list': ['123'], 'expected_result': '' }, { 'record_content': { 'email_address': 'user@example.com', 'form_id': '12345', 'mailing_list': ['123'], }, 'campaign_id': '12345', 'territory': 'Sony Music Germany', 'valid_mail_list': ['123', '456'], 'expected_result': '' }, { 'record_content': { 'email_address': 'user@example.com', 'form_id': '12345', }, 'campaign_id': '12345', 'territory': 'Sony Music Germany', 'valid_mail_list': ['123'], 'expected_result': '' }, ] def generate_test_case_for_invalid_mail_list(): """Generate a test case for invalid mailing lists.""" return [ { 'record_content': { 'email_address': 'user@example.com', 'form_id': '12345', 'mailing_list': ['Q123'], }, 'campaign_id': '12345', 'territory': 'Sony Music Germany', 'valid_mail_list': ['P123', 'O456'], 'expected_result': 'Invalid mailing_list' }, { 'record_content': { 'email_address': 'user@example.com', 'form_id': '12345', 'mailing_list': ['P123', 'I456'], }, 'campaign_id': '12345', 'territory': 'Sony Music Germany', 'valid_mail_list': ['P123', 'O456', 'M789'], 'expected_result': 'Invalid mailing_list' }, ] def generate_test_case_null_campaign_id(): """Generate a test case for a null campaign_id.""" return [ { 'record_content': { 'email_address': 'user@example.com', 'form_id': '12345', }, 'campaign_id': None, 'territory': 'Sony Music Germany', 'valid_mail_list': ['P123', 'O456'], 'expected_result': 'Invalid campaign_id' }, ]