secure-scan-js
Version:
A JavaScript implementation of Yelp's detect-secrets tool - no Python required
78 lines (64 loc) • 2.59 kB
JavaScript
const path = require('path');
const fs = require('fs');
const detectSecrets = require('../dist/index');
async function runTest() {
try {
console.log('Initializing WebAssembly module...');
await detectSecrets.initialize();
// Create a temporary test file with safe content
const testFilePath = path.join(__dirname, 'temp-test-file.js');
const testContent = `
// This is a safe test file with no real secrets
// Configuration with safe values
const config = {
apiKey: "SAFE-EXAMPLE-VALUE-NOT-A-SECRET",
databaseUrl: "https://example.database.com",
username: "test_user",
// Using a clearly labeled non-secret value
password: "NOT-A-REAL-PASSWORD-JUST-A-TEST-VALUE"
};
// Function that uses configuration
function getApiClient() {
return {
connect: () => console.log("Connected with example credentials")
};
}
module.exports = { getApiClient };
`;
// Write the test content to the file
fs.writeFileSync(testFilePath, testContent);
console.log(`Scanning file: ${testFilePath}`);
const results = await detectSecrets.scanFile(testFilePath, {
checkMissed: true
});
console.log('\n=== SCAN RESULTS ===');
console.log(`Found ${results.secrets.length} secrets and ${results.missed_secrets.length} potentially missed secrets`);
if (results.secrets.length > 0) {
console.log('\nDetected secrets:');
for (const secret of results.secrets) {
const status = secret.is_false_positive ? '[Likely False Positive]' : '[Secret]';
console.log(` ${status} ${secret.file}:${secret.line} - ${secret.types.join(', ')}`);
}
} else {
console.log('\nNo secrets detected in the test file.');
}
if (results.missed_secrets.length > 0) {
console.log('\nPotentially missed secrets:');
for (const secret of results.missed_secrets) {
console.log(` [Potential] ${secret.file}:${secret.line} - ${secret.type}`);
}
}
// Save results to a file for inspection
const resultsPath = path.join(__dirname, 'results.json');
fs.writeFileSync(resultsPath, JSON.stringify(results, null, 2));
console.log(`\nResults saved to: ${resultsPath}`);
// Clean up the temporary test file
fs.unlinkSync(testFilePath);
console.log(`Removed temporary test file: ${testFilePath}`);
console.log('\nTest completed successfully!');
} catch (error) {
console.error('Test failed:', error);
process.exit(1);
}
}
runTest();