'use client' import { useState } from 'react' import { CheckCircle2, ExternalLink, Loader2, RefreshCw, TestTube, XCircle, } from 'lucide-react' import type { ConnectionTestResult, SSOConfig } from '../_types' import { API_BASE } from './constants' import { apiFetch, getTenantId } from './helpers' export function ConnectionTestPanel({ config }: { config: SSOConfig }) { const [testing, setTesting] = useState(false) const [result, setResult] = useState(null) const runTest = async () => { setTesting(true) setResult(null) try { const data = await apiFetch(`/configs/${config.id}/test`, { method: 'POST', }) setResult(data) } catch (err: unknown) { setResult({ success: false, message: err instanceof Error ? err.message : 'Verbindungstest fehlgeschlagen', }) } finally { setTesting(false) } } const openLoginFlow = () => { const loginUrl = `${API_BASE}/configs/${config.id}/login?tenant_id=${getTenantId()}` window.open(loginUrl, '_blank', 'width=600,height=700') } return (

Verbindungstest

{result && (
{result.success ? ( ) : ( )} {result.message}
{result.details && (
{result.details.issuer_reachable ? ( ) : ( )} Issuer erreichbar
{result.details.jwks_available ? ( ) : ( )} JWKS verfuegbar
{result.details.authorization_endpoint && (
Authorization: {result.details.authorization_endpoint}
)} {result.details.token_endpoint && (
Token: {result.details.token_endpoint}
)}
)}
)}
) }