Skip to content
← Public packages

@kody/salesforce

Salesforce REST helpers for identity, SOQL, multi-org routing, and error investigation.

src/smoke-test.ts

42 lines · 1.4 KB · TypeScript
import getUserInfo from './get-user-info.ts'
import { optionalString, requireRecord } from './types.ts'

export type SmokeTestInput = {
	/** Saved OAuth integration name. Defaults to `salesforce`. */
	integrationName?: string
}

/**
 * Verify Salesforce OAuth access without returning profile PII.
 * @example
 * import smokeTest from 'kody:@kody/salesforce/smoke-test'
 * const result = await smokeTest()
 * // Multi-org: await smokeTest({ integrationName: 'salesforce-sandbox' })
 */
export default async function smokeTest(
	params: Partial<SmokeTestInput> & Record<string, unknown> = {},
) {
	const input = requireRecord(params, 'smoke-test')
	const integrationName = optionalString(input.integrationName, 'integrationName')
	const user = await getUserInfo(integrationName ? { integrationName } : {})
	const restUrl = user.urls?.rest
	let instanceHost: string | null = null
	if (typeof restUrl === 'string' && restUrl.length > 0) {
		try {
			instanceHost = new URL(restUrl).host
		} catch {
			instanceHost = null
		}
	}

	return {
		ok: true,
		hasUserId: typeof user.user_id === 'string' && user.user_id.length > 0,
		hasOrganizationId:
			typeof user.organization_id === 'string' && user.organization_id.length > 0,
		hasInstanceUrl: instanceHost !== null,
		instanceHost,
		userType: typeof user.user_type === 'string' ? user.user_type : null,
		active: typeof user.active === 'boolean' ? user.active : null,
	}
}