// La destination de retour arrive par l'URL : elle est fabricable par // n'importe qui, et un lien pieges ne doit pas pouvoir renvoyer l'utilisateur // hors du site apres un enregistrement. import { describe, expect, it } from 'vitest' import { cheminRetour } from '../src/utils/retour.js' describe('cheminRetour', () => { it('rend la page d analyse avec ses filtres', () => { const vue = '/analytics?immeuble_id=3&fournisseur=PPR&tag_id=0' expect(cheminRetour(vue)).toBe(vue) }) it('retombe sur la liste des documents quand rien n est demande', () => { expect(cheminRetour(undefined)).toBe('/documents') expect(cheminRetour('')).toBe('/documents') }) it('refuse ce qui sortirait du site', () => { // `//ailleurs.example` est un chemin protocol-relatif : le navigateur y lit // un domaine, pas une page de l'application. expect(cheminRetour('https://ailleurs.example')).toBe('/documents') expect(cheminRetour('//ailleurs.example')).toBe('/documents') expect(cheminRetour('/\\ailleurs.example')).toBe('/documents') expect(cheminRetour('analytics')).toBe('/documents') }) it('accepte le repli que l appelant lui donne', () => { expect(cheminRetour(null, '/revenus')).toBe('/revenus') }) it('ne retient que la premiere valeur quand le parametre est repete', () => { expect(cheminRetour(['/analytics', 'https://ailleurs.example'])).toBe('/analytics') }) })