apply-ddl.test.mjs
2.61 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { test } from 'node:test'
import assert from 'node:assert/strict'
import { dbEnvFromConfig, resolveDbConfig } from './apply-ddl.mjs'
// ── dbEnvFromConfig(config-vars.yaml database: → DB_* env-shape adapter)──
test('dbEnvFromConfig maps the database section to the DB_* shape', () => {
const env = dbEnvFromConfig({
database: { host: 'db.local', port: 3307, user: 'u', password: 'p@ss', schema: 'erp_test' },
})
assert.equal(env.DB_HOST, 'db.local')
assert.equal(env.DB_PORT, '3307') // coerced to string for resolveDbConfig
assert.equal(env.DB_USER, 'u')
assert.equal(env.DB_PASSWORD, 'p@ss')
assert.equal(env.DB_SCHEMA, 'erp_test')
})
test('dbEnvFromConfig tolerates a missing/empty config', () => {
assert.equal(dbEnvFromConfig({}).DB_HOST, undefined)
assert.equal(dbEnvFromConfig(null).DB_SCHEMA, undefined)
})
test('dbEnvFromConfig → resolveDbConfig round-trips a filled database section', () => {
const c = resolveDbConfig(dbEnvFromConfig({ database: { host: 'localhost', port: 3306, schema: 'erp_dev' } }))
assert.equal(c.host, 'localhost')
assert.equal(c.port, 3306)
assert.equal(c.database, 'erp_dev')
})
// ── resolveDbConfig(M1:DB_SCHEMA 是插件契约的 schema 键)─────────
test('resolveDbConfig maps DB_SCHEMA to database (plugin canonical key)', () => {
const c = resolveDbConfig({ DB_SCHEMA: 'erp_test', DB_USER: 'u', DB_PASS: 'p', DB_HOST: 'db.local', DB_PORT: '3307' })
assert.equal(c.database, 'erp_test')
assert.equal(c.host, 'db.local')
assert.equal(c.port, 3307)
assert.equal(c.user, 'u')
assert.equal(c.password, 'p')
})
test('resolveDbConfig honors DB_NAME / MYSQL_DATABASE aliases', () => {
assert.equal(resolveDbConfig({ DB_NAME: 'a' }).database, 'a')
assert.equal(resolveDbConfig({ MYSQL_DATABASE: 'b' }).database, 'b')
// DB_SCHEMA wins over aliases
assert.equal(resolveDbConfig({ DB_SCHEMA: 's', DB_NAME: 'a' }).database, 's')
})
test('resolveDbConfig fails closed when no schema key is present (M1)', () => {
assert.throws(() => resolveDbConfig({ DB_USER: 'root' }, 'config-vars.yaml'), /database\.schema/)
})
test('resolveDbConfig applies sane defaults for host/port/user/password', () => {
const c = resolveDbConfig({ DB_SCHEMA: 's' })
assert.equal(c.host, '127.0.0.1')
assert.equal(c.port, 3306)
assert.equal(c.user, 'root')
assert.equal(c.password, '')
})
test('resolveDbConfig rejects invalid ports', () => {
assert.throws(() => resolveDbConfig({ DB_SCHEMA: 'erp_test', DB_PORT: 'abc' }), /database\.port/)
assert.throws(() => resolveDbConfig({ DB_SCHEMA: 'erp_test', DB_PORT: '70000' }), /database\.port/)
})