| |
| |
| """ |
| 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: |
| |
| 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") |
|
|
| |
| 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") |
|
|
| |
| 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}") |
|
|
| |
| 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") |
|
|
| |
| 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") |
|
|
| |
| 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") |
|
|
| |
| 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") |
|
|
| |
| 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) |
|
|
| |
| 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 |
|
|
| |
| if not test_referral_system(): |
| success = False |
|
|
| |
| if not test_whatsapp_message(): |
| success = False |
|
|
| |
| 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() |
|
|