From f1dfb4bdf74126b1c9708954fcfcc7bb14513c40 Mon Sep 17 00:00:00 2001 From: Matt Simerson Date: Sun, 12 Apr 2026 11:31:31 -0500 Subject: [PATCH 1/2] more factory files reorg --- lib/group/store/mysql.js | 2 +- lib/{ => group}/test/group.json | 0 lib/group/{test.js => test/index.js} | 2 +- lib/nameserver/index.js | 18 ++++++++ lib/nameserver/store/base.js | 44 +++++++++++++++++++ .../store/mysql.js} | 10 +++-- .../test/index.js} | 4 +- lib/{ => nameserver}/test/nameserver.json | 0 lib/{permission.js => permission/index.js} | 4 +- .../test/index.js} | 12 ++--- lib/{ => permission}/test/permission.json | 0 lib/user/store/mysql.js | 2 +- lib/user/{test.js => test/index.js} | 8 ++-- lib/{ => user}/test/user.json | 0 lib/zone.js | 1 - lib/zone/{test.js => test/index.js} | 4 +- lib/{ => zone}/test/zone.json | 0 lib/zone_record.js | 1 - lib/zone_record/store/base.js | 42 ++++++++++++++++++ lib/zone_record/store/mysql.js | 6 ++- .../test/index.js} | 7 ++- lib/{ => zone_record}/test/rrs/a.json | 0 lib/{ => zone_record}/test/rrs/aaaa.json | 0 lib/{ => zone_record}/test/rrs/caa.json | 0 lib/{ => zone_record}/test/rrs/cert.json | 0 lib/{ => zone_record}/test/rrs/cname.json | 0 lib/{ => zone_record}/test/rrs/dname.json | 0 lib/{ => zone_record}/test/rrs/dnskey.json | 0 lib/{ => zone_record}/test/rrs/ds.json | 0 lib/{ => zone_record}/test/rrs/hinfo.json | 0 lib/{ => zone_record}/test/rrs/https.json | 0 lib/{ => zone_record}/test/rrs/ipseckey.json | 0 lib/{ => zone_record}/test/rrs/key.json | 0 lib/{ => zone_record}/test/rrs/loc.json | 0 lib/{ => zone_record}/test/rrs/mx.json | 0 lib/{ => zone_record}/test/rrs/naptr.json | 0 lib/{ => zone_record}/test/rrs/ns.json | 0 lib/{ => zone_record}/test/rrs/nsec.json | 0 lib/{ => zone_record}/test/rrs/nsec3.json | 0 .../test/rrs/nsec3param.json | 0 lib/{ => zone_record}/test/rrs/nxt.json | 0 .../test/rrs/openpgpkey.json | 0 lib/{ => zone_record}/test/rrs/ptr.json | 0 lib/{ => zone_record}/test/rrs/smimea.json | 0 lib/{ => zone_record}/test/rrs/soa.json | 0 lib/{ => zone_record}/test/rrs/spf.json | 0 lib/{ => zone_record}/test/rrs/srv.json | 0 lib/{ => zone_record}/test/rrs/sshfp.json | 0 lib/{ => zone_record}/test/rrs/svcb.json | 0 lib/{ => zone_record}/test/rrs/tlsa.json | 0 lib/{ => zone_record}/test/rrs/txt.json | 0 lib/{ => zone_record}/test/rrs/uri.json | 0 routes/nameserver.js | 2 +- routes/nameserver.test.js | 2 +- routes/permission.js | 2 +- routes/permission.test.js | 2 +- routes/session.test.js | 2 +- routes/zone.js | 2 +- routes/zone.test.js | 2 +- routes/zone_record.js | 4 +- routes/zone_record.test.js | 4 +- test-fixtures.js | 14 +++--- test.sh | 2 +- 63 files changed, 155 insertions(+), 50 deletions(-) rename lib/{ => group}/test/group.json (100%) rename lib/group/{test.js => test/index.js} (97%) create mode 100644 lib/nameserver/index.js create mode 100644 lib/nameserver/store/base.js rename lib/{nameserver.js => nameserver/store/mysql.js} (94%) rename lib/{nameserver.test.js => nameserver/test/index.js} (94%) rename lib/{ => nameserver}/test/nameserver.json (100%) rename lib/{permission.js => permission/index.js} (99%) rename lib/{permission.test.js => permission/test/index.js} (87%) rename lib/{ => permission}/test/permission.json (100%) rename lib/user/{test.js => test/index.js} (95%) rename lib/{ => user}/test/user.json (100%) delete mode 100644 lib/zone.js rename lib/zone/{test.js => test/index.js} (95%) rename lib/{ => zone}/test/zone.json (100%) delete mode 100644 lib/zone_record.js create mode 100644 lib/zone_record/store/base.js rename lib/{zone_record.test.js => zone_record/test/index.js} (93%) rename lib/{ => zone_record}/test/rrs/a.json (100%) rename lib/{ => zone_record}/test/rrs/aaaa.json (100%) rename lib/{ => zone_record}/test/rrs/caa.json (100%) rename lib/{ => zone_record}/test/rrs/cert.json (100%) rename lib/{ => zone_record}/test/rrs/cname.json (100%) rename lib/{ => zone_record}/test/rrs/dname.json (100%) rename lib/{ => zone_record}/test/rrs/dnskey.json (100%) rename lib/{ => zone_record}/test/rrs/ds.json (100%) rename lib/{ => zone_record}/test/rrs/hinfo.json (100%) rename lib/{ => zone_record}/test/rrs/https.json (100%) rename lib/{ => zone_record}/test/rrs/ipseckey.json (100%) rename lib/{ => zone_record}/test/rrs/key.json (100%) rename lib/{ => zone_record}/test/rrs/loc.json (100%) rename lib/{ => zone_record}/test/rrs/mx.json (100%) rename lib/{ => zone_record}/test/rrs/naptr.json (100%) rename lib/{ => zone_record}/test/rrs/ns.json (100%) rename lib/{ => zone_record}/test/rrs/nsec.json (100%) rename lib/{ => zone_record}/test/rrs/nsec3.json (100%) rename lib/{ => zone_record}/test/rrs/nsec3param.json (100%) rename lib/{ => zone_record}/test/rrs/nxt.json (100%) rename lib/{ => zone_record}/test/rrs/openpgpkey.json (100%) rename lib/{ => zone_record}/test/rrs/ptr.json (100%) rename lib/{ => zone_record}/test/rrs/smimea.json (100%) rename lib/{ => zone_record}/test/rrs/soa.json (100%) rename lib/{ => zone_record}/test/rrs/spf.json (100%) rename lib/{ => zone_record}/test/rrs/srv.json (100%) rename lib/{ => zone_record}/test/rrs/sshfp.json (100%) rename lib/{ => zone_record}/test/rrs/svcb.json (100%) rename lib/{ => zone_record}/test/rrs/tlsa.json (100%) rename lib/{ => zone_record}/test/rrs/txt.json (100%) rename lib/{ => zone_record}/test/rrs/uri.json (100%) diff --git a/lib/group/store/mysql.js b/lib/group/store/mysql.js index 095d5a6..3f1a214 100644 --- a/lib/group/store/mysql.js +++ b/lib/group/store/mysql.js @@ -1,6 +1,6 @@ import Mysql from '../../mysql.js' import GroupBase from './base.js' -import Permission from '../../permission.js' +import Permission from '../../permission/index.js' import { mapToDbColumn } from '../../util.js' const groupDbMap = { id: 'nt_group_id', parent_gid: 'parent_group_id' } diff --git a/lib/test/group.json b/lib/group/test/group.json similarity index 100% rename from lib/test/group.json rename to lib/group/test/group.json diff --git a/lib/group/test.js b/lib/group/test/index.js similarity index 97% rename from lib/group/test.js rename to lib/group/test/index.js index 1075628..8321670 100644 --- a/lib/group/test.js +++ b/lib/group/test/index.js @@ -1,7 +1,7 @@ import assert from 'node:assert/strict' import { describe, it, after, before } from 'node:test' -import Group from './index.js' +import Group from '../index.js' import testCase from '../test/group.json' with { type: 'json' } diff --git a/lib/nameserver/index.js b/lib/nameserver/index.js new file mode 100644 index 0000000..5338462 --- /dev/null +++ b/lib/nameserver/index.js @@ -0,0 +1,18 @@ +const storeType = process.env.NICTOOL_DATA_STORE ?? 'mysql' + +let RepoClass +switch (storeType) { + case 'toml': + RepoClass = (await import('./store/toml.js')).default + break + case 'mongodb': + RepoClass = (await import('./store/mongodb.js')).default + break + case 'elasticsearch': + RepoClass = (await import('./store/elasticsearch.js')).default + break + default: + RepoClass = (await import('./store/mysql.js')).default +} + +export default new RepoClass() diff --git a/lib/nameserver/store/base.js b/lib/nameserver/store/base.js new file mode 100644 index 0000000..0c5e7be --- /dev/null +++ b/lib/nameserver/store/base.js @@ -0,0 +1,44 @@ +/** + * Nameserver store base class – pure attributes and business logic. + * + * Has zero knowledge of how nameservers are persisted. All nameserver repository classes + * must extend this class and implement the repo contract methods. + * + * Repo contract: + * get(args) → object[] + * create(args) → number (zoneId) + * put(args) → boolean + * delete(args) → boolean + * destroy(args) → boolean + */ +class NameserverBase { + constructor(args = {}) { + this.debug = args?.debug ?? false + } + + // ------------------------------------------------------------------------- + // Repo contract – subclasses must implement these + // ------------------------------------------------------------------------- + + async get(_args) { + throw new Error('get() not implemented by this repo') + } + + async create(_args) { + throw new Error('create() not implemented by this repo') + } + + async put(_args) { + throw new Error('put() not implemented by this repo') + } + + async delete(_args) { + throw new Error('delete() not implemented by this repo') + } + + async destroy(_args) { + throw new Error('destroy() not implemented by this repo') + } +} + +export default NameserverBase diff --git a/lib/nameserver.js b/lib/nameserver/store/mysql.js similarity index 94% rename from lib/nameserver.js rename to lib/nameserver/store/mysql.js index cc9fc3c..2b04a20 100644 --- a/lib/nameserver.js +++ b/lib/nameserver/store/mysql.js @@ -1,11 +1,13 @@ -import Mysql from './mysql.js' -import { mapToDbColumn } from './util.js' +import Mysql from '../../mysql.js' +import NameserverBase from './base.js' +import { mapToDbColumn } from '../../util.js' const nsDbMap = { id: 'nt_nameserver_id', gid: 'nt_group_id' } const boolFields = ['deleted', 'export_serials'] -class Nameserver { +class Nameserver extends NameserverBase { constructor() { + super() this.mysql = Mysql } @@ -94,7 +96,7 @@ class Nameserver { } } -export default new Nameserver() +export default Nameserver function dbToObject(rows) { for (const row of rows) { diff --git a/lib/nameserver.test.js b/lib/nameserver/test/index.js similarity index 94% rename from lib/nameserver.test.js rename to lib/nameserver/test/index.js index b4d8113..f183d73 100644 --- a/lib/nameserver.test.js +++ b/lib/nameserver/test/index.js @@ -1,9 +1,9 @@ import assert from 'node:assert/strict' import { describe, it, after, before } from 'node:test' -import Nameserver from './nameserver.js' +import Nameserver from '../index.js' -import testCase from './test/nameserver.json' with { type: 'json' } +import testCase from './nameserver.json' with { type: 'json' } before(async () => { await Nameserver.destroy({ id: testCase.id }) diff --git a/lib/test/nameserver.json b/lib/nameserver/test/nameserver.json similarity index 100% rename from lib/test/nameserver.json rename to lib/nameserver/test/nameserver.json diff --git a/lib/permission.js b/lib/permission/index.js similarity index 99% rename from lib/permission.js rename to lib/permission/index.js index d5861a0..ef3883f 100644 --- a/lib/permission.js +++ b/lib/permission/index.js @@ -1,5 +1,5 @@ -import Mysql from './mysql.js' -import { mapToDbColumn } from './util.js' +import Mysql from '../mysql.js' +import { mapToDbColumn } from '../util.js' const permDbMap = { id: 'nt_perm_id', diff --git a/lib/permission.test.js b/lib/permission/test/index.js similarity index 87% rename from lib/permission.test.js rename to lib/permission/test/index.js index c6f5525..bac4705 100644 --- a/lib/permission.test.js +++ b/lib/permission/test/index.js @@ -1,13 +1,13 @@ import assert from 'node:assert/strict' import { describe, it, after, before } from 'node:test' -import Group from './group/index.js' -import User from './user/index.js' -import Permission from './permission.js' +import Group from '../../group/index.js' +import User from '../../user/index.js' +import Permission from '../index.js' -import groupTestCase from './test/group.json' with { type: 'json' } -import userTestCase from './test/user.json' with { type: 'json' } -import permTestCase from './test/permission.json' with { type: 'json' } +import groupTestCase from '../../group/test/group.json' with { type: 'json' } +import userTestCase from '../../user/test/user.json' with { type: 'json' } +import permTestCase from './permission.json' with { type: 'json' } before(async () => { await Group.create(groupTestCase) diff --git a/lib/test/permission.json b/lib/permission/test/permission.json similarity index 100% rename from lib/test/permission.json rename to lib/permission/test/permission.json diff --git a/lib/user/store/mysql.js b/lib/user/store/mysql.js index 8fb243f..88db192 100644 --- a/lib/user/store/mysql.js +++ b/lib/user/store/mysql.js @@ -1,7 +1,7 @@ import Mysql from '../../mysql.js' import Config from '../../config.js' import UserBase from './base.js' -import Permission from '../../permission.js' +import Permission from '../../permission/index.js' import { mapToDbColumn } from '../../util.js' const userDbMap = { id: 'nt_user_id', gid: 'nt_group_id' } diff --git a/lib/user/test.js b/lib/user/test/index.js similarity index 95% rename from lib/user/test.js rename to lib/user/test/index.js index 2adb1ec..37af994 100644 --- a/lib/user/test.js +++ b/lib/user/test/index.js @@ -1,11 +1,11 @@ import assert from 'node:assert/strict' import { describe, it, after, before } from 'node:test' -import User from './index.js' -import Group from '../group/index.js' +import User from '../index.js' +import Group from '../../group/index.js' -import userCase from '../test/user.json' with { type: 'json' } -import groupCase from '../test/group.json' with { type: 'json' } +import userCase from './user.json' with { type: 'json' } +import groupCase from '../../group/test/group.json' with { type: 'json' } before(async () => { await Group.create(groupCase) diff --git a/lib/test/user.json b/lib/user/test/user.json similarity index 100% rename from lib/test/user.json rename to lib/user/test/user.json diff --git a/lib/zone.js b/lib/zone.js deleted file mode 100644 index a6978d7..0000000 --- a/lib/zone.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from './zone/index.js' diff --git a/lib/zone/test.js b/lib/zone/test/index.js similarity index 95% rename from lib/zone/test.js rename to lib/zone/test/index.js index 3ff4d30..9cb9122 100644 --- a/lib/zone/test.js +++ b/lib/zone/test/index.js @@ -1,9 +1,9 @@ import assert from 'node:assert/strict' import { describe, it, after, before } from 'node:test' -import Zone from './index.js' +import Zone from '../index.js' -import testCase from '../test/zone.json' with { type: 'json' } +import testCase from './zone.json' with { type: 'json' } before(async () => { await Zone.destroy({ id: testCase.id }) diff --git a/lib/test/zone.json b/lib/zone/test/zone.json similarity index 100% rename from lib/test/zone.json rename to lib/zone/test/zone.json diff --git a/lib/zone_record.js b/lib/zone_record.js deleted file mode 100644 index f7a5dd8..0000000 --- a/lib/zone_record.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from './zone_record/index.js' diff --git a/lib/zone_record/store/base.js b/lib/zone_record/store/base.js new file mode 100644 index 0000000..ec0922b --- /dev/null +++ b/lib/zone_record/store/base.js @@ -0,0 +1,42 @@ +/** + * Zone Record domain class – pure contract, no persistence knowledge. + * + * All zone repository classes must extend this class and implement: + * get(args) → object[] + * count(args) → number + * create(args) → number (zoneId) + * put(args) → boolean + * delete(args) → boolean + * destroy(args) → boolean + */ +class ZoneRecordBase { + constructor(args = {}) { + this.debug = args?.debug ?? false + } + + async get(_args) { + throw new Error('get() not implemented by this repo') + } + + async count(_args) { + throw new Error('count() not implemented by this repo') + } + + async create(_args) { + throw new Error('create() not implemented by this repo') + } + + async put(_args) { + throw new Error('put() not implemented by this repo') + } + + async delete(_args) { + throw new Error('delete() not implemented by this repo') + } + + async destroy(_args) { + throw new Error('destroy() not implemented by this repo') + } +} + +export default ZoneRecordBase diff --git a/lib/zone_record/store/mysql.js b/lib/zone_record/store/mysql.js index ac58b28..c56f832 100644 --- a/lib/zone_record/store/mysql.js +++ b/lib/zone_record/store/mysql.js @@ -1,4 +1,5 @@ import * as RR from '@nictool/dns-resource-record' +import ZoneRecordBase from './base.js' import Mysql from '../../mysql.js' import { mapToDbColumn } from '../../util.js' @@ -8,8 +9,9 @@ const boolFields = ['deleted'] const keepZeroWeightFor = new Set(['SRV', 'URI']) const keepZeroPriorityFor = new Set(['HTTPS', 'SVCB', 'URI']) -class ZoneRecordRepoMySQL { +class ZoneRecordMySQL extends ZoneRecordBase { constructor() { + super() this.mysql = Mysql } @@ -92,7 +94,7 @@ class ZoneRecordRepoMySQL { } } -export default ZoneRecordRepoMySQL +export default ZoneRecordMySQL function dbToObject(rows) { rows = JSON.parse(JSON.stringify(rows)) diff --git a/lib/zone_record.test.js b/lib/zone_record/test/index.js similarity index 93% rename from lib/zone_record.test.js rename to lib/zone_record/test/index.js index 67820e1..471802d 100644 --- a/lib/zone_record.test.js +++ b/lib/zone_record/test/index.js @@ -4,7 +4,7 @@ import path from 'node:path' import assert from 'node:assert/strict' import { describe, it, after, before } from 'node:test' -import ZoneRecord from './zone_record.js' +import ZoneRecord from '../index.js' after(async () => { // await ZoneRecord.destroy({ id: testCase.id }) @@ -34,14 +34,13 @@ describe('zone_record', function () { } }) - for (const rrType of fs.readdirSync('./lib/test/rrs')) { - // console.log(rrType) + for (const rrType of fs.readdirSync('lib/zone_record/test/rrs')) { // if (rrType !== 'tlsa.json') continue describe(`${path.basename(rrType, '.json').toUpperCase()}`, function () { let testCase before(async () => { - testCase = JSON.parse(fs.readFileSync(`./lib/test/rrs/${rrType}`)) + testCase = JSON.parse(fs.readFileSync(`lib/zone_record/test/rrs/${rrType}`)) await ZoneRecord.destroy({ id: testCase.id }) await ZoneRecord.create(testCase) }) diff --git a/lib/test/rrs/a.json b/lib/zone_record/test/rrs/a.json similarity index 100% rename from lib/test/rrs/a.json rename to lib/zone_record/test/rrs/a.json diff --git a/lib/test/rrs/aaaa.json b/lib/zone_record/test/rrs/aaaa.json similarity index 100% rename from lib/test/rrs/aaaa.json rename to lib/zone_record/test/rrs/aaaa.json diff --git a/lib/test/rrs/caa.json b/lib/zone_record/test/rrs/caa.json similarity index 100% rename from lib/test/rrs/caa.json rename to lib/zone_record/test/rrs/caa.json diff --git a/lib/test/rrs/cert.json b/lib/zone_record/test/rrs/cert.json similarity index 100% rename from lib/test/rrs/cert.json rename to lib/zone_record/test/rrs/cert.json diff --git a/lib/test/rrs/cname.json b/lib/zone_record/test/rrs/cname.json similarity index 100% rename from lib/test/rrs/cname.json rename to lib/zone_record/test/rrs/cname.json diff --git a/lib/test/rrs/dname.json b/lib/zone_record/test/rrs/dname.json similarity index 100% rename from lib/test/rrs/dname.json rename to lib/zone_record/test/rrs/dname.json diff --git a/lib/test/rrs/dnskey.json b/lib/zone_record/test/rrs/dnskey.json similarity index 100% rename from lib/test/rrs/dnskey.json rename to lib/zone_record/test/rrs/dnskey.json diff --git a/lib/test/rrs/ds.json b/lib/zone_record/test/rrs/ds.json similarity index 100% rename from lib/test/rrs/ds.json rename to lib/zone_record/test/rrs/ds.json diff --git a/lib/test/rrs/hinfo.json b/lib/zone_record/test/rrs/hinfo.json similarity index 100% rename from lib/test/rrs/hinfo.json rename to lib/zone_record/test/rrs/hinfo.json diff --git a/lib/test/rrs/https.json b/lib/zone_record/test/rrs/https.json similarity index 100% rename from lib/test/rrs/https.json rename to lib/zone_record/test/rrs/https.json diff --git a/lib/test/rrs/ipseckey.json b/lib/zone_record/test/rrs/ipseckey.json similarity index 100% rename from lib/test/rrs/ipseckey.json rename to lib/zone_record/test/rrs/ipseckey.json diff --git a/lib/test/rrs/key.json b/lib/zone_record/test/rrs/key.json similarity index 100% rename from lib/test/rrs/key.json rename to lib/zone_record/test/rrs/key.json diff --git a/lib/test/rrs/loc.json b/lib/zone_record/test/rrs/loc.json similarity index 100% rename from lib/test/rrs/loc.json rename to lib/zone_record/test/rrs/loc.json diff --git a/lib/test/rrs/mx.json b/lib/zone_record/test/rrs/mx.json similarity index 100% rename from lib/test/rrs/mx.json rename to lib/zone_record/test/rrs/mx.json diff --git a/lib/test/rrs/naptr.json b/lib/zone_record/test/rrs/naptr.json similarity index 100% rename from lib/test/rrs/naptr.json rename to lib/zone_record/test/rrs/naptr.json diff --git a/lib/test/rrs/ns.json b/lib/zone_record/test/rrs/ns.json similarity index 100% rename from lib/test/rrs/ns.json rename to lib/zone_record/test/rrs/ns.json diff --git a/lib/test/rrs/nsec.json b/lib/zone_record/test/rrs/nsec.json similarity index 100% rename from lib/test/rrs/nsec.json rename to lib/zone_record/test/rrs/nsec.json diff --git a/lib/test/rrs/nsec3.json b/lib/zone_record/test/rrs/nsec3.json similarity index 100% rename from lib/test/rrs/nsec3.json rename to lib/zone_record/test/rrs/nsec3.json diff --git a/lib/test/rrs/nsec3param.json b/lib/zone_record/test/rrs/nsec3param.json similarity index 100% rename from lib/test/rrs/nsec3param.json rename to lib/zone_record/test/rrs/nsec3param.json diff --git a/lib/test/rrs/nxt.json b/lib/zone_record/test/rrs/nxt.json similarity index 100% rename from lib/test/rrs/nxt.json rename to lib/zone_record/test/rrs/nxt.json diff --git a/lib/test/rrs/openpgpkey.json b/lib/zone_record/test/rrs/openpgpkey.json similarity index 100% rename from lib/test/rrs/openpgpkey.json rename to lib/zone_record/test/rrs/openpgpkey.json diff --git a/lib/test/rrs/ptr.json b/lib/zone_record/test/rrs/ptr.json similarity index 100% rename from lib/test/rrs/ptr.json rename to lib/zone_record/test/rrs/ptr.json diff --git a/lib/test/rrs/smimea.json b/lib/zone_record/test/rrs/smimea.json similarity index 100% rename from lib/test/rrs/smimea.json rename to lib/zone_record/test/rrs/smimea.json diff --git a/lib/test/rrs/soa.json b/lib/zone_record/test/rrs/soa.json similarity index 100% rename from lib/test/rrs/soa.json rename to lib/zone_record/test/rrs/soa.json diff --git a/lib/test/rrs/spf.json b/lib/zone_record/test/rrs/spf.json similarity index 100% rename from lib/test/rrs/spf.json rename to lib/zone_record/test/rrs/spf.json diff --git a/lib/test/rrs/srv.json b/lib/zone_record/test/rrs/srv.json similarity index 100% rename from lib/test/rrs/srv.json rename to lib/zone_record/test/rrs/srv.json diff --git a/lib/test/rrs/sshfp.json b/lib/zone_record/test/rrs/sshfp.json similarity index 100% rename from lib/test/rrs/sshfp.json rename to lib/zone_record/test/rrs/sshfp.json diff --git a/lib/test/rrs/svcb.json b/lib/zone_record/test/rrs/svcb.json similarity index 100% rename from lib/test/rrs/svcb.json rename to lib/zone_record/test/rrs/svcb.json diff --git a/lib/test/rrs/tlsa.json b/lib/zone_record/test/rrs/tlsa.json similarity index 100% rename from lib/test/rrs/tlsa.json rename to lib/zone_record/test/rrs/tlsa.json diff --git a/lib/test/rrs/txt.json b/lib/zone_record/test/rrs/txt.json similarity index 100% rename from lib/test/rrs/txt.json rename to lib/zone_record/test/rrs/txt.json diff --git a/lib/test/rrs/uri.json b/lib/zone_record/test/rrs/uri.json similarity index 100% rename from lib/test/rrs/uri.json rename to lib/zone_record/test/rrs/uri.json diff --git a/routes/nameserver.js b/routes/nameserver.js index a6bda05..ec2d13a 100644 --- a/routes/nameserver.js +++ b/routes/nameserver.js @@ -1,6 +1,6 @@ import validate from '@nictool/validate' -import Nameserver from '../lib/nameserver.js' +import Nameserver from '../lib/nameserver/index.js' import { meta } from '../lib/util.js' function NameserverRoutes(server) { diff --git a/routes/nameserver.test.js b/routes/nameserver.test.js index a8aabc8..0deed2c 100644 --- a/routes/nameserver.test.js +++ b/routes/nameserver.test.js @@ -4,7 +4,7 @@ import { describe, it, before, after } from 'node:test' import { init } from './index.js' import Group from '../lib/group/index.js' import User from '../lib/user/index.js' -import Nameserver from '../lib/nameserver.js' +import Nameserver from '../lib/nameserver/index.js' import groupCase from './test/group.json' with { type: 'json' } import userCase from './test/user.json' with { type: 'json' } diff --git a/routes/permission.js b/routes/permission.js index 3017d59..b06f537 100644 --- a/routes/permission.js +++ b/routes/permission.js @@ -1,6 +1,6 @@ import validate from '@nictool/validate' -import Permission from '../lib/permission.js' +import Permission from '../lib/permission/index.js' import { meta } from '../lib/util.js' function PermissionRoutes(server) { diff --git a/routes/permission.test.js b/routes/permission.test.js index 1e856f8..18089f4 100644 --- a/routes/permission.test.js +++ b/routes/permission.test.js @@ -4,7 +4,7 @@ import { describe, it, before, after } from 'node:test' import { init } from './index.js' import Group from '../lib/group/index.js' import User from '../lib/user/index.js' -import Permission from '../lib/permission.js' +import Permission from '../lib/permission/index.js' import groupCase from './test/group.json' with { type: 'json' } import userCase from './test/user.json' with { type: 'json' } diff --git a/routes/session.test.js b/routes/session.test.js index 5bd5fea..a49f1ee 100644 --- a/routes/session.test.js +++ b/routes/session.test.js @@ -8,7 +8,7 @@ import permCase from './test/permission.json' with { type: 'json' } import User from '../lib/user/index.js' import Group from '../lib/group/index.js' -import Permission from '../lib/permission.js' +import Permission from '../lib/permission/index.js' let server diff --git a/routes/zone.js b/routes/zone.js index c9cd07a..6d695d9 100644 --- a/routes/zone.js +++ b/routes/zone.js @@ -1,6 +1,6 @@ import validate from '@nictool/validate' -import Zone from '../lib/zone.js' +import Zone from '../lib/zone/index.js' import Mysql from '../lib/mysql.js' import { meta } from '../lib/util.js' diff --git a/routes/zone.test.js b/routes/zone.test.js index 4f1be5b..0f128d6 100644 --- a/routes/zone.test.js +++ b/routes/zone.test.js @@ -4,7 +4,7 @@ import { describe, it, before, after } from 'node:test' import { init } from './index.js' import Group from '../lib/group/index.js' import User from '../lib/user/index.js' -import Zone from '../lib/zone.js' +import Zone from '../lib/zone/index.js' import groupCase from './test/group.json' with { type: 'json' } import userCase from './test/user.json' with { type: 'json' } diff --git a/routes/zone_record.js b/routes/zone_record.js index 4b282b4..0ebf823 100644 --- a/routes/zone_record.js +++ b/routes/zone_record.js @@ -1,7 +1,7 @@ import validate from '@nictool/validate' -import ZoneRecord from '../lib/zone_record.js' -import Zone from '../lib/zone.js' +import ZoneRecord from '../lib/zone_record/index.js' +import Zone from '../lib/zone/index.js' import { meta } from '../lib/util.js' async function zoneRecordResponseFailAction(request, h, err) { diff --git a/routes/zone_record.test.js b/routes/zone_record.test.js index 8956d3f..ee39acf 100644 --- a/routes/zone_record.test.js +++ b/routes/zone_record.test.js @@ -4,8 +4,8 @@ import { describe, it, before, after } from 'node:test' import { init } from './index.js' import Group from '../lib/group/index.js' import User from '../lib/user/index.js' -import Zone from '../lib/zone.js' -import ZoneRecord from '../lib/zone_record.js' +import Zone from '../lib/zone/index.js' +import ZoneRecord from '../lib/zone_record/index.js' import groupCase from './test/group.json' with { type: 'json' } import userCase from './test/user.json' with { type: 'json' } diff --git a/test-fixtures.js b/test-fixtures.js index 72ba261..00a02ff 100644 --- a/test-fixtures.js +++ b/test-fixtures.js @@ -5,15 +5,15 @@ import path from 'node:path' import Group from './lib/group/index.js' import User from './lib/user/index.js' import Session from './lib/session.js' -import Permission from './lib/permission.js' -import Nameserver from './lib/nameserver.js' -import Zone from './lib/zone.js' +import Permission from './lib/permission/index.js' +import Nameserver from './lib/nameserver/index.js' +import Zone from './lib/zone/index.js' // import ZoneRecord from './lib/zone_record.js' -import groupCase from './lib/test/group.json' with { type: 'json' } -import userCase from './lib/test/user.json' with { type: 'json' } -import zoneCase from './lib/test/zone.json' with { type: 'json' } -// import zrCase from './lib/test/zone_record.json' with { type: 'json' } +import groupCase from './lib/group/test/group.json' with { type: 'json' } +import userCase from './lib/user/test/user.json' with { type: 'json' } +import zoneCase from './lib/zone/test/zone.json' with { type: 'json' } +// import zrCase from './lib/zone_record/test/zone_record.json' with { type: 'json' } import groupCaseR from './routes/test/group.json' with { type: 'json' } import userCaseR from './routes/test/user.json' with { type: 'json' } import nsCaseR from './routes/test/nameserver.json' with { type: 'json' } diff --git a/test.sh b/test.sh index b88f4f3..12ec2dc 100755 --- a/test.sh +++ b/test.sh @@ -30,5 +30,5 @@ else # npm i --no-save node-test-github-reporter # $NODE --test --test-reporter=node-test-github-reporter # fi - $NODE --test --test-reporter=spec lib/*.test.js lib/*/test.js routes/*.test.js + $NODE --test --test-reporter=spec lib/*/test/index.js lib/*/*.test.js routes/*.test.js fi From 0f742c2546d14af0088b89693ef2067a8129f8bd Mon Sep 17 00:00:00 2001 From: Matt Simerson Date: Sun, 12 Apr 2026 12:12:43 -0500 Subject: [PATCH 2/2] fixes --- lib/session.test.js | 2 +- test.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/session.test.js b/lib/session.test.js index ae30690..41d3af3 100644 --- a/lib/session.test.js +++ b/lib/session.test.js @@ -3,7 +3,7 @@ import { describe, it, after, before } from 'node:test' import User from './user/index.js' import Session from './session.js' -import userCase from './test/user.json' with { type: 'json' } +import userCase from './user/test/user.json' with { type: 'json' } const sessionUser = { ...userCase, diff --git a/test.sh b/test.sh index 12ec2dc..0ae5a50 100755 --- a/test.sh +++ b/test.sh @@ -30,5 +30,5 @@ else # npm i --no-save node-test-github-reporter # $NODE --test --test-reporter=node-test-github-reporter # fi - $NODE --test --test-reporter=spec lib/*/test/index.js lib/*/*.test.js routes/*.test.js + $NODE --test --test-reporter=spec lib/*/test/index.js lib/*.test.js routes/*.test.js fi