Repository files, collaboration, releases and project activity.
ARCHFORGE HISTORY
Blame · tests/branding-persistence.test.js
Branch main · the Commit author is not necessarily a verified ArchForge account.
2109dd33b8archadmin2026-10-12
1 'use strict';2109dd33b8archadmin2026-10-12
2 const {test}=require('node:test');2109dd33b8archadmin2026-10-12
3 const assert=require('node:assert/strict');2109dd33b8archadmin2026-10-12
4 const fs=require('node:fs');const os=require('node:os');const path=require('node:path');2109dd33b8archadmin2026-10-12
5 const {openDatabase,one,syncServices}=require('../src/database');2109dd33b8archadmin2026-10-12
6 const {serviceDefinitions}=require('../src/probes');2109dd33b8archadmin2026-10-12
7 const {serviceLabel,presentService}=require('../src/branding');2109dd33b8archadmin2026-10-12
8 const {homepage,adminDashboard,details}=require('../src/views');2109dd33b8archadmin2026-10-12
9 2109dd33b8archadmin2026-10-12
10 test('existing labels are migrated by normal service startup without deleting samples',()=>{2109dd33b8archadmin2026-10-12
11 const db=openDatabase(':memory:');2109dd33b8archadmin2026-10-12
12 db.prepare("INSERT INTO services (id,label,description,configured,category) VALUES('git_ssh','ArchForge SSH','banner',1,'ArchForge')").run();2109dd33b8archadmin2026-10-12
13 db.prepare("INSERT INTO samples(service_id,checked_at,success,detail) VALUES('git_ssh',100,1,'ok')").run();2109dd33b8archadmin2026-10-12
14 // Mimics a previous release process attempting to restore Git branding.2109dd33b8archadmin2026-10-12
15 db.prepare("UPDATE services SET label='Git SSH',category='Git' WHERE id='git_ssh'").run();2109dd33b8archadmin2026-10-12
16 assert.equal(one(db,"SELECT label FROM services WHERE id='git_ssh'").label,'ArchForge SSH');2109dd33b8archadmin2026-10-12
17 syncServices(db,serviceDefinitions({api:'',gitHttp:''}));2109dd33b8archadmin2026-10-12
18 assert.equal(one(db,"SELECT label FROM services WHERE id='git_ssh'").label,'ArchForge SSH');2109dd33b8archadmin2026-10-12
19 assert.equal(one(db,"SELECT COUNT(*) AS n FROM samples WHERE service_id='git_ssh'").n,1);2109dd33b8archadmin2026-10-12
20 db.close();2109dd33b8archadmin2026-10-12
21 });2109dd33b8archadmin2026-10-12
22 test('older processes cannot revert public service branding via insert or update',()=>{2109dd33b8archadmin2026-10-12
23 const db=openDatabase(':memory:');2109dd33b8archadmin2026-10-12
24 for(const [id,wrong,expected] of [2109dd33b8archadmin2026-10-12
25 ['git_ssh','Git SSH','ArchForge SSH'],['git_http','Git Smart HTTP','ArchForge HTTPS']]){2109dd33b8archadmin2026-10-12
26 db.prepare('INSERT INTO services(id,label,description,configured,category) VALUES(?,?,?,?,?)').run(id,wrong,'banner',1,'Git');2109dd33b8archadmin2026-10-12
27 let state=one(db,'SELECT label,category FROM services WHERE id=?',id);2109dd33b8archadmin2026-10-12
28 assert.equal(state.label,expected);assert.equal(state.category,'ArchForge');2109dd33b8archadmin2026-10-12
29 db.prepare('UPDATE services SET label=?,category=? WHERE id=?').run(wrong,'Git',id);2109dd33b8archadmin2026-10-12
30 state=one(db,'SELECT label,category FROM services WHERE id=?',id);2109dd33b8archadmin2026-10-12
31 assert.equal(state.label,expected);assert.equal(state.category,'ArchForge');2109dd33b8archadmin2026-10-12
32 }2109dd33b8archadmin2026-10-12
33 db.close();2109dd33b8archadmin2026-10-12
34 });2109dd33b8archadmin2026-10-12
35 test('branding guard persists after SQLite database reopens',()=>{2109dd33b8archadmin2026-10-12
36 const folder=fs.mkdtempSync(path.join(os.tmpdir(),'af-branding-'));2109dd33b8archadmin2026-10-12
37 try{2109dd33b8archadmin2026-10-12
38 const file=path.join(folder,'monitor.db');2109dd33b8archadmin2026-10-12
39 let db=openDatabase(file);2109dd33b8archadmin2026-10-12
40 db.prepare("INSERT INTO services(id,label,description) VALUES('git_ssh','Git SSH','legacy')").run();2109dd33b8archadmin2026-10-12
41 db.close();2109dd33b8archadmin2026-10-12
42 db=openDatabase(file);2109dd33b8archadmin2026-10-12
43 db.prepare("UPDATE services SET label='Git SSH' WHERE id='git_ssh'").run();2109dd33b8archadmin2026-10-12
44 assert.equal(one(db,"SELECT label FROM services WHERE id='git_ssh'").label,'ArchForge SSH');2109dd33b8archadmin2026-10-12
45 db.close();2109dd33b8archadmin2026-10-12
46 }finally{fs.rmSync(folder,{force:true,recursive:true});}2109dd33b8archadmin2026-10-12
47 });2109dd33b8archadmin2026-10-12
48 test('browser rendering and API output canonicalize stale service record names',()=>{2109dd33b8archadmin2026-10-12
49 const bad={id:'git_http',label:'Git Smart HTTP',description:'read-only public repository',category:'Git',current_state:'operational',last_latency:123,2109dd33b8archadmin2026-10-12
50 stats:{days:7,coverage:1,uptime:100,buckets:[]}};2109dd33b8archadmin2026-10-12
51 assert.equal(serviceLabel(bad),'ArchForge HTTPS');2109dd33b8archadmin2026-10-12
52 assert.deepEqual(presentService(bad),{...bad,label:'ArchForge HTTPS',category:'ArchForge'});2109dd33b8archadmin2026-10-12
53 const home=homepage({services:[bad],days:7,incidents:[],maintenance:[],config:{}});2109dd33b8archadmin2026-10-12
54 const admin=adminDashboard({csrf:'test-token',services:[bad],incidents:[],maintenance:[],queue:0});2109dd33b8archadmin2026-10-12
55 const detail=details(bad,[],7,false);2109dd33b8archadmin2026-10-12
56 for(const html of [home,admin,detail]){2109dd33b8archadmin2026-10-12
57 assert.match(html,/ArchForge HTTPS/);2109dd33b8archadmin2026-10-12
58 assert.doesNotMatch(html,/>Git Smart HTTP</);2109dd33b8archadmin2026-10-12
59 }2109dd33b8archadmin2026-10-12
60 });