mirror of
https://github.com/TeamPGM/pyrogram.git
synced 2024-12-17 23:07:56 +00:00
195 lines
8.0 KiB
Python
195 lines
8.0 KiB
Python
# Pyrogram - Telegram MTProto API Client Library for Python
|
|
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
|
|
#
|
|
# This file is part of Pyrogram.
|
|
#
|
|
# Pyrogram is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Lesser General Public License as published
|
|
# by the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Pyrogram is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public License
|
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
import pytest
|
|
|
|
from pyrogram.file_id import FileId, FileUniqueId, FileType, FileUniqueType
|
|
|
|
|
|
def check(file_id: str, expected_file_type: FileType):
|
|
decoded = FileId.decode(file_id)
|
|
|
|
assert decoded.file_type == expected_file_type
|
|
assert decoded.encode() == file_id
|
|
|
|
|
|
def check_unique(file_unique_id: str, expected_file_unique_type: FileUniqueType):
|
|
decoded = FileUniqueId.decode(file_unique_id)
|
|
|
|
assert decoded.file_unique_type == expected_file_unique_type
|
|
assert decoded.encode() == file_unique_id
|
|
|
|
|
|
def test_audio():
|
|
audio = "CQACAgIAAx0CAAGgr9AAAgmQX7b4XPBstC1fFUuJBooHTHFd7HMAAgUAA4GkuUnVOGG5P196yR4E"
|
|
audio_unique = "AgADBQADgaS5SQ"
|
|
audio_thumb = "AAMCAgADHQIAAaCv0AACCZBftvhc8Gy0LV8VS4kGigdMcV3scwACBQADgaS5SdU4Ybk_X3rJIH3qihAAAwEAB20AA_OeAQABHgQ"
|
|
audio_thumb_unique = "AQADIH3qihAAA_OeAQAB"
|
|
|
|
check(audio, FileType.AUDIO)
|
|
check_unique(audio_unique, FileUniqueType.DOCUMENT)
|
|
check(audio_thumb, FileType.THUMBNAIL)
|
|
check_unique(audio_thumb_unique, FileUniqueType.PHOTO)
|
|
|
|
|
|
def test_video():
|
|
video = "BAACAgIAAx0CAAGgr9AAAgmRX7b4Xv9f-4BK5VR_5ppIOF6UIp0AAgYAA4GkuUmhnZz2xC37wR4E"
|
|
video_unique = "AgADBgADgaS5SQ"
|
|
video_thumb = "AAMCAgADHQIAAaCv0AACCZFftvhe_1_7gErlVH_mmkg4XpQinQACBgADgaS5SaGdnPbELfvBIH3qihAAAwEAB20AA_WeAQABHgQ"
|
|
video_thumb_unique = "AQADIH3qihAAA_WeAQAB"
|
|
|
|
check(video, FileType.VIDEO)
|
|
check_unique(video_unique, FileUniqueType.DOCUMENT)
|
|
check(video_thumb, FileType.THUMBNAIL)
|
|
check_unique(video_thumb_unique, FileUniqueType.PHOTO)
|
|
|
|
|
|
def test_document():
|
|
document = "BQACAgIAAx0CAAGgr9AAAgmPX7b4UxbjNoFEO_L0I4s6wrXNJA8AAgQAA4GkuUm9FFvIaOhXWR4E"
|
|
document_unique = "AgADBAADgaS5SQ"
|
|
document_thumb = "AAMCAgADHQIAAaCv0AACCY9ftvhTFuM2gUQ78vQjizrCtc0kDwACBAADgaS5Sb0UW8ho6FdZIH3qihAAAwEAB3MAA_GeAQABHgQ"
|
|
document_thumb_unique = "AQADIH3qihAAA_GeAQAB"
|
|
|
|
check(document, FileType.DOCUMENT)
|
|
check_unique(document_unique, FileUniqueType.DOCUMENT)
|
|
check(document_thumb, FileType.THUMBNAIL)
|
|
check_unique(document_thumb_unique, FileUniqueType.PHOTO)
|
|
|
|
|
|
def test_animation():
|
|
animation = "CgACAgIAAx0CAAGgr9AAAgmSX7b4Y2g8_QW2XFd49iUmRnHOyG8AAgcAA4GkuUnry9gWDzF_5R4E"
|
|
animation_unique = "AgADBwADgaS5SQ"
|
|
|
|
check(animation, FileType.ANIMATION)
|
|
check_unique(animation_unique, FileUniqueType.DOCUMENT)
|
|
|
|
|
|
def test_voice():
|
|
voice = "AwACAgIAAx0CAAGgr9AAAgmUX7b4c1KQyHVwzffxC2EnSYWsMAQAAgkAA4GkuUlsZUZ4_I97AR4E"
|
|
voice_unique = "AgADCQADgaS5SQ"
|
|
|
|
check(voice, FileType.VOICE)
|
|
check_unique(voice_unique, FileUniqueType.DOCUMENT)
|
|
|
|
|
|
def test_video_note():
|
|
video_note = "DQACAgIAAx0CAAGgr9AAAgmVX7b53qrRzCEO13BaLQJaYuFbdlwAAgoAA4GkuUmlqIzDy_PCsx4E"
|
|
video_note_unique = "AgADCgADgaS5SQ"
|
|
video_note_thumb = "AAMCAgADHQIAAaCv0AACCZVftvneqtHMIQ7XcFotAlpi4Vt2XAACCgADgaS5SaWojMPL88KzIH3qihAAAwEAB20AA_meAQABHgQ"
|
|
video_note_thumb_unique = "AQADIH3qihAAA_meAQAB"
|
|
|
|
check(video_note, FileType.VIDEO_NOTE)
|
|
check_unique(video_note_unique, FileUniqueType.DOCUMENT)
|
|
check(video_note_thumb, FileType.THUMBNAIL)
|
|
check_unique(video_note_thumb_unique, FileUniqueType.PHOTO)
|
|
|
|
|
|
def test_sticker():
|
|
sticker = "CAACAgEAAx0CAAGgr9AAAgmWX7b6uFeLlhXEgYrM8pIbGaQKRQ0AAswBAALjeAQAAbeooNv_tb6-HgQ"
|
|
sticker_unique = "AgADzAEAAuN4BAAB"
|
|
sticker_thumb = "AAMCAQADHQIAAaCv0AACCZZftvq4V4uWFcSBiszykhsZpApFDQACzAEAAuN4BAABt6ig2_-1vr5gWNkpAAQBAAdtAAM0BQACHgQ"
|
|
sticker_thumb_unique = "AQADYFjZKQAENAUAAg"
|
|
|
|
check(sticker, FileType.STICKER)
|
|
check_unique(sticker_unique, FileUniqueType.DOCUMENT)
|
|
check(sticker_thumb, FileType.THUMBNAIL)
|
|
check_unique(sticker_thumb_unique, FileUniqueType.PHOTO)
|
|
|
|
|
|
def test_photo():
|
|
photo_small = "AgACAgIAAx0CAAGgr9AAAgmZX7b7IPLRl8NcV3EJkzHwI1gwT-oAAq2nMRuBpLlJPJY-URZfhTkgfeqKEAADAQADAgADbQADAZ8BAAEeBA"
|
|
photo_small_unique = "AQADIH3qihAAAwGfAQAB"
|
|
photo_medium = "AgACAgIAAx0CAAGgr9AAAgmZX7b7IPLRl8NcV3EJkzHwI1gwT-oAAq2nMRuBpLlJPJY-URZfhTkgfeqKEAADAQADAgADeAADAp8BAAEeBA"
|
|
photo_medium_unique = "AQADIH3qihAAAwKfAQAB"
|
|
photo_big = "AgACAgIAAx0CAAGgr9AAAgmZX7b7IPLRl8NcV3EJkzHwI1gwT-oAAq2nMRuBpLlJPJY-URZfhTkgfeqKEAADAQADAgADeQAD_54BAAEeBA"
|
|
photo_big_unique = "AQADIH3qihAAA_-eAQAB"
|
|
|
|
check(photo_small, FileType.PHOTO)
|
|
check_unique(photo_small_unique, FileUniqueType.PHOTO)
|
|
check(photo_medium, FileType.PHOTO)
|
|
check_unique(photo_medium_unique, FileUniqueType.PHOTO)
|
|
check(photo_big, FileType.PHOTO)
|
|
check_unique(photo_big_unique, FileUniqueType.PHOTO)
|
|
|
|
|
|
def test_chat_photo():
|
|
user_photo_small = "AQADAgADrKcxGylBBQAJIH3qihAAAwIAAylBBQAF7bDHYwABnc983KcAAh4E"
|
|
user_photo_small_unique = "AQADIH3qihAAA9ynAAI"
|
|
user_photo_big = "AQADAgADrKcxGylBBQAJIH3qihAAAwMAAylBBQAF7bDHYwABnc983qcAAh4E"
|
|
user_photo_big_unique = "AQADIH3qihAAA96nAAI"
|
|
|
|
chat_photo_small = "AQADAgATIH3qihAAAwIAA3t3-P______AAjhngEAAR4E"
|
|
chat_photo_small_unique = "AQADIH3qihAAA-GeAQAB"
|
|
chat_photo_big = "AQADAgATIH3qihAAAwMAA3t3-P______AAjjngEAAR4E"
|
|
chat_photo_big_unique = "AQADIH3qihAAA-OeAQAB"
|
|
|
|
channel_photo_small = "AQADAgATIH3qihAAAwIAA-fFwCoX____MvARg8nvpc3RpwACHgQ"
|
|
channel_photo_small_unique = "AQADIH3qihAAA9GnAAI"
|
|
channel_photo_big = "AQADAgATIH3qihAAAwMAA-fFwCoX____MvARg8nvpc3TpwACHgQ"
|
|
channel_photo_big_unique = "AQADIH3qihAAA9OnAAI"
|
|
|
|
check(user_photo_small, FileType.CHAT_PHOTO)
|
|
check_unique(user_photo_small_unique, FileUniqueType.PHOTO)
|
|
check(user_photo_big, FileType.CHAT_PHOTO)
|
|
check_unique(user_photo_big_unique, FileUniqueType.PHOTO)
|
|
|
|
check(chat_photo_small, FileType.CHAT_PHOTO)
|
|
check_unique(chat_photo_small_unique, FileUniqueType.PHOTO)
|
|
check(chat_photo_big, FileType.CHAT_PHOTO)
|
|
check_unique(chat_photo_big_unique, FileUniqueType.PHOTO)
|
|
|
|
check(channel_photo_small, FileType.CHAT_PHOTO)
|
|
check_unique(channel_photo_small_unique, FileUniqueType.PHOTO)
|
|
check(channel_photo_big, FileType.CHAT_PHOTO)
|
|
check_unique(channel_photo_big_unique, FileUniqueType.PHOTO)
|
|
|
|
|
|
def test_old_file_id():
|
|
old = "BQADBAADQNKSZqjl5DcROGn_eu5JtgAEAgAEAg"
|
|
check(old, FileType.DOCUMENT)
|
|
|
|
|
|
def test_unknown_file_type():
|
|
unknown = "RQACAgIAAx0CAAGgr9AAAgmPX7b4UxbjNoFEO_L0I4s6wrXNJA8AAgQAA4GkuUm9FFvIaOhXWR4E"
|
|
|
|
with pytest.raises(ValueError, match=r"Unknown file_type \d+ of file_id \w+"):
|
|
check(unknown, FileType.DOCUMENT)
|
|
|
|
|
|
def test_unknown_thumbnail_source():
|
|
unknown = "AAMCAgADHQIAAaCv0AACCY9ftvhTFuM2gUQ78vQjizrCtc0kDwACBAADgaS5Sb0UW8ho6FdZIH3qihAAA6QBAAIeBA"
|
|
|
|
with pytest.raises(ValueError, match=r"Unknown thumbnail_source \d+ of file_id \w+"):
|
|
check(unknown, FileType.THUMBNAIL)
|
|
|
|
|
|
def test_stringify_file_id():
|
|
file_id = "BQACAgIAAx0CAAGgr9AAAgmPX7b4UxbjNoFEO_L0I4s6wrXNJA8AAgQAA4GkuUm9FFvIaOhXWR4E"
|
|
string = "{'major': 4, 'minor': 30, 'file_type': <FileType.DOCUMENT: 5>, 'dc_id': 2, " \
|
|
"'file_reference': b'\\x02\\x00\\xa0\\xaf\\xd0\\x00\\x00\\t\\x8f_\\xb6\\xf8S\\x16\\xe36\\x81D;\\xf2\\xf4#\\x8b:\\xc2\\xb5\\xcd$\\x0f', " \
|
|
"'media_id': 5312458109417947140, 'access_hash': 6437869729085068477, 'thumbnail_size': ''}"
|
|
|
|
assert str(FileId.decode(file_id)) == string
|
|
|
|
|
|
def test_stringify_file_unique_id():
|
|
file_unique_id = "AgADBAADgaS5SQ"
|
|
string = "{'file_unique_type': <FileUniqueType.DOCUMENT: 2>, 'media_id': 5312458109417947140}"
|
|
|
|
assert str(FileUniqueId.decode(file_unique_id)) == string
|