jhjv / test_referral.py
kuro223's picture
666
994d93e
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Script de test pour le système de parrainage
Teste la génération des liens et le pré-remplissage des codes
"""
import sys
from flask import url_for
def test_referral_system():
"""Test du système de parrainage"""
print("=" * 60)
print("TEST DU SYSTÈME DE PARRAINAGE")
print("=" * 60)
try:
# Import de l'application
from app import create_app, db
from app.models import User
from config.config import config
app = create_app("default")
with app.app_context():
print("\n✅ Application chargée avec succès")
# Test 1: Vérifier la configuration BASE_URL
print("\n📌 Test 1: Configuration BASE_URL")
base_url = app.config.get("BASE_URL")
print(f" BASE_URL = {base_url}")
assert base_url is not None, "BASE_URL n'est pas configurée"
print(" ✅ BASE_URL configurée correctement")
# Test 2: Vérifier qu'un utilisateur existe
print("\n📌 Test 2: Récupération d'un utilisateur test")
user = User.query.first()
if user:
print(f" Utilisateur: {user.name}")
print(f" Code de parrainage: {user.referral_code}")
# Test 3: Générer le lien de parrainage
print("\n📌 Test 3: Génération du lien de parrainage")
referral_link = f"{base_url}/auth/register?ref={user.referral_code}"
print(f" Lien généré: {referral_link}")
print(" ✅ Lien généré avec succès")
# Test 4: Vérifier le format du lien
print("\n📌 Test 4: Validation du format du lien")
assert "/auth/register?ref=" in referral_link, "Format du lien invalide"
assert user.referral_code in referral_link, (
"Code de parrainage manquant"
)
print(" ✅ Format du lien valide")
# Test 5: Compter les filleuls
print("\n📌 Test 5: Statistiques de parrainage")
referred_users = User.query.filter_by(
referred_by_code=user.referral_code
).all()
print(f" Nombre de filleuls: {len(referred_users)}")
print(f" Gains bonus: {user.bonus_balance} FCFA")
print(" ✅ Statistiques récupérées")
else:
print(" ⚠️ Aucun utilisateur dans la base de données")
print(" Créez un utilisateur pour tester le système complet")
# Test 6: Vérifier les commissions configurées
print("\n📌 Test 6: Configuration des commissions")
commissions = app.config.get("REFERRAL_COMMISSION", {})
print(f" Niveau 1: {commissions.get('level_1', 0)}%")
print(f" Niveau 2: {commissions.get('level_2', 0)}%")
print(f" Niveau 3: {commissions.get('level_3', 0)}%")
print(" ✅ Commissions configurées")
# Test 7: Simuler un lien de parrainage
print("\n📌 Test 7: Simulation d'un lien de parrainage")
test_code = "ABC123"
test_link = f"{base_url}/auth/register?ref={test_code}"
print(f" Lien de test: {test_link}")
print(" ✅ Format compatible avec le système")
print("\n" + "=" * 60)
print("✅ TOUS LES TESTS SONT PASSÉS AVEC SUCCÈS !")
print("=" * 60)
print("\n📝 Instructions pour tester en production:")
print(" 1. Définissez BASE_URL dans vos variables d'environnement:")
print(" export BASE_URL=https://votredomaine.com")
print(" 2. Accédez au profil d'un utilisateur")
print(" 3. Cliquez sur 'Copier le lien'")
print(" 4. Ouvrez le lien dans un nouvel onglet")
print(" 5. Vérifiez que le code est pré-rempli\n")
return True
except ImportError as e:
print(f"\n❌ Erreur d'import: {e}")
print(" Assurez-vous que toutes les dépendances sont installées")
return False
except Exception as e:
print(f"\n❌ Erreur: {e}")
import traceback
traceback.print_exc()
return False
def test_whatsapp_message():
"""Test du message WhatsApp"""
print("\n" + "=" * 60)
print("TEST DU MESSAGE WHATSAPP")
print("=" * 60)
test_code = "ABC123"
test_link = "http://example.com/auth/register?ref=ABC123"
app_name = "Apex OresClone"
message = (
f"🎁 Rejoins-moi sur {app_name} et commence à investir dans les métaux précieux !\n\n"
f"Utilise mon lien de parrainage pour bénéficier d'un bonus d'inscription :\n"
f"{test_link}\n\n"
f"💰 Investis intelligemment et gagne de l'argent ensemble !"
)
print("\n📱 Message WhatsApp généré:")
print("-" * 60)
print(message)
print("-" * 60)
# Test de l'encodage URL
from urllib.parse import quote
encoded_message = quote(message)
whatsapp_url = f"https://wa.me/?text={encoded_message}"
print(f"\n🔗 URL WhatsApp (tronquée): {whatsapp_url[:100]}...")
print(" ✅ Message et URL générés correctement")
return True
def main():
"""Fonction principale"""
print("\n🚀 Démarrage des tests du système de parrainage\n")
success = True
# Test 1: Système de parrainage
if not test_referral_system():
success = False
# Test 2: Message WhatsApp
if not test_whatsapp_message():
success = False
# Résumé final
print("\n" + "=" * 60)
if success:
print("✅ TOUS LES TESTS RÉUSSIS")
print(" Le système de parrainage est opérationnel")
sys.exit(0)
else:
print("❌ CERTAINS TESTS ONT ÉCHOUÉ")
print(" Vérifiez les erreurs ci-dessus")
sys.exit(1)
if __name__ == "__main__":
main()