def test_user_b_mail_alt_equal_user_a_mail_primary_with_mail_copy_to_self(
        mail_forward_copy_to_self, delivered):
    print(
        "### user_b's mail_alternative_address is equal to user_a's mail forward address"
    )
    with udm_test.UCSTestUDM() as udm:
        a_user = Bunch()
        a_user.mailPrimaryAddress = random_email()
        a_user.mailHomeServer = FQDN
        a_user.mailForwardAddress = random_email()
        a_user.dn, a_user.username = udm.create_user(
            set={
                "mailHomeServer": a_user.mailHomeServer,
                "mailPrimaryAddress": a_user.mailPrimaryAddress,
                "mailForwardAddress": a_user.mailForwardAddress,
                "mailForwardCopyToSelf": mail_forward_copy_to_self,
            })
        b_user = Bunch()
        b_user.mailPrimaryAddress = random_email()
        b_user.mailHomeServer = FQDN
        b_user.dn, a_user.username = udm.create_user(
            set={
                "mailHomeServer": b_user.mailHomeServer,
                "mailPrimaryAddress": b_user.mailPrimaryAddress,
                "mailAlternativeAddress": a_user.mailPrimaryAddress,
            })
        token = make_token()
        send_mail(recipients=a_user.mailPrimaryAddress,
                  msg=token,
                  debuglevel=DEBUG_LEVEL)
        check_delivery(token, a_user.mailPrimaryAddress, delivered)
        check_delivery(token, b_user.mailPrimaryAddress, True)
def test_group_mail_in_mailing_list():
    with udm_test.UCSTestUDM() as udm:
        group_members = []
        group_mails = []
        for i in range(2):
            user = random_mail_user(udm=udm)
            group_members.append(user.dn)
            group_mails.append(user.mailPrimaryAddress)
        group_mail = random_email()
        udm.create_group(set={
            "mailAddress": group_mail,
            "users": group_members
        })
        list_name = uts.random_name()
        list_mail = "%s@%s" % (list_name, DOMAIN)
        udm.create_object("mail/lists",
                          set={
                              "name": list_name,
                              "mailAddress": list_mail,
                              "members": [group_mail]
                          },
                          wait_for_drs_replication=True)
        token = make_token()
        send_mail(recipients=list_mail, msg=token, debuglevel=DEBUG_LEVEL)
        for mail in group_mails:
            check_delivery(token, mail, True)
def test_user_mail_alt_equals_shared_folder_mail_address():
    print(
        "### A user has mail@shared_folder as mail_alternative_address address"
    )
    with udm_test.UCSTestUDM() as udm:
        folder_name = uts.random_name()
        shared_folder_mail = "%s@%s" % (folder_name, DOMAIN)
        user = random_mail_user(udm=udm,
                                mail_alternative_address=shared_folder_mail)
        token = make_token()
        msgid = uts.random_name()
        folder_dn, folder_name, folder_mailaddress = create_shared_mailfolder(
            udm,
            FQDN,
            mailAddress=shared_folder_mail,
            user_permission=['"%s" "%s"' % ("anyone", "all")])
        send_mail(recipients=shared_folder_mail,
                  msg=token,
                  debuglevel=DEBUG_LEVEL,
                  messageid=msgid)
        check_delivery(token, user.mailPrimaryAddress, True)
        found = imap_search_mail(messageid=msgid,
                                 server=FQDN,
                                 imap_user=user.mailPrimaryAddress,
                                 imap_folder=folder_name,
                                 use_ssl=True)
        if not found:
            utils.fail("Mail sent with token = %r to %s un-expectedly".format(
                token, folder_name))
def test_group_mail_equal_user_mail_alt():
    print(
        "### The group's mail is identical to a users mail_alternative_address"
    )
    with udm_test.UCSTestUDM() as udm:
        group_mail = random_email()
        user_a = random_mail_user(udm=udm, mail_alternative_address=group_mail)
        user_b = random_mail_user(udm=udm)
        udm.create_group(set={"mailAddress": group_mail, "users": [user_b.dn]})
        token = make_token()
        send_mail(recipients=group_mail, msg=token, debuglevel=DEBUG_LEVEL)
        check_delivery(token, user_a.mailPrimaryAddress, True)
        check_delivery(token, user_b.mailPrimaryAddress, True)
def test_user_b_mail_alt_equal_user_a_mail_primary():
    print(
        "### user_b's mail_alternative_address is equal to user_a's primary mail address"
    )
    with udm_test.UCSTestUDM() as udm:
        a_user = random_mail_user(udm=udm)
        b_user = random_mail_user(
            udm=udm, mail_alternative_address=a_user.mailPrimaryAddress)
        token = make_token()
        send_mail(recipients=a_user.mailPrimaryAddress,
                  msg=token,
                  debuglevel=DEBUG_LEVEL)
        check_delivery(token, a_user.mailPrimaryAddress, True)
        check_delivery(token, b_user.mailPrimaryAddress, True)
def test_mail_list_equal_user_mail_alt():
    print(
        "### A mailing list's mail is identical with a users mail_alternative_address"
    )
    with udm_test.UCSTestUDM() as udm:
        list_name = uts.random_name()
        mailing_list_mail = "%s@%s" % (list_name, DOMAIN)
        user_a = random_mail_user(udm=udm,
                                  mail_alternative_address=mailing_list_mail)
        user_b = random_mail_user(udm=udm)
        udm.create_object("mail/lists",
                          set={
                              "name": list_name,
                              "mailAddress": mailing_list_mail,
                              "members": [user_b.mailPrimaryAddress],
                          })
        token = make_token()
        send_mail(recipients=mailing_list_mail,
                  msg=token,
                  debuglevel=DEBUG_LEVEL)
        check_delivery(token, user_a.mailPrimaryAddress, True)
        check_delivery(token, user_b.mailPrimaryAddress, True)