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

const CLIENT = 'https://hotel.example';

describe('resolveGameFrame', () => {
    it('refuses a URL that would run in the client origin', () => {
        expect(resolveGameFrame('javascript:alert(document.cookie)', [], CLIENT)).toBeNull();
        expect(resolveGameFrame('data:text/html,<script>1</script>', [], CLIENT)).toBeNull();
        expect(resolveGameFrame('', [], CLIENT)).toBeNull();
    });

    it('keeps to the hosts the hotel lists, when it lists any', () => {
        expect(resolveGameFrame('https://games.example/play', ['games.example'], CLIENT)?.src).toBe('https://games.example/play');
        expect(resolveGameFrame('https://elsewhere.example/play', ['games.example'], CLIENT)).toBeNull();
        expect(resolveGameFrame('https://elsewhere.example/play', [], CLIENT)?.src).toBe('https://elsewhere.example/play');
    });

    it('sandboxes the frame and keeps the client storage away from a same-origin game', () => {
        expect(resolveGameFrame('https://games.example/play', [], CLIENT)?.sandbox).toBe(
            'allow-scripts allow-forms allow-pointer-lock allow-popups allow-same-origin'
        );
        expect(resolveGameFrame('https://hotel.example/games/play', [], CLIENT)?.sandbox).toBe('allow-scripts allow-forms allow-pointer-lock allow-popups');
    });
});
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