File size: 1,470 Bytes
46252cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { isValidInstanceId, isValidInstanceSecret, parseInstanceConfig } from './instanceForm.ts';

test('isValidInstanceId accepts the backend charset, rejects the rest', () => {
  assert.equal(isValidInstanceId('acme-support_1'), true);
  assert.equal(isValidInstanceId(''), false);
  assert.equal(isValidInstanceId('has space'), false);
  assert.equal(isValidInstanceId('a'.repeat(65)), false);
  assert.equal(isValidInstanceId('bad:colon'), false);
});

test('isValidInstanceSecret: blank → auto-generate, short → rejected, >=16 → accepted', () => {
  assert.equal(isValidInstanceSecret(''), true);
  assert.equal(isValidInstanceSecret('   '), true); // whitespace-only = blank
  assert.equal(isValidInstanceSecret('too-short'), false);
  assert.equal(isValidInstanceSecret('x'.repeat(15)), false);
  assert.equal(isValidInstanceSecret('x'.repeat(16)), true);
  assert.equal(isValidInstanceSecret('  5t7oive8SuXwrnVgLEQs88gm  '), true); // padded real secret trims to valid
});

test('parseInstanceConfig: blank → undefined, object → parsed, invalid → not ok', () => {
  assert.deepEqual(parseInstanceConfig('   '), { ok: true, value: undefined });
  assert.deepEqual(parseInstanceConfig('{"a":1}'), { ok: true, value: { a: 1 } });
  assert.equal(parseInstanceConfig('nope').ok, false);
  assert.equal(parseInstanceConfig('[1,2]').ok, false); // array is not a config object
});