#!/usr/bin/env python3
"""
Тестирование запланированных постов
"""
import asyncio
import aiohttp
from datetime import datetime, timedelta, timezone
import sys
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent
sys.path.insert(0, str(BASE_DIR))
from config import WEB_ADMIN_LOGIN, WEB_ADMIN_PASSWORD
async def test_scheduled_posts():
"""Тест создание запланированного поста"""
# Базовый URL веб-панели
base_url = "http://localhost:8000"
# Данные для аутентификации из конфига
auth = aiohttp.BasicAuth(WEB_ADMIN_LOGIN, WEB_ADMIN_PASSWORD)
print(f"🔐 Используем логин: {WEB_ADMIN_LOGIN}")
# Время через 2 минуты от сейчас
scheduled_time = datetime.now(timezone.utc) + timedelta(minutes=2)
# Тест 1: Создание поста
print("\n📅 Тест 1: Создание запланированного поста...")
form_data = aiohttp.FormData()
form_data.add_field('text', '🗑️ Юмор про мусор #1\n\nПочему мусорный бак всегда полон? Потому что у него нет проблемы с переполнением! 😂')
form_data.add_field('topic_name', 'memes')
form_data.add_field('recipients', 'chat_only')
form_data.add_field('scheduled_time', scheduled_time.isoformat())
try:
async with aiohttp.ClientSession() as session:
async with session.post(
f"{base_url}/api/scheduled_posts/create",
auth=auth,
data=form_data
) as resp:
result = await resp.json()
print(f"Ответ: {result}")
if result.get('success'):
print(f"✅ Пост создан! ID: {result.get('post_id')}")
else:
print(f"❌ Ошибка: {result.get('error')}")
return
except Exception as e:
print(f"❌ Ошибка запроса: {e}")
return
# Тест 2: Получение списка постов
print("\n📋 Тест 2: Получение списка постов...")
try:
async with aiohttp.ClientSession() as session:
async with session.get(
f"{base_url}/api/scheduled_posts/list",
auth=auth
) as resp:
result = await resp.json()
print(f"Найдено постов: {len(result.get('posts', []))}")
for post in result.get('posts', []):
print(f" - ID {post['id']}: {post['topic_name']} в {post['scheduled_time']} [{post['status']}]")
except Exception as e:
print(f"❌ Ошибка запроса: {e}")
return
print("\n✅ Тесты завершены!")
print(f"⏳ Подожди 2 минуты и проверь что пост опубликовался автоматически!")
print(f"📱 Тебе придёт уведомление в Telegram когда пост будет опубликован!")
if __name__ == '__main__':
asyncio.run(test_scheduled_posts())