def test_account_parse_incoming_mails_replace_by_date(account_maker):
    ac1 = account_maker()
    ac2 = account_maker()
    ac3 = account_maker()
    adr = "*****@*****.**"
    msg2 = mime.gen_mail_msg(From="Alice <%s>" % adr,
                             To=["*****@*****.**"],
                             _dto=True,
                             Autocrypt=ac3.make_header(adr, headername=""),
                             Date='Thu, 16 Feb 2017 15:00:00 -0000')
    msg1 = mime.gen_mail_msg(From="Alice <%s>" % adr,
                             To=["*****@*****.**"],
                             _dto=True,
                             Autocrypt=ac2.make_header(adr, headername=""),
                             Date='Thu, 16 Feb 2017 13:00:00 -0000')
    peerinfo = ac1.process_incoming(msg2)
    id1 = peerinfo.identity
    assert id1.get_peerinfo(
        adr).keyhandle == ac3.get_identity().config.own_keyhandle
    ac1.process_incoming(msg1)
    assert id1.get_peerinfo(
        adr).keyhandle == ac3.get_identity().config.own_keyhandle
    msg3 = mime.gen_mail_msg(From="Alice <%s>" % adr,
                             To=["*****@*****.**"],
                             _dto=True,
                             Date='Thu, 16 Feb 2017 17:00:00 -0000')
    peerinfo = ac1.process_incoming(msg3)
    assert peerinfo is None
    assert ac1.get_identity().get_peerinfo(adr) is None
示例#2
0
def test_account_parse_incoming_mails_replace(account_maker):
    ac1 = account_maker()
    ac2 = account_maker()
    ac3 = account_maker()
    addr = "*****@*****.**"
    msg1 = mime.gen_mail_msg(
        From="Alice <%s>" % addr, To=["*****@*****.**"], _dto=True,
        Autocrypt=ac2.make_header(addr, headername=""))
    peerinfo = ac1.process_incoming(msg1)
    ident2 = ac2.get_identity_from_emailadr([addr])
    assert peerinfo.keyhandle == ident2.config.own_keyhandle
    msg2 = mime.gen_mail_msg(
        From="Alice <%s>" % addr, To=["*****@*****.**"], _dto=True,
        Autocrypt=ac3.make_header(addr, headername=""))
    peerinfo2 = ac1.process_incoming(msg2)
    assert peerinfo2.keyhandle == ac3.get_identity().config.own_keyhandle
示例#3
0
    def test_send_reply(self, smtpserver, bcmd, ac_sender, with_ac, linematch):
        host, port = smtpserver.addr[:2]
        Autocrypt = None if not with_ac else ac_sender.ac_headerval
        msg = mime.gen_mail_msg(
            From=ac_sender.adr,
            To=[bcmd.bot_adr],
            MessageID=mime.make_msgid("5" * 50),  # long MessageID
            Autocrypt=Autocrypt,
            Subject="hello",
            _dto=True)

        bcmd.run_ok(["bot-reply", "--smtp={},{}".format(host, port)],
                    input=msg.as_string())

        assert len(smtpserver.outbox) == 1
        msg2 = smtpserver.outbox[0]
        assert msg2["To"] == msg["From"]
        assert msg2["From"] == msg["To"]
        assert msg2["In-Reply-To"] == msg["Message-ID"]
        assert msg["Subject"] in msg2["Subject"]
        body = decode_body(msg2)
        linematch(
            body, """
            *Got your mail*
            *Message-ID*{}*
        """.format(msg["Message-ID"][:20]))
        if with_ac:
            linematch(
                body, """
                *processed incoming*found:*
                *{senderadr}*{senderkeyhandle}*
            """.format(
                    senderadr=ac_sender.adr,
                    senderkeyhandle=ac_sender.config.own_keyhandle,
                ))
示例#4
0
 def test_process_incoming_no_autocrypt(self, mycmd, datadir):
     mycmd.run_ok(["init", "--no-identity"])
     mycmd.run_ok(["add-identity", "ident1", "[email protected]"])
     msg = mime.gen_mail_msg(From="Alice <*****@*****.**>", To=["*****@*****.**"], _dto=True)
     mycmd.run_ok(["process-incoming"], """
         *processed*ident1*no*Autocrypt*header*
     """, input=msg.as_string())
