t
This commit is contained in:
parent
4c4e767ec6
commit
9d70afb4cc
42 changed files with 1266 additions and 630 deletions
34
test/public-health-smoke-test.js
Normal file
34
test/public-health-smoke-test.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
'use strict';
|
||||
const assert=require('assert/strict');
|
||||
const http=require('http');
|
||||
const {checkPublicDeployment}=require('../server/public-health');
|
||||
|
||||
(async()=>{
|
||||
let mode='healthy';
|
||||
const server=http.createServer((request,response)=>{
|
||||
if(request.url==='/link-field/'||request.url==='/link-field'){
|
||||
response.setHeader('content-type','text/html');
|
||||
if(mode==='disclosure')response.setHeader('server','Apache/2.4.66');
|
||||
response.end('<title>LinkField</title>');return;
|
||||
}
|
||||
if(['/link-field/server.js','/link-field/package.json','/link-field/scripts/service-control.js','/link-field/.linkfield-deployment.json'].includes(request.url)){
|
||||
if(mode==='source'){response.writeHead(200,{'content-type':'text/plain'});response.end('private source');return}
|
||||
response.writeHead(403);response.end();return;
|
||||
}
|
||||
if(request.url==='/link-field/api/cloud/status'){
|
||||
response.setHeader('content-type','application/json');response.end(JSON.stringify({available:true,appVersion:'48.0'}));return;
|
||||
}
|
||||
if(request.url==='/link-field/api-bridge.php?path=/api/cloud/status'){
|
||||
response.setHeader('content-type','application/json');response.setHeader('x-linkfield-bridge','php');response.end(JSON.stringify({available:true,appVersion:'48.0'}));return;
|
||||
}
|
||||
response.writeHead(404);response.end();
|
||||
});
|
||||
await new Promise((resolve,reject)=>{server.once('error',reject);server.listen(0,'127.0.0.1',resolve)});
|
||||
try{
|
||||
const base=`http://127.0.0.1:${server.address().port}/link-field/`;
|
||||
const healthy=await checkPublicDeployment(base,{appVersion:'48.0',timeoutMs:2000});assert.equal(healthy.base,base);
|
||||
mode='source';await assert.rejects(checkPublicDeployment(base,{appVersion:'48.0',timeoutMs:2000}),/Private deployment file is public/);
|
||||
mode='disclosure';await assert.rejects(checkPublicDeployment(base,{appVersion:'48.0',timeoutMs:2000}),/discloses a detailed version/);
|
||||
}finally{await new Promise(resolve=>server.close(resolve))}
|
||||
console.log('Public deployment health and source-boundary smoke test passed');
|
||||
})().catch(error=>{console.error(error);process.exitCode=1});
|
||||
Loading…
Add table
Add a link
Reference in a new issue