5180 fichiers 38.5 Mo 0 téléchargements 234 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / api / octane / resolveHabboPageUrl.test.ts
resolveHabboPageUrl.test.ts 1.5 Ko Télécharger le fichier
import { describe, expect, it } from 'vitest';
import { resolveHabboPageUrl } from './resolveHabboPageUrl';

const LOCATION = 'https://hotel.example/client/';

describe('resolveHabboPageUrl', () => {
    it('resolves a page inside the folder', () => {
        expect(resolveHabboPageUrl('/gamedata/habbopages/', 'help/rules', LOCATION)).toBe('https://hotel.example/gamedata/habbopages/help/rules');
        expect(resolveHabboPageUrl('https://cdn.example/pages/', 'faq', LOCATION)).toBe('https://cdn.example/pages/faq');
    });

    it('rejects paths that leave the folder', () => {
        expect(resolveHabboPageUrl('/gamedata/habbopages/', '../../api/user', LOCATION)).toBeNull();
        expect(resolveHabboPageUrl('/gamedata/habbopages/', '%2e%2e/%2e%2e/api/user', LOCATION)).toBeNull();
        expect(resolveHabboPageUrl('/gamedata/habbopages/', 'a/..%2F..%2Fapi', LOCATION)).toBeNull();
        expect(resolveHabboPageUrl('/gamedata/habbopages/', '..\\api', LOCATION)).toBeNull();
    });

    it('rejects other hosts and schemes', () => {
        expect(resolveHabboPageUrl('/gamedata/habbopages/', '/evil.example/x', LOCATION)).toBeNull();
        expect(resolveHabboPageUrl('/gamedata/habbopages/', 'javascript:alert(1)', LOCATION)).toBeNull();
    });

    it('rejects bad encoding and empty input', () => {
        expect(resolveHabboPageUrl('/gamedata/habbopages/', '%E0%A4%A', LOCATION)).toBeNull();
        expect(resolveHabboPageUrl('', 'faq', LOCATION)).toBeNull();
    });
});
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser