Skip to content

Tests — Better Auth Cloudflare + Système de Visibilité

Tests — Better Auth Cloudflare + Système de Visibilité

Guide de tests manuels pour l'authentification Better Auth et le système de visibilité Starlight

Tests Better Auth Cloudflare + Système de Visibilité

Prérequis

  • Serveur Astro dev actif OU wrangler dev (pour tests Better Auth)
  • Base D1 configurée : amn-auth-db-dev (ID: 9271edc1-a0fd-445d-99ab-d3e24bed2c4f)
  • KV namespace configuré : 4a990eb34db9430284b0961ac5d107dd
  • Variables d’environnement chargées (via .env et .dev.vars)

Important : Base de données pour les tests1/3

Pour les tests Better Auth (authentification, sessions) :

  • Utiliser task dev:wrangler au lieu de task dev
  • wrangler dev se connecte à la base D1 distante où la migration a été appliquée
  • Port : 8787 (http://localhost:8787)
  • Nécessite rebuild à chaque changement (task dev:wrangler le fait automatiquement)

Important : Base de données pour les tests2/3

Pour le développement front (sans auth) :

  • Utiliser task dev (astro dev)
  • Utilise une base SQLite locale temporaire
  • Port : 4321 (http://localhost:4321)
  • Plus rapide (hot reload)

Pourquoi ?

Important : Base de données pour les tests3/3

1. Tests de Validation Locale

1.1. Typecheck

Terminal window
cd apps/web
npx pnpm@12.3.4 astro check

Résultat attendu : 0 erreurs, 0 warnings

1.2. Build

Terminal window
cd apps/web
npx pnpm@12.3.4 astro build

Résultat attendu : Build réussi sans erreurs

2. Tests Better Auth

2.1. Test Initialisation Admin1/2

Endpoint : POST /api/auth/init-admin

Body :

{
"email": "admin@amn.dev",
"password": "SecurePassword123!"
}

2.1. Test Initialisation Admin2/2

Commande curl :

Terminal window
curl -X POST http://localhost:8787/api/auth/init-admin \
-H "Content-Type: application/json" \
-d '{"email":"admin@amn.devs","password":"SecurePassword123!"}'

Résultat attendu :

  • Succès : {"success": true, "user": {...}}
  • Erreur si admin existe déjà : User already exists

2.2. Test Login1/2

Endpoint : POST /api/auth/sign-in/email

Body :

{
"email": "admin@amn.dev",
"password": "SecurePassword123!"
}

2.2. Test Login2/2

Commande curl :

Terminal window
curl -X POST http://localhost:8787/api/auth/sign-in/email \
-H "Content-Type: application/json" \
-d '{"email":"admin@amn.dev","password":"SecurePassword123!","callbackURL":"/"}' \
-c cookies.txt

Résultat attendu :

  • Succès : User object avec session
  • Cookies sauvegardés dans cookies.txt

2.3. Test Session Validation

Endpoint : GET /api/auth/get-session

Commande curl :

Terminal window
curl -X GET http://localhost:8787/api/auth/get-session \
-b cookies.txt

Résultat attendu :

  • Session active : User object retourné
  • Session inactive : null ou error

2.4. Test Logout

Endpoint : POST /api/auth/sign-out

Commande curl :

Terminal window
curl -X POST http://localhost:8787/api/auth/sign-out \
-b cookies.txt \
-c cookies-new.txt

Résultat attendu :

  • Succès : Session invalidée
  • Cookies expirés dans cookies-new.txt

3. Tests Système de Visibilité

3.1. Test Document Public

Document : /getting-started/01-setup-local/ (doit avoir visibility: public)

Test sans authentification :

Terminal window
curl -I http://localhost:8787/getting-started/01-setup-local/

Résultat attendu :

  • HTTP/1.1 200 OK
  • Page rendue normalement

3.2. Test Document Privé1/2

Document : /docs/l2_presentation/astro/starlight/ (doit avoir visibility: private par défaut)

Test sans authentification :

Terminal window
curl -I http://localhost:8787/docs/l2_presentation/astro/starlight/

Résultat attendu :

  • HTTP/1.1 302 Found (redirect vers login)
  • Location: /login

3.2. Test Document Privé2/2

Test avec authentification :

Terminal window
curl -I http://localhost:8787/docs/l2_presentation/astro/starlight/ \
-b cookies.txt

Résultat attendu :

  • HTTP/1.1 200 OK
  • Page rendue normalement

3.3. Test Page Login

URL : http://localhost:8787/login

Test navigation :

  • Ouvrir dans navigateur
  • Vérifier formulaire de login présent
  • Tester soumission avec credentials valides

Résultat attendu :

  • Formulaire affiché
  • Après login, redirection vers page demandée ou home

4. Tests Middleware

4.1. Test Routes Protégées1/3

Routes testées :

  • /docs/* (privé par défaut)
  • /getting-started/* (selon visibility frontmatter)
  • /overview (public exception)

4.1. Test Routes Protégées2/3

Test :

Terminal window
# Test sans auth
curl -I http://localhost:8787/docs/
# Test avec auth
curl -I http://localhost:8787/docs/ -b cookies.txt

4.1. Test Routes Protégées3/3

Résultat attendu :

  • Sans auth : Redirect vers /login
  • Avec auth : 200 OK

4.2. Test Override Visibility

Action : Ajouter visibility: public à un document privé

Test :

  1. Modifier frontmatter d’un document privé
  2. Recharger le serveur dev
  3. Tester accès sans authentification

Résultat attendu :

  • Document accessible sans authentification

5. Tests Sécurité

5.1. Test Cookies1/2

Vérification :

  • Cookies HttpOnly (non accessibles via JavaScript)
  • Cookies Secure (en prod uniquement)
  • Cookies SameSite configuré

Test navigateur :

  1. Ouvrir DevTools → Application → Cookies
  2. Vérifier propriétés des cookies Better Auth

5.1. Test Cookies2/2

Résultat attendu :

  • HttpOnly: true
  • Secure: false (dev), true (prod)
  • SameSite: Lax ou Strict

5.2. Test Session Expiration

Action :

  1. Se connecter
  2. Attendre expiration session (7 jours par défaut)
  3. Tenter d’accéder à une page privée

Résultat attendu :

  • Redirect vers login après expiration

5.3. Test CSRF Protection

Note : Better Auth inclut automatiquement la protection CSRF via des tokens dans les formulaires.

Test :

  • Les requêtes POST doivent inclure un token CSRF valide
  • Les requêtes sans token doivent être rejetées

6. Tests Integration

6.1. Test Flux Complet1/2

Scénario :

  1. Accéder à un document privé sans auth → Redirect login
  2. Se connecter via /login → Redirect document
  3. Naviguer dans les docs privés → Accès autorisé
  4. Se déconnecter → Redirect home
  5. Tenter d’accéder document privé → Redirect login

6.1. Test Flux Complet2/2

Résultat attendu :

  • Flux complet fonctionnel
  • Redirections correctes
  • Sessions gérées correctement

6.2. Test Multiple Sessions

Action :

  1. Se connecter depuis navigateur A
  2. Se connecter depuis navigateur B
  3. Se déconnecter depuis navigateur A
  4. Vérifier session navigateur B

Résultat attendu :

  • Sessions indépendantes
  • Logout A n’affecte pas B

7. Checklist de Validation

7.1. Validation Technique

  • Typecheck réussi (0 erreurs)
  • Build réussi
  • Serveur dev démarre sans erreurs
  • Better Auth endpoints répondent
  • Middleware intercepte les routes

7.2. Validation Fonctionnelle

  • Login fonctionne
  • Logout fonctionne
  • Documents privés inaccessibles sans auth
  • Documents publics accessibles sans auth
  • Redirections fonctionnent

7.3. Validation Sécurité

  • Credentials sécurisés via .env
  • Cookies HttpOnly configurés
  • Protection CSRF active
  • Sessions expirées correctement

7.4. Validation Visibilité

  • Champ visibility respecté
  • Documents publics accessibles
  • Documents privés protégés
  • Override visibility fonctionne

8. Dépannage

8.1. Erreur “Cloudflare context required”

Cause : IP detection ou geolocation activé en dev local Solution : Désactiver via variables d’environnement :

Terminal window
BETTER_AUTH_AUTO_DETECT_IP=false
BETTER_AUTH_GEOLOCATION_TRACKING=false

8.2. Erreur “Drizzle schema mismatch”

Cause : Configuration usePlural incorrecte Solution : Vérifier que usePlural: false dans src/auth/index.ts

8.3. Erreur “Database connection failed”

Cause : D1 non configuré ou secret manquant Solution :

  • Vérifier AUTH_DB_ID dans .env
  • Vérifier binding D1 dans wrangler.jsonc
  • Ré-exécuter ./scripts/inject_secret_to_cloudflare.sh --env=dev --service=web

8.4. Session non persistante

Cause : KV non configuré ou cookie settings incorrects Solution :

  • Vérifier AUTH_KV_ID dans .env
  • Vérifier binding KV dans wrangler.jsonc
  • Vérifier configuration cookies dans Better Auth

9. Prochaines Étapes1/2

Après validation des tests :

  1. Corriger les problèmes identifiés
  2. Re-tester les corrections
  3. Passer à Phase 5 : Intégration et Documentation
  4. Préparer déploiement dev via GitHub Actions

9. Prochaines Étapes2/2

Statut du document : TEST (Guide de tests manuels) Dernière mise à jour : 2026-09-27

Switch to normal mode

Contents