import { describe, it, expect } from 'vitest' import { isValidFeed, getValidFeeds, sanitizeStreamUrl, sanitizeFeedForResponse } from '../../server/utils/feedUtils.js' describe('feedUtils', () => { describe('isValidFeed', () => { it('returns true for valid feed', () => { expect(isValidFeed({ id: '1', name: 'Cam', lat: 37.7, lng: -122.4, })).toBe(true) }) it('returns false for null', () => { expect(isValidFeed(null)).toBe(false) }) it('returns false for missing id', () => { expect(isValidFeed({ name: 'x', lat: 0, lng: 0 })).toBe(false) }) it('returns false for wrong lat type', () => { expect(isValidFeed({ id: '1', name: 'x', lat: '37', lng: -122 })).toBe(false) }) }) describe('getValidFeeds', () => { it('returns only valid feeds', () => { const list = [ { id: 'a', name: 'A', lat: 1, lng: 2 }, null, { id: 'b', name: 'B', lat: 3, lng: 4 }, ] expect(getValidFeeds(list)).toHaveLength(2) }) it('returns empty array for non-array', () => { expect(getValidFeeds(null)).toEqual([]) expect(getValidFeeds({})).toEqual([]) }) }) describe('sanitizeStreamUrl', () => { it('allows http and https', () => { expect(sanitizeStreamUrl('https://example.com/stream')).toBe('https://example.com/stream') expect(sanitizeStreamUrl('http://example.com/stream')).toBe('http://example.com/stream') }) it('returns empty for javascript:, data:, and other schemes', () => { expect(sanitizeStreamUrl('javascript:alert(1)')).toBe('') expect(sanitizeStreamUrl('data:text/html,