import json from pathlib import Path from unittest.mock import patch import pytest from aiohttp import ClientSession from gestion_sport_connector import GestionSportsConnector from tests.unit_tests import responses def test_urls(connector, club): base_url = "https://ptf1.com" assert connector.landing_url == f"{base_url}/landing.html" assert connector.login_url == f"{base_url}/login.html" assert connector.booking_url == f"{base_url}/booking.html" assert connector.user_bookings_url == f"{base_url}/user_bookings.html" assert connector.cancel_url == f"{base_url}/cancel.html" assert connector.sessions_url == f"{base_url}/tournaments_sessions.php" assert connector.tournaments_url == f"{base_url}/tournaments_list.html?event=" @patch("config.get_resources_folder") def test_urls_payload_templates(mock_resources, club): path_to_resources = Path("some/path/to/resource") mock_resources.return_value = path_to_resources connector = GestionSportsConnector(club) assert ( connector.login_template == path_to_resources / "gestion-sports/login-payload.txt" ) assert ( connector.booking_template == path_to_resources / "gestion-sports/booking-payload.txt" ) assert ( connector.user_bookings_template == path_to_resources / "gestion-sports/user-bookings-payload.txt" ) assert ( connector.cancel_template == path_to_resources / "gestion-sports/booking-cancellation-payload.txt" ) assert ( connector.sessions_template == path_to_resources / "gestion-sports/tournament-sessions-payload.txt" ) @pytest.mark.asyncio async def test_landing_page(aioresponses, connector, landing_response): responses.make_landing_request_success(aioresponses, connector, landing_response) async with ClientSession() as session: response = await connector.land(session) assert response.status == 200 assert response.cookies.get("PHPSESSID").value == "987512" assert await response.text() == landing_response @pytest.mark.asyncio async def test_login_success(aioresponses, connector, user, login_success_response): responses.make_login_request_success( aioresponses, connector, login_success_response ) async with ClientSession() as session: response = await connector.login(session, user) assert response.status == 200 assert response.cookies.get("COOK_COMPTE").value == "e2be1" assert response.cookies.get("COOK_ID_CLUB").value == "22" assert response.cookies.get("COOK_ID_USER").value == "666" assert await response.json() == login_success_response @pytest.mark.asyncio async def test_login_failure(aioresponses, connector, user, login_failure_response): responses.make_login_request_fail(aioresponses, connector, login_failure_response) async with ClientSession() as session: response = await connector.login(session, user) assert response.status == 200 assert len(response.cookies) == 0 assert await response.json() == login_failure_response @pytest.mark.asyncio async def test_cancellation_request( aioresponses, connector, user_bookings_get_response, cancellation_response ): responses.set_hash_response(aioresponses, connector, user_bookings_get_response) responses.set_cancellation_response(aioresponses, connector, cancellation_response) async with ClientSession() as session: response = await connector.send_cancellation_request(session, 123, "hash") assert await response.json() == cancellation_response @pytest.mark.asyncio async def test_tournament_sessions( aioresponses, connector, user, tournament_sessions_json ): responses.set_tournaments_sessions_response( aioresponses, connector, tournament_sessions_json ) async with ClientSession() as session: response = await connector.send_session_request(session) assert response.status == 200 all_sessions = json.loads(await response.text()) sessions = all_sessions.get("Inscription tournois:school-outline") assert len(sessions) == 1 @pytest.mark.asyncio async def test_send_tournaments_request( aioresponses, connector, user, tournaments_html ): tournament_session_id = "255" responses.set_tournaments_list_response( aioresponses, connector, tournament_session_id, tournaments_html ) async with ClientSession() as session: response = await connector.send_tournaments_request( session, tournament_session_id ) assert "Complet" in await response.text()