Remediated test #1 results
This commit is contained in:
@@ -121,7 +121,7 @@ export const SettingsPage: React.FC = () => {
|
||||
const syncIntegrationMutation = useMutation({
|
||||
mutationFn: () => syncIntegration(true),
|
||||
onSuccess: () => {
|
||||
success('Backend Integration Synced', 'Direct POST /v1/api/integration/sync executed successfully.');
|
||||
success('Backend Integration Synced', 'System records and telemetry successfully synchronized.');
|
||||
queryClient.invalidateQueries({ queryKey: ['users'] });
|
||||
},
|
||||
onError: (err: any) => {
|
||||
@@ -260,7 +260,7 @@ export const SettingsPage: React.FC = () => {
|
||||
<div className="flex items-center gap-2">
|
||||
<span
|
||||
className="hidden sm:inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl text-[11px] font-medium bg-emerald-500/10 text-emerald-400 border border-emerald-500/20"
|
||||
title={getUserSyncRecord() ? `Endpoint: ${getUserSyncRecord()?.syncedEndpoint || '/v1/api/integration/sync'} (Synced in browser)` : 'Sync active in browser'}
|
||||
title="User directory synchronization active in browser"
|
||||
>
|
||||
<span className="w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse" />
|
||||
Browser Sync Saved
|
||||
@@ -553,7 +553,7 @@ export const SettingsPage: React.FC = () => {
|
||||
type="submit"
|
||||
disabled={searchingApplicant || !applicantSearchId.trim()}
|
||||
className="px-3.5 py-2 text-xs font-semibold text-white bg-blue-600 hover:bg-blue-500 rounded-xl transition cursor-pointer disabled:opacity-50"
|
||||
title="Lookup all invites (GET /v1/api/communications/invites/{applicantUserId})"
|
||||
title="Lookup all invites"
|
||||
>
|
||||
{searchingApplicant ? 'Searching...' : 'All Invites'}
|
||||
</button>
|
||||
@@ -562,7 +562,7 @@ export const SettingsPage: React.FC = () => {
|
||||
onClick={handleLookupSingleApplicantInvite}
|
||||
disabled={searchingApplicant || !applicantSearchId.trim()}
|
||||
className="px-3.5 py-2 text-xs font-semibold text-blue-300 bg-blue-500/10 hover:bg-blue-500/20 border border-blue-500/30 rounded-xl transition cursor-pointer disabled:opacity-50"
|
||||
title="Lookup primary invite (GET /v1/api/communications/invites/applicant/{applicantUserId})"
|
||||
title="Lookup primary invite"
|
||||
>
|
||||
Primary Invite
|
||||
</button>
|
||||
@@ -721,10 +721,10 @@ export const SettingsPage: React.FC = () => {
|
||||
<div>
|
||||
<h3 className="text-sm font-bold text-white flex items-center gap-2">
|
||||
<RefreshCw className="w-4 h-4 text-blue-400" />
|
||||
Backend Integration Sync Engine (POST /v1/api/integration/sync)
|
||||
Backend Integration Sync Engine
|
||||
</h3>
|
||||
<p className="text-xs text-slate-400 mt-1 max-w-2xl leading-relaxed">
|
||||
The integration sync endpoint provisions and synchronizes authenticated accounts with the backend security directory. To avoid hotspotting the backend during frequent navigation, synchronizations are locally persisted in the browser and refreshed on demand or when roles update.
|
||||
The integration sync service provisions and synchronizes authenticated accounts with the backend security directory. To avoid hotspotting the backend during frequent navigation, synchronizations are locally persisted in the browser and refreshed on demand or when roles update.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -734,7 +734,7 @@ export const SettingsPage: React.FC = () => {
|
||||
onClick={() => syncIntegrationMutation.mutate()}
|
||||
disabled={syncIntegrationMutation.isPending}
|
||||
className="inline-flex items-center gap-2 px-4 py-2 text-xs font-semibold text-white bg-blue-600 hover:bg-blue-500 rounded-xl shadow-lg shadow-blue-500/20 transition cursor-pointer disabled:opacity-50"
|
||||
title="Direct POST /v1/api/integration/sync call"
|
||||
title="Trigger synchronization with directory"
|
||||
>
|
||||
<RefreshCw className={`w-3.5 h-3.5 ${syncIntegrationMutation.isPending ? 'animate-spin' : ''}`} />
|
||||
{syncIntegrationMutation.isPending ? 'Syncing...' : 'Trigger Integration Sync'}
|
||||
@@ -769,19 +769,19 @@ export const SettingsPage: React.FC = () => {
|
||||
|
||||
<div className="p-4 bg-slate-900/60 rounded-xl border border-slate-800 space-y-2">
|
||||
<span className="text-[11px] font-semibold text-slate-400 uppercase tracking-wider block">
|
||||
OpenAPI Target Route
|
||||
Synchronization Service Profile
|
||||
</span>
|
||||
<div className="text-xs space-y-1.5 font-mono">
|
||||
<div>
|
||||
<span className="text-slate-500">HTTP Method:</span> <span className="text-emerald-400 font-bold">POST</span>
|
||||
<span className="text-slate-500">Service Mode:</span> <span className="text-emerald-400 font-bold">Secure Directory Handshake</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-slate-500">Endpoint Path:</span>{' '}
|
||||
<span className="text-cyan-400">/v1/api/integration/sync</span>
|
||||
<span className="text-slate-500">Sync Scope:</span>{' '}
|
||||
<span className="text-cyan-400">Authoritative User Directory & Security Claims</span>
|
||||
</div>
|
||||
<div>
|
||||
<span className="text-slate-500">Execution Target:</span>{' '}
|
||||
<span className="text-white">Authoritative User Directory Synchronization</span>
|
||||
<span className="text-slate-500">Service Status:</span>{' '}
|
||||
<span className="text-white">Operational & Connected</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1129,7 +1129,7 @@ export const SettingsPage: React.FC = () => {
|
||||
{loadingUserFreshDetail ? (
|
||||
<div className="p-6 text-center text-slate-400">
|
||||
<RefreshCw className="w-5 h-5 animate-spin mx-auto mb-2 text-blue-400" />
|
||||
Querying backend endpoint (GET /v1/api/users/{selectedUserForDetail.id})...
|
||||
Fetching user profile details...
|
||||
</div>
|
||||
) : (
|
||||
<div className="p-4 bg-slate-900/60 rounded-xl border border-slate-800 space-y-2">
|
||||
|
||||
Reference in New Issue
Block a user