113 lines
4.0 KiB
PowerShell
113 lines
4.0 KiB
PowerShell
# Test Hybrid Architecture (External JWT + Own DB)
|
|
# External Supabase = Authentication source of truth
|
|
# Own Supabase = Complementary data only
|
|
|
|
Write-Host "=== HYBRID ARCHITECTURE TEST ===" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
# 1. Login to External Supabase
|
|
Write-Host "[1/4] Logging into External Supabase..." -ForegroundColor Yellow
|
|
$loginBody = '{"email":"riseup@popcode.com.br","password":"riseup"}'
|
|
$externalApiKey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ"
|
|
|
|
try {
|
|
$loginResponse = Invoke-RestMethod `
|
|
-Uri "https://yuanqfswhberkoevtmfr.supabase.co/auth/v1/token?grant_type=password" `
|
|
-Method Post `
|
|
-Body $loginBody `
|
|
-ContentType "application/json" `
|
|
-Headers @{"apikey"=$externalApiKey}
|
|
|
|
$jwtToken = $loginResponse.access_token
|
|
Write-Host "✅ JWT Token obtained: $($jwtToken.Substring(0,40))..." -ForegroundColor Green
|
|
Write-Host ""
|
|
} catch {
|
|
Write-Host "❌ Login failed: $($_.Exception.Message)" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
# 2. Get a Doctor ID from External Supabase
|
|
Write-Host "[2/4] Fetching doctor from External Supabase..." -ForegroundColor Yellow
|
|
$extHeaders = @{
|
|
"apikey" = $externalApiKey
|
|
"Authorization" = "Bearer $jwtToken"
|
|
}
|
|
|
|
try {
|
|
$doctors = Invoke-RestMethod `
|
|
-Uri "https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/doctors?select=id,full_name&limit=1" `
|
|
-Headers $extHeaders
|
|
|
|
$doctorId = $doctors[0].id
|
|
$doctorName = $doctors[0].full_name
|
|
Write-Host "✅ Doctor: $doctorName (ID: $doctorId)" -ForegroundColor Green
|
|
Write-Host ""
|
|
} catch {
|
|
Write-Host "❌ Failed to fetch doctor: $($_.Exception.Message)" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
# 3. Deploy doctor-summary function
|
|
Write-Host "[3/4] Deploying doctor-summary function..." -ForegroundColor Yellow
|
|
try {
|
|
$deployOutput = pnpx supabase functions deploy doctor-summary 2>&1
|
|
Write-Host "✅ Function deployed" -ForegroundColor Green
|
|
Write-Host ""
|
|
Start-Sleep -Seconds 3
|
|
} catch {
|
|
Write-Host "⚠️ Deploy warning (continuing...)" -ForegroundColor Yellow
|
|
Write-Host ""
|
|
}
|
|
|
|
# 4. Test doctor-summary endpoint (External JWT + Own DB)
|
|
Write-Host "[4/4] Testing doctor-summary endpoint..." -ForegroundColor Yellow
|
|
Write-Host " External JWT: $($jwtToken.Substring(0,30))..." -ForegroundColor Gray
|
|
Write-Host " Own Endpoint: https://etblfypcxxtvvuqjkrgd.supabase.co/functions/v1/doctor-summary" -ForegroundColor Gray
|
|
Write-Host ""
|
|
|
|
$testBody = @{
|
|
doctor_id = $doctorId
|
|
} | ConvertTo-Json
|
|
|
|
# Use SERVICE_ROLE key in Authorization (bypass Edge Runtime JWT validation)
|
|
# External JWT passed in custom header for validation inside function
|
|
$ownServiceKey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImV0YmxmeXBjeHh0dnZ1cWprcmdkIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTc2NDE1NzM2MywiZXhwIjoyMDc5NzMzMzYzfQ.dJVEzm26MuxIEAzeeIOLd-83fFHhfX0Z7UgF4LEX-98"
|
|
|
|
$testHeaders = @{
|
|
"Authorization" = "Bearer $ownServiceKey"
|
|
"x-external-jwt" = $jwtToken
|
|
"apikey" = $ownServiceKey
|
|
"Content-Type" = "application/json"
|
|
}
|
|
|
|
try {
|
|
$result = Invoke-RestMethod `
|
|
-Uri "https://etblfypcxxtvvuqjkrgd.supabase.co/functions/v1/doctor-summary" `
|
|
-Method Post `
|
|
-Body $testBody `
|
|
-Headers $testHeaders
|
|
|
|
Write-Host "✅ SUCCESS! Hybrid architecture working!" -ForegroundColor Green
|
|
Write-Host ""
|
|
Write-Host "=== RESULT ===" -ForegroundColor Cyan
|
|
$result | ConvertTo-Json -Depth 4
|
|
Write-Host ""
|
|
|
|
} catch {
|
|
Write-Host "❌ Test failed: $($_.Exception.Message)" -ForegroundColor Red
|
|
|
|
# Try to get detailed error
|
|
try {
|
|
$reader = New-Object System.IO.StreamReader($_.Exception.Response.GetResponseStream())
|
|
$errorBody = $reader.ReadToEnd()
|
|
Write-Host "Error details: $errorBody" -ForegroundColor Red
|
|
} catch {
|
|
# Ignore
|
|
}
|
|
|
|
exit 1
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "=== TEST COMPLETE ===" -ForegroundColor Cyan
|