示例#5
0
def test_account_parse_incoming_mail_broken_ac_header(account_maker):
    addr = "*****@*****.**"
    ac2 = account_maker()
    msg = mime.gen_mail_msg(
        From="Alice <%s>" % addr, To=["*****@*****.**"], _dto=True,
        Autocrypt="Autocrypt: to=123; key=12312k3")
    peerinfo = ac2.process_incoming(msg)
    assert not peerinfo
示例#6
0
 def do_gen_mail(From="*****@*****.**", body=None):
     msg = mime.gen_mail_msg(
         From=From,
         To=["*****@*****.**"],
         Subject="test mail {} [{}]".format(next(counter), nid),
     )
     if body is not None:
         msg.set_payload(body)
     return msg
示例#7
0
    def test_reply_no_autocrypt(self, bcmd):
        adr = "*****@*****.**"
        msg = mime.gen_mail_msg(
            From=adr, To=[bcmd.bot_adr],
            Autocrypt=None, Subject="hello", _dto=True)

        out = bcmd.run_ok(["bot-reply"], input=msg.as_string())
        reply_msg = mime.parse_message_from_string(out)
        assert reply_msg["Subject"] == "Re: " + msg["Subject"]
        assert reply_msg["Autocrypt"]
        body = decode_body(reply_msg)
        print(body)
        assert "no autocrypt header" in body.lower()
示例#8
0
def test_account_parse_incoming_mail_and_raw_encrypt(account_maker):
    addr = "*****@*****.**"
    ac1 = account_maker()
    ac2 = account_maker()
    msg = mime.gen_mail_msg(
        From="Alice <%s>" % addr, To=["*****@*****.**"], _dto=True,
        Autocrypt=ac1.make_header(addr, headername=""))
    peerinfo = ac2.process_incoming(msg)
    assert peerinfo["addr"] == addr
    ident2 = ac2.get_identity()
    ident1 = ac1.get_identity()
    enc = ident2.bingpg.encrypt(data=b"123", recipients=[peerinfo.keyhandle])
    data, descr_info = ident1.bingpg.decrypt(enc)
    assert data == b"123"
示例#9
0
    def test_reply_no_delivto(self, bcmd, ac_sender, linematch):
        send_adr = ac_sender.adr
        msg = mime.gen_mail_msg(From=send_adr,
                                To=[bcmd.bot_adr],
                                Subject="hello")

        out = bcmd.run_ok(["bot-reply", "--fallback-delivto", bcmd.bot_adr],
                          input=msg.as_string())

        reply_msg = mime.parse_message_from_string(out)
        linematch(decode_body(reply_msg), """
            *processed*identity*default*
        """)
        assert reply_msg["Subject"] == "Re: " + msg["Subject"]
        assert reply_msg["From"] == bcmd.bot_adr
        assert reply_msg["To"] == msg["From"]
        assert reply_msg["Autocrypt"]
示例#10
0
    def test_reply_with_autocrypt(self, bcmd, ac_sender, linematch):
        send_adr = ac_sender.adr
        msg = mime.gen_mail_msg(
            From=send_adr, To=[bcmd.bot_adr],
            Autocrypt=ac_sender.ac_headerval,
            Subject="hello", _dto=True)

        out = bcmd.run_ok(["bot-reply"], input=msg.as_string())

        reply_msg = mime.parse_message_from_string(out)
        linematch(decode_body(reply_msg), """
            *processed*identity*default*
        """)
        assert reply_msg["Subject"] == "Re: " + msg["Subject"]
        assert reply_msg["From"] == bcmd.bot_adr
        assert reply_msg["To"] == msg["From"]
        assert reply_msg["Autocrypt"]
        ac_dict = mime.parse_ac_headervalue(reply_msg["Autocrypt"])
        assert ac_dict["to"] == bcmd.bot_adr
        assert ac_dict["key"]
        body = decode_body(reply_msg)
        assert "no Autocrypt header" not in body
        print(body)