#!/usr/bin/env python3
"""
Script de test pour vérifier les codes HTTP 410 (Gone)
Teste les anciennes URLs /youtube/ et /flux/
"""

import requests
import sys
from urllib.parse import urljoin

# Configuration
BASE_URL = "https://www.duhaz.fr"  # Changer en localhost pour tests locaux

# URLs à tester (les 13 pages en Soft 404)
test_urls = [
    "/youtube/tag/independants/",
    "/flux/hier/?pages=9",
    "/youtube/tag/fallout/",
    "/youtube/tag/jd/",
    "/flux/hier/?pages=2",
    "/youtube/tag/metrage/",
    "/youtube/outils/vignettes/",
    "/youtube/tag/360/",
    "/youtube/tag/2017/",
    "/youtube/tag/gym/",
    "/youtube/#/",
    "/youtube/tag/ark/",
    "/youtube/tag/fun/",
]

def test_gone_responses():
    """Teste que les URLs retournent bien un 410 Gone"""
    print("\n" + "="*70)
    print("TEST DES RÉPONSES HTTP 410 (GONE)")
    print("="*70)
    print(f"\nBase URL: {BASE_URL}")
    print(f"URLs à tester: {len(test_urls)}\n")
    
    success = 0
    failures = 0
    
    for url_path in test_urls:
        url = urljoin(BASE_URL, url_path)
        
        print(f"Test: {url_path}")
        
        try:
            # Ne pas suivre les redirections
            response = requests.get(url, allow_redirects=False, timeout=10)
            
            # Vérifier le code de statut
            if response.status_code == 410:
                print(f"  ✓ Code HTTP: {response.status_code} (Gone) - OK")
                print("  ✓ TEST RÉUSSI\n")
                success += 1
            elif response.status_code == 404:
                print(f"  ⚠️  Code HTTP: {response.status_code} (Not Found)")
                print("  ⚠️  Acceptable mais 410 serait mieux")
                print("  ~ TEST ACCEPTABLE\n")
                success += 1
            elif response.status_code in [301, 302, 307, 308]:
                print(f"  ✗ Code HTTP: {response.status_code} (Redirection)")
                print(f"  ✗ Attendu: 410 (Gone)")
                if 'Location' in response.headers:
                    print(f"  ✗ Redirige vers: {response.headers['Location']}")
                print("  ✗ TEST ÉCHOUÉ\n")
                failures += 1
            else:
                print(f"  ✗ Code HTTP: {response.status_code}")
                print(f"  ✗ Attendu: 410 (Gone)")
                print("  ✗ TEST ÉCHOUÉ\n")
                failures += 1
                
        except requests.RequestException as e:
            print(f"  ✗ Erreur de connexion: {e}")
            print("  ✗ TEST ÉCHOUÉ\n")
            failures += 1
    
    # Résumé
    print("=" * 70)
    print("RÉSUMÉ")
    print("=" * 70)
    print(f"Tests réussis: {success}/{len(test_urls)}")
    print(f"Tests échoués: {failures}/{len(test_urls)}")
    
    if failures == 0:
        print("\n✓ Tous les tests sont passés avec succès !")
        print("\n📊 Impact SEO attendu:")
        print("   - Google comprendra que ces pages n'existent plus")
        print("   - Les Soft 404 disparaîtront de la Search Console")
        print("   - Pas de pénalité SEO (code 410 est approprié)")
        return 0
    else:
        print(f"\n✗ {failures} test(s) ont échoué")
        return 1


if __name__ == "__main__":
    print("\n⚠️  IMPORTANT: Configuration du test")
    print(f"   URL de base: {BASE_URL}")
    print("\n   Pour tester en local, modifiez BASE_URL dans le script:")
    print('   BASE_URL = "http://localhost:8000"\n')
    
    input("Appuyez sur Entrée pour continuer...")
    
    exit_code = test_gone_responses()
    sys.exit(exit_code)
