import assert from 'node:assert/strict' import { test } from 'vitest' import { decideProfileDeleteAction, profileNameFromDeleteRequest, resolveRouteProfile } from './profile-delete-routing' // --------------------------------------------------------------------------- // profileNameFromDeleteRequest // --------------------------------------------------------------------------- test('profileNameFromDeleteRequest parses a DELETE /api/profiles/ path', () => { assert.equal(profileNameFromDeleteRequest({ method: 'DELETE', path: '/api/profiles/worker' }), 'worker') }) test('profileNameFromDeleteRequest lowercases the profile name', () => { assert.equal(profileNameFromDeleteRequest({ method: 'DELETE', path: '/api/profiles/Worker' }), 'worker') }) test('profileNameFromDeleteRequest returns null for non-DELETE methods', () => { assert.equal(profileNameFromDeleteRequest({ method: 'GET', path: '/api/profiles/worker' }), null) }) test('profileNameFromDeleteRequest returns null when the path does not match', () => { assert.equal(profileNameFromDeleteRequest({ method: 'DELETE', path: '/api/sessions' }), null) }) test('profileNameFromDeleteRequest returns null for an empty/whitespace name', () => { assert.equal(profileNameFromDeleteRequest({ method: 'DELETE', path: '/api/profiles/%20' }), null) }) test('profileNameFromDeleteRequest returns null for an undecodable path segment', () => { assert.equal(profileNameFromDeleteRequest({ method: 'DELETE', path: '/api/profiles/%E0%A4%A' }), null) }) // --------------------------------------------------------------------------- // decideProfileDeleteAction // --------------------------------------------------------------------------- const deps = { isDefaultProfile: p => p === 'default', isValidProfileName: p => /^[a-z0-9][a-z0-9_-]{0,63}$/.test(p), primaryProfileKey: () => 'primary-profile' } test('decideProfileDeleteAction is a noop for the default profile', () => { assert.deepEqual(decideProfileDeleteAction('default', deps), { action: 'noop', profile: null }) }) test('decideProfileDeleteAction is a noop for null (no profile parsed)', () => { assert.deepEqual(decideProfileDeleteAction(null, deps), { action: 'noop', profile: null }) }) test('decideProfileDeleteAction is a noop for an invalid profile name', () => { assert.deepEqual(decideProfileDeleteAction('Not Valid!', deps), { action: 'noop', profile: null }) }) test('decideProfileDeleteAction tears down the primary backend for the primary profile', () => { assert.deepEqual(decideProfileDeleteAction('primary-profile', deps), { action: 'teardown-primary', profile: 'primary-profile' }) }) test('decideProfileDeleteAction tears down the pool backend for any other valid profile', () => { assert.deepEqual(decideProfileDeleteAction('worker', deps), { action: 'teardown-pool', profile: 'worker' }) }) // --------------------------------------------------------------------------- // resolveRouteProfile // --------------------------------------------------------------------------- test('resolveRouteProfile routes to the primary backend (null) when a profile was torn down', () => { assert.equal(resolveRouteProfile('worker', 'other-profile'), null) }) test('resolveRouteProfile passes the requested profile through when nothing was torn down', () => { assert.equal(resolveRouteProfile(null, 'other-profile'), 'other-profile') }) test('resolveRouteProfile passes through undefined when nothing was torn down and no profile was requested', () => { assert.equal(resolveRouteProfile(null, undefined), undefined) })