mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-30 05:13:45 +03:00
ab07f0220a
Server salts change every 30 minutes after all, so keeping them in the long-term storage session file doesn't make much sense. Saving the layer doesn't make sense either, as it was only used to know whether to init connection or not, but it should be done always.
49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
import unittest
|
|
import os
|
|
from io import BytesIO
|
|
from random import randint
|
|
from hashlib import sha256
|
|
from telethon import TelegramClient
|
|
|
|
# Fill in your api_id and api_hash when running the tests
|
|
# and REMOVE THEM once you've finished testing them.
|
|
api_id = None
|
|
api_hash = None
|
|
|
|
if not api_id or not api_hash:
|
|
raise ValueError('Please fill in both your api_id and api_hash.')
|
|
|
|
|
|
class HigherLevelTests(unittest.TestCase):
|
|
@staticmethod
|
|
def test_cdn_download():
|
|
client = TelegramClient(None, api_id, api_hash)
|
|
client.session.set_dc(0, '149.154.167.40', 80)
|
|
assert client.connect()
|
|
|
|
try:
|
|
phone = '+999662' + str(randint(0, 9999)).zfill(4)
|
|
client.send_code_request(phone)
|
|
client.sign_up('22222', 'Test', 'DC')
|
|
|
|
me = client.get_me()
|
|
data = os.urandom(2 ** 17)
|
|
client.send_file(
|
|
me, data,
|
|
progress_callback=lambda c, t:
|
|
print('test_cdn_download:uploading {:.2%}...'.format(c/t))
|
|
)
|
|
msg = client.get_message_history(me)[1][0]
|
|
|
|
out = BytesIO()
|
|
client.download_media(msg, out)
|
|
assert sha256(data).digest() == sha256(out.getvalue()).digest()
|
|
|
|
out = BytesIO()
|
|
client.download_media(msg, out) # Won't redirect
|
|
assert sha256(data).digest() == sha256(out.getvalue()).digest()
|
|
|
|
client.log_out()
|
|
finally:
|
|
client.disconnect()
|