| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { describe, expect, it } from 'vitest'
- import { DEFAULT_FALLBACK_PATH, getReturnToPath } from '@/lib/gotrue'
- describe(`getReturnToPath`, () => {
- it(`returns to ${DEFAULT_FALLBACK_PATH} when no fallback is provided`, () => {
- expect(getReturnToPath()).toBe(DEFAULT_FALLBACK_PATH)
- })
- it(`returns to /custom when fallback is provided`, () => {
- expect(getReturnToPath('/custom')).toBe('/custom')
- })
- it(`returns to /custom`, () => {
- // @ts-ignore
- delete window.location
- // @ts-ignore
- window.location = { search: `?returnTo=/custom` }
- expect(getReturnToPath()).toBe('/custom')
- })
- it(`returns to /custom?foo=bar`, () => {
- // @ts-ignore
- delete window.location
- // @ts-ignore
- window.location = { search: `?returnTo=/custom?foo=bar` }
- expect(getReturnToPath()).toBe('/custom?foo=bar')
- })
- it(`does not return to https://google.com`, () => {
- // @ts-ignore
- delete window.location
- // @ts-ignore
- window.location = { search: `?returnTo=https://google.com` }
- expect(getReturnToPath()).toBe(DEFAULT_FALLBACK_PATH)
- })
- it(`does not allow XSS`, () => {
- // @ts-ignore
- delete window.location
- // @ts-ignore
- window.location = { search: `?returnTo=javascript:alert(1)` }
- expect(getReturnToPath()).toBe(DEFAULT_FALLBACK_PATH)
- })
- it(`does not allow XSS with encoded characters`, () => {
- // @ts-ignore
- delete window.location
- // @ts-ignore
- window.location = { search: `?returnTo=javascript%3Aalert%281%29` }
- expect(getReturnToPath()).toBe(DEFAULT_FALLBACK_PATH)
- })
- })
|