feat: expose verifiable deployment release
This commit is contained in:
@@ -20,7 +20,7 @@ const request=async(path,method='GET',body,auth=token)=>{
|
||||
before(async()=>{
|
||||
const socket=createServer();await new Promise(r=>socket.listen(0,'127.0.0.1',r));const port=socket.address().port;await new Promise(r=>socket.close(r));
|
||||
base='http://127.0.0.1:'+port;
|
||||
child=spawn(process.execPath,['server/index.js'],{cwd:new URL('..',import.meta.url),env:{...process.env,NODE_ENV:'test',CORS_ORIGINS:'https://client.example,https://admin.example',TELEGRAM_BOT_TOKEN:'',PORT:String(port),IHALEIST_USER_DATA_DIR:dir,IHALEIST_SHARED_DATA_DIR:join(dir,'shared'),UYUM_GOMME:'0'},stdio:'ignore'});
|
||||
child=spawn(process.execPath,['server/index.js'],{cwd:new URL('..',import.meta.url),env:{...process.env,NODE_ENV:'test',APP_RELEASE:'0123456789abcdef',CORS_ORIGINS:'https://client.example,https://admin.example',TELEGRAM_BOT_TOKEN:'',PORT:String(port),IHALEIST_USER_DATA_DIR:dir,IHALEIST_SHARED_DATA_DIR:join(dir,'shared'),UYUM_GOMME:'0'},stdio:'ignore'});
|
||||
for(let i=0;i<100;i++){try{await fetch(base+'/api/auth/google/config');return;}catch{await new Promise(r=>setTimeout(r,50));}}
|
||||
throw new Error('QA API did not start');
|
||||
});
|
||||
@@ -55,6 +55,18 @@ test('readiness endpoint checks persistent data directories',async()=>{
|
||||
assert.equal(response.data.checks.userData.ok,true);
|
||||
assert.equal(response.data.checks.sharedData.ok,true);
|
||||
});
|
||||
test('version endpoint identifies the running release and frontend asset',async()=>{
|
||||
const response=await request('/api/version','GET',null,null);
|
||||
assert.equal(response.status,200);
|
||||
assert.equal(response.data.ok,true);
|
||||
assert.equal(response.data.release,'0123456789abcdef');
|
||||
assert.equal(response.data.version,'1.0.0');
|
||||
if(response.data.frontendAsset){
|
||||
assert.match(response.data.frontendAsset.path,/^\/assets\/.+\.js$/);
|
||||
assert.match(response.data.frontendAsset.sha256,/^[a-f0-9]{64}$/);
|
||||
assert.ok(response.data.frontendAsset.bytes>0);
|
||||
}
|
||||
});
|
||||
test('HTTP documents and API keys expose empty successful state, not endless load errors',async()=>{
|
||||
const docs=await request('/api/me/documents');assert.equal(docs.status,200);assert.deepEqual(docs.data.belgeler,[]);
|
||||
const keys=await request('/api/me/apikeys');assert.equal(keys.status,200);assert.deepEqual(keys.data.anahtarlar,[]);
|
||||
|
||||
Reference in New Issue
Block a user