def test_fetch_and_parse(gm_client, some, raises): lm = local.client() remote.fetch() local.parse() def gm_uidnext(): account = remote.data_account.get() key = ':'.join((account['imap_host'], account['username'], '\\All')) res = remote.data_uidnext.key(key) assert res return res[1] def mlr_uidnext(): return local.data_uidnext.get() assert gm_uidnext() == 1 assert mlr_uidnext() is None gm_client.add_emails() assert gm_uidnext() == 2 assert mlr_uidnext() == 2 assert lm.select(local.SRC) == [b'1'] assert lm.select(local.ALL) == [b'1'] gm_client.add_emails([{'txt': '1'}, {'txt': '2'}]) assert gm_uidnext() == 4 assert mlr_uidnext() == 4 assert lm.select(local.SRC) == [b'3'] assert lm.select(local.ALL) == [b'3'] remote.fetch() local.parse('all') assert gm_uidnext() == 4 assert mlr_uidnext() == 4 assert lm.select(local.SRC) == [b'3'] assert lm.select(local.ALL) == [b'3'] assert lm.status(local.ALL, '(UIDNEXT)') == [b'mlr/All (UIDNEXT 7)']
def test_origin_msg(gm_client, latest, login): gm_client.add_emails(parse=False) msg = latest(local.SRC)['body'] # headers sha256 = msg.get('X-SHA256') assert sha256 and re.match('<[a-z0-9]{64}>', sha256) uid = msg.get('X-GM-UID') assert uid and uid == '<101>' msgid = msg.get('X-GM-MSGID') assert msgid and msgid == '<10100>' thrid = msg.get('X-GM-THRID') assert thrid and thrid == '<10100>' user = msg.get('X-GM-Login') assert user == '<%s*root>' % login.user2 gm_client.add_emails([ {'flags': r'\Flagged', 'labels': r'"\\Inbox" "\\Sent" label'} ], parse=False) flags = latest(local.SRC)['flags'] assert r'\Flagged #inbox #sent label' == flags assert local.data_tags.get() == {} gm_client.add_emails([{'labels': r'test/#-.,:;!?/'}], parse=False) flags = latest(local.SRC)['flags'] assert r'test/#-.,:;!?/' == flags assert local.data_tags.get() == {} gm_client.add_emails([ {'labels': 'label "another label" (label)'} ], parse=False) flags = latest(local.SRC)['flags'] assert 'label #12ea23fc #40602c03' == flags assert local.data_tags.get() == { '#12ea23fc': {'name': 'another label'}, '#40602c03': {'name': '(label)'}, } # - "\Important" must be skiped # - flags must be transformed with imap-utf7 gm_client.add_emails([ {'labels': r'"\\Important" "\\Sent" "test(&BEIENQRBBEI-)"'} ], parse=False) flags = latest(local.SRC)['flags'] assert '#sent #a058c658' == flags assert local.data_tags.get() == { '#12ea23fc': {'name': 'another label'}, '#40602c03': {'name': '(label)'}, '#a058c658': {'name': 'test(тест)'}, } gm_client.add_emails([{}], tag='\\Junk', parse=False) assert latest(local.SRC)['flags'] == '#spam' gm_client.add_emails([{}], tag='\\Trash', parse=False) assert latest(local.SRC)['flags'] == '#trash' gm_client.add_emails([{}], tag='\\Draft', parse=False) assert latest(local.SRC)['flags'] == '\\Draft' gm_client.add_emails([{}], tag='\\Inbox', fetch=False, parse=False) remote.fetch(tag='\\Chats', box='mlr') assert latest(local.SRC)['flags'] == '#chats'