frontend-api-token-model.test.js 1.0 KB

123456789101112131415161718192021222324252627
  1. import assert from 'node:assert/strict';
  2. import { test } from 'node:test';
  3. import {
  4. canCopyFullApiToken,
  5. formatApiTokenPrefix,
  6. getCopyableApiToken,
  7. getCreatedApiTokenSecret
  8. } from '../src/frontend/api-token-model.js';
  9. test('only exposes full API token when the create response includes the secret', () => {
  10. const created = { tokenPrefix: 'mh_123456789', token: 'mh_123456789.full-secret' };
  11. const listed = { tokenPrefix: 'mh_987654321' };
  12. assert.equal(canCopyFullApiToken(created), true);
  13. assert.equal(getCreatedApiTokenSecret(created), 'mh_123456789.full-secret');
  14. assert.equal(getCopyableApiToken(created), 'mh_123456789.full-secret');
  15. assert.equal(canCopyFullApiToken(listed), false);
  16. assert.equal(getCreatedApiTokenSecret(listed), '');
  17. assert.equal(getCopyableApiToken(listed), '');
  18. });
  19. test('formats token prefixes without pretending the full secret is available', () => {
  20. assert.equal(formatApiTokenPrefix({ tokenPrefix: 'mh_abcdef1234' }), 'mh_abcdef1234...');
  21. assert.equal(formatApiTokenPrefix({}), '-');
  22. });