Files
python-telegram-bot/tests/_files/conftest.py
T
Abdelrahman Elkheir 0fb5678180 Full Support for Bot API 10.0 (#5229)
Co-authored-by: Harshil <37377066+harshil21@users.noreply.github.com>
Co-authored-by: poolitzer <github@poolitzer.eu>
Co-authored-by: Phil Bazun <Phil9lne@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-06-09 11:49:15 -04:00

164 lines
4.6 KiB
Python

#!/usr/bin/env python
#
# A library that provides a Python interface to the Telegram Bot API
# Copyright (C) 2015-2026
# Leandro Toledo de Souza <devs@python-telegram-bot.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program 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 Public License for more details.
#
# You should have received a copy of the GNU Lesser Public License
# along with this program. If not, see [http://www.gnu.org/licenses/].
"""Module to provide fixtures most of which are used in test_inputmedia.py."""
import pytest
from tests.auxil.files import data_file
from tests.auxil.networking import expect_bad_request
@pytest.fixture(scope="session")
async def animation(bot, chat_id):
with data_file("game.gif").open("rb") as f, data_file("thumb.jpg").open("rb") as thumb:
return (
await bot.send_animation(chat_id, animation=f, read_timeout=50, thumbnail=thumb)
).animation
@pytest.fixture
def animation_file():
with data_file("game.gif").open("rb") as f:
yield f
@pytest.fixture(scope="module")
async def animated_sticker(bot, chat_id):
with data_file("telegram_animated_sticker.tgs").open("rb") as f:
return (await bot.send_sticker(chat_id, sticker=f, read_timeout=50)).sticker
@pytest.fixture
def animated_sticker_file():
with data_file("telegram_animated_sticker.tgs").open("rb") as f:
yield f
@pytest.fixture(scope="session")
async def audio(bot, chat_id):
with data_file("telegram.mp3").open("rb") as f, data_file("thumb.jpg").open("rb") as thumb:
return (await bot.send_audio(chat_id, audio=f, read_timeout=50, thumbnail=thumb)).audio
@pytest.fixture
def audio_file():
with data_file("telegram.mp3").open("rb") as f:
yield f
@pytest.fixture(scope="session")
async def document(bot, chat_id):
with data_file("telegram.png").open("rb") as f:
return (await bot.send_document(chat_id, document=f, read_timeout=50)).document
@pytest.fixture
def document_file():
with data_file("telegram.png").open("rb") as f:
yield f
@pytest.fixture(scope="session")
def photo(photolist):
return photolist[-1]
@pytest.fixture
def photo_file():
with data_file("telegram.jpg").open("rb") as f:
yield f
@pytest.fixture(scope="session")
async def photolist(bot, chat_id):
async def func():
with data_file("telegram.jpg").open("rb") as f:
return (await bot.send_photo(chat_id, photo=f, read_timeout=50)).photo
return await expect_bad_request(
func, "Type of file mismatch", "Telegram did not accept the file."
)
@pytest.fixture(scope="module")
async def sticker(bot, chat_id):
with data_file("telegram.webp").open("rb") as f:
sticker = (await bot.send_sticker(chat_id, sticker=f, read_timeout=50)).sticker
# necessary to properly test needs_repainting
with sticker._unfrozen():
sticker.needs_repainting = True
return sticker
@pytest.fixture
def sticker_file():
with data_file("telegram.webp").open("rb") as file:
yield file
@pytest.fixture
def sticker_set_thumb_file():
with data_file("sticker_set_thumb.png").open("rb") as file:
yield file
@pytest.fixture(scope="session")
def thumb(photolist):
return photolist[0]
@pytest.fixture(scope="session")
async def video(bot, chat_id):
with data_file("telegram.mp4").open("rb") as f:
return (await bot.send_video(chat_id, video=f, read_timeout=50)).video
@pytest.fixture
def video_file():
with data_file("telegram.mp4").open("rb") as f:
yield f
@pytest.fixture
def video_sticker_file():
with data_file("telegram_video_sticker.webm").open("rb") as f:
yield f
@pytest.fixture(scope="module")
def video_sticker(bot, chat_id):
with data_file("telegram_video_sticker.webm").open("rb") as f:
return bot.send_sticker(chat_id, sticker=f, timeout=50).sticker
@pytest.fixture(scope="session")
async def real_live_photo(bot, chat_id):
with (
data_file("telegram.jpg").open("rb") as photo,
data_file("telegram.mp4").open("rb") as video,
):
return (
await bot.send_live_photo(
chat_id,
live_photo=video,
photo=photo,
read_timeout=50,
)
).live_photo