mirror of
https://github.com/supabase/supabase.git
synced 2026-06-22 01:02:52 +08:00
Feature ## What is the current behavior? Functions page on self-hosted differs from Platform ## What is the new behavior? Adds the possibility to try/test functions in Self-Host version. ## Summary by CodeRabbit * **Bug Fixes** * Improved edge function URL validation so testing works reliably both on-platform and off-platform, including proper URL handling for local setups. * **UI Improvements** * Moved the Test button in the edge functions interface for more consistent layout while preserving its behavior. * **Tests** * Expanded tests to cover platform-aware URL validation scenarios. --------- Co-authored-by: Charis Lam <26616127+charislam@users.noreply.github.com>
68 lines
2.5 KiB
TypeScript
68 lines
2.5 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
|
|
import { isValidEdgeFunctionURL } from './edgeFunctions'
|
|
|
|
describe('isValidEdgeFunctionURL', () => {
|
|
const validEdgeFunctionUrls = [
|
|
'https://projectref.supabase.co/functions/v1/hello-world',
|
|
'https://projectref.supabase.red/functions/v1/hello-world',
|
|
'https://projectref.supabase.red/functions/v3/hello-world',
|
|
'https://projectref.supabase.red/functions/v3/hello-world',
|
|
]
|
|
|
|
const validLocalEdgeFunctionsUrls = [
|
|
'https://projectref.notsupabase.com/functions/v1/test',
|
|
'https://notsupabase.com/functions/v1/test',
|
|
'http://localhost:54321/functions/v1/test-2',
|
|
'http://kong:8000/functions/v1/hello-world',
|
|
'https://127.0.0.1:54321/functions/v1/test-3',
|
|
'https://127.0.0.1:54321/functions/v1/test-5',
|
|
]
|
|
|
|
const invalidPlatformEdgeFunctionUrls = [
|
|
'https://notsupabase.com/functions/v1/test',
|
|
'https://projectref.notsupabase.com/functions/v1/test',
|
|
'https://localhost?https://aaaa.supabase.co/functions/v1/xxx',
|
|
'https://localhost:3000/?https://aaaa.supabase.co/functions/v1/xxx',
|
|
'http://localhost:3000/?https://aaaa.supabase.co/functions/v1/xxx',
|
|
]
|
|
|
|
const invalidEdgeFunctionUrls = [
|
|
'https://localhost?https://aaaa.supabase.co/functions/v1/xxx',
|
|
'https://localhost:3000/?https://aaaa.supabase.co/functions/v1/xxx',
|
|
'http://localhost:3000/?https://aaaa.supabase.co/functions/v1/xxx',
|
|
]
|
|
|
|
it('should match valid edge function URLs on platform', () => {
|
|
for (const url of validEdgeFunctionUrls) {
|
|
expect(isValidEdgeFunctionURL(url, true), `Expected ${url} to be valid`).toBe(true)
|
|
}
|
|
})
|
|
|
|
it('should not match local URLs on platform', () => {
|
|
for (const url of validLocalEdgeFunctionsUrls) {
|
|
expect(isValidEdgeFunctionURL(url, true), `Expected ${url} to be invalid on platform`).toBe(
|
|
false
|
|
)
|
|
}
|
|
})
|
|
|
|
it('should match valid local edge function URLs off platform', () => {
|
|
for (const url of validLocalEdgeFunctionsUrls) {
|
|
expect(isValidEdgeFunctionURL(url, false), `Expected ${url} to be valid`).toBe(true)
|
|
}
|
|
})
|
|
|
|
it('should not match invalid edge function URLs on platform', () => {
|
|
for (const url of invalidPlatformEdgeFunctionUrls) {
|
|
expect(isValidEdgeFunctionURL(url, true), `Expected ${url} to be invalid`).toBe(false)
|
|
}
|
|
})
|
|
|
|
it('should not match invalid edge function URLs off platform', () => {
|
|
for (const url of invalidEdgeFunctionUrls) {
|
|
expect(isValidEdgeFunctionURL(url, false), `Expected ${url} to be invalid`).toBe(false)
|
|
}
|
|
})
|
|
})
|