feat: enhance CrowdSec configuration tests and add new import/export functionality
- Added comprehensive tests for CrowdSec configuration, including preset application and validation error handling. - Introduced new test cases for importing CrowdSec configurations, ensuring backup creation and successful import. - Updated existing tests to reflect changes in UI elements and functionality, including toggling CrowdSec mode and exporting configurations. - Created utility functions for building export filenames and handling downloads, improving code organization and reusability. - Refactored existing tests to use new test IDs and ensure accurate assertions for UI elements and API calls.
This commit is contained in:
24
frontend/src/utils/crowdsecExport.ts
Normal file
24
frontend/src/utils/crowdsecExport.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
export const buildCrowdsecExportFilename = (): string => {
|
||||
const timestamp = new Date().toISOString().replace(/:/g, '-')
|
||||
return `crowdsec-export-${timestamp}.tar.gz`
|
||||
}
|
||||
|
||||
export const promptCrowdsecFilename = (defaultName = buildCrowdsecExportFilename()): string | null => {
|
||||
const input = window.prompt('Name your CrowdSec export archive', defaultName)
|
||||
if (input === null || typeof input === 'undefined') return null
|
||||
const trimmed = typeof input === 'string' ? input.trim() : ''
|
||||
const candidate = trimmed || defaultName
|
||||
const sanitized = candidate.replace(/[\\/]+/g, '-').replace(/\s+/g, '-')
|
||||
return sanitized.toLowerCase().endsWith('.tar.gz') ? sanitized : `${sanitized}.tar.gz`
|
||||
}
|
||||
|
||||
export const downloadCrowdsecExport = (blob: Blob, filename: string) => {
|
||||
const url = window.URL.createObjectURL(new Blob([blob]))
|
||||
const a = document.createElement('a')
|
||||
a.href = url
|
||||
a.download = filename
|
||||
document.body.appendChild(a)
|
||||
a.click()
|
||||
a.remove()
|
||||
window.URL.revokeObjectURL(url)
|
||||
}
|
||||
Reference in New Issue
Block a user