| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { describe, expect, it } from 'vitest'
- import { httpEndpointUrlSchema, isValidHttpEndpointUrl } from './http-url'
- const schema = httpEndpointUrlSchema({
- requiredMessage: 'required',
- invalidMessage: 'invalid',
- prefixMessage: 'prefix',
- })
- describe('isValidHttpEndpointUrl', () => {
- it('accepts valid http and https endpoints', () => {
- expect(isValidHttpEndpointUrl('https://api.supabase.com/webhooks')).toBe(true)
- expect(isValidHttpEndpointUrl('http://localhost:3000/hooks')).toBe(true)
- expect(isValidHttpEndpointUrl('https://127.0.0.1:4318/v1/logs')).toBe(true)
- expect(isValidHttpEndpointUrl('https://[::1]:4318/v1/logs')).toBe(true)
- })
- it('rejects invalid endpoint URLs', () => {
- expect(isValidHttpEndpointUrl('https://webhook')).toBe(false)
- expect(isValidHttpEndpointUrl('ftp://api.supabase.com/webhooks')).toBe(false)
- expect(isValidHttpEndpointUrl('not a url')).toBe(false)
- })
- })
- describe('httpEndpointUrlSchema', () => {
- it('rejects empty values', () => {
- const result = schema.safeParse('')
- expect(result.success).toBe(false)
- if (!result.success) {
- expect(result.error.issues[0].message).toBe('required')
- }
- })
- it('rejects URLs without an http or https prefix', () => {
- const result = schema.safeParse('api.supabase.com/webhooks')
- expect(result.success).toBe(false)
- if (!result.success) {
- expect(result.error.issues[0].message).toBe('prefix')
- }
- })
- it('rejects incomplete hostnames', () => {
- const result = schema.safeParse('https://webhook')
- expect(result.success).toBe(false)
- if (!result.success) {
- expect(result.error.issues[0].message).toBe('invalid')
- }
- })
- it('accepts valid endpoints after trimming', () => {
- const result = schema.safeParse(' https://api.supabase.com/webhooks ')
- expect(result.success).toBe(true)
- if (result.success) {
- expect(result.data).toBe('https://api.supabase.com/webhooks')
- }
- })
- })
|