mirror of
https://github.com/Grace-Solutions/PSMinIO.git
synced 2026-07-26 23:08:13 +00:00
Initial commit: PSMinIO module with chunked transfer support
This commit is contained in:
+266
@@ -0,0 +1,266 @@
|
||||
#!/usr/bin/env pwsh
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Simple test script to verify PSMinIO module functionality
|
||||
|
||||
.DESCRIPTION
|
||||
This script performs basic tests to ensure the PSMinIO module can be built, loaded, and basic functionality works.
|
||||
|
||||
.PARAMETER ModulePath
|
||||
Path to the module manifest file. Default: Module\PSMinIO\PSMinIO.psd1
|
||||
|
||||
.PARAMETER SkipBuild
|
||||
Skip the build step and test existing module
|
||||
|
||||
.EXAMPLE
|
||||
.\Test-Module.ps1
|
||||
|
||||
.EXAMPLE
|
||||
.\Test-Module.ps1 -SkipBuild
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$ModulePath = 'Module\PSMinIO\PSMinIO.psd1',
|
||||
[switch]$SkipBuild
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
Write-Host "=== PSMinIO Module Test ===" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
function Write-TestResult {
|
||||
param(
|
||||
[string]$TestName,
|
||||
[bool]$Success,
|
||||
[string]$Message = ""
|
||||
)
|
||||
|
||||
$status = if ($Success) { "✓ PASS" } else { "✗ FAIL" }
|
||||
$color = if ($Success) { "Green" } else { "Red" }
|
||||
|
||||
Write-Host "$status - $TestName" -ForegroundColor $color
|
||||
if ($Message) {
|
||||
Write-Host " $Message" -ForegroundColor Gray
|
||||
}
|
||||
}
|
||||
|
||||
$testResults = @{}
|
||||
|
||||
try {
|
||||
# Test 1: Build the module (unless skipped)
|
||||
if (!$SkipBuild) {
|
||||
Write-Host "Building module..." -ForegroundColor Yellow
|
||||
|
||||
try {
|
||||
& .\Build.ps1 -Configuration Release
|
||||
$testResults['Build'] = $true
|
||||
Write-TestResult "Build Module" $true
|
||||
} catch {
|
||||
$testResults['Build'] = $false
|
||||
Write-TestResult "Build Module" $false $_.Exception.Message
|
||||
throw "Build failed, cannot continue with tests"
|
||||
}
|
||||
} else {
|
||||
Write-Host "Skipping build step..." -ForegroundColor Yellow
|
||||
$testResults['Build'] = $null
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Test 2: Check if module files exist
|
||||
Write-Host "Checking module files..." -ForegroundColor Yellow
|
||||
|
||||
$moduleExists = Test-Path $ModulePath
|
||||
$testResults['ModuleFiles'] = $moduleExists
|
||||
Write-TestResult "Module Manifest Exists" $moduleExists $ModulePath
|
||||
|
||||
if (!$moduleExists) {
|
||||
throw "Module manifest not found: $ModulePath"
|
||||
}
|
||||
|
||||
# Check for required DLL
|
||||
$dllPath = Join-Path (Split-Path $ModulePath) 'bin\PSMinIO.dll'
|
||||
$dllExists = Test-Path $dllPath
|
||||
$testResults['ModuleDLL'] = $dllExists
|
||||
Write-TestResult "Module DLL Exists" $dllExists $dllPath
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Test 3: Test module manifest
|
||||
Write-Host "Testing module manifest..." -ForegroundColor Yellow
|
||||
|
||||
try {
|
||||
$moduleInfo = Test-ModuleManifest -Path $ModulePath -ErrorAction Stop
|
||||
$testResults['Manifest'] = $true
|
||||
Write-TestResult "Module Manifest Valid" $true "Version: $($moduleInfo.Version)"
|
||||
|
||||
# Check cmdlet count
|
||||
$cmdletCount = $moduleInfo.ExportedCmdlets.Count
|
||||
$expectedCmdlets = 13 # Expected number of cmdlets
|
||||
$cmdletCountOk = $cmdletCount -eq $expectedCmdlets
|
||||
$testResults['CmdletCount'] = $cmdletCountOk
|
||||
Write-TestResult "Cmdlet Count" $cmdletCountOk "Found: $cmdletCount, Expected: $expectedCmdlets"
|
||||
|
||||
} catch {
|
||||
$testResults['Manifest'] = $false
|
||||
Write-TestResult "Module Manifest Valid" $false $_.Exception.Message
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Test 4: Import module
|
||||
Write-Host "Importing module..." -ForegroundColor Yellow
|
||||
|
||||
try {
|
||||
# Remove module if already loaded
|
||||
if (Get-Module PSMinIO -ErrorAction SilentlyContinue) {
|
||||
Remove-Module PSMinIO -Force
|
||||
}
|
||||
|
||||
Import-Module $ModulePath -Force -ErrorAction Stop
|
||||
$testResults['Import'] = $true
|
||||
Write-TestResult "Import Module" $true
|
||||
|
||||
# Check if cmdlets are available
|
||||
$availableCmdlets = Get-Command -Module PSMinIO
|
||||
$cmdletAvailable = $availableCmdlets.Count -gt 0
|
||||
$testResults['CmdletsAvailable'] = $cmdletAvailable
|
||||
Write-TestResult "Cmdlets Available" $cmdletAvailable "Count: $($availableCmdlets.Count)"
|
||||
|
||||
} catch {
|
||||
$testResults['Import'] = $false
|
||||
Write-TestResult "Import Module" $false $_.Exception.Message
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Test 5: Test basic cmdlet functionality
|
||||
Write-Host "Testing basic cmdlet functionality..." -ForegroundColor Yellow
|
||||
|
||||
try {
|
||||
# Test Get-MinIOConfig (should work without configuration)
|
||||
$config = Get-MinIOConfig -ErrorAction Stop
|
||||
$configTest = $config -ne $null
|
||||
$testResults['GetConfig'] = $configTest
|
||||
Write-TestResult "Get-MinIOConfig" $configTest
|
||||
|
||||
# Test configuration validation
|
||||
$configValid = $config.IsValid
|
||||
$testResults['ConfigValid'] = !$configValid # Should be false initially
|
||||
Write-TestResult "Config Initially Invalid" (!$configValid) "Expected: not configured yet"
|
||||
|
||||
} catch {
|
||||
$testResults['GetConfig'] = $false
|
||||
Write-TestResult "Get-MinIOConfig" $false $_.Exception.Message
|
||||
}
|
||||
|
||||
try {
|
||||
# Test Set-MinIOConfig with test parameters (WhatIf)
|
||||
Set-MinIOConfig -Endpoint "test.example.com" `
|
||||
-AccessKey "test-key" `
|
||||
-SecretKey "test-secret" `
|
||||
-WhatIf -ErrorAction Stop
|
||||
$testResults['SetConfig'] = $true
|
||||
Write-TestResult "Set-MinIOConfig (WhatIf)" $true
|
||||
|
||||
} catch {
|
||||
$testResults['SetConfig'] = $false
|
||||
Write-TestResult "Set-MinIOConfig (WhatIf)" $false $_.Exception.Message
|
||||
}
|
||||
|
||||
try {
|
||||
# Test help system
|
||||
$help = Get-Help Get-MinIOBucket -ErrorAction Stop
|
||||
$helpTest = $help -ne $null -and $help.Synopsis -ne $null
|
||||
$testResults['Help'] = $helpTest
|
||||
Write-TestResult "Help System" $helpTest
|
||||
|
||||
} catch {
|
||||
$testResults['Help'] = $false
|
||||
Write-TestResult "Help System" $false $_.Exception.Message
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Test 6: Test parameter validation
|
||||
Write-Host "Testing parameter validation..." -ForegroundColor Yellow
|
||||
|
||||
try {
|
||||
# Test invalid bucket name validation
|
||||
$errorCaught = $false
|
||||
try {
|
||||
New-MinIOBucket -BucketName "" -WhatIf -ErrorAction Stop
|
||||
} catch {
|
||||
$errorCaught = $true
|
||||
}
|
||||
|
||||
$testResults['Validation'] = $errorCaught
|
||||
Write-TestResult "Parameter Validation" $errorCaught "Empty bucket name should fail"
|
||||
|
||||
} catch {
|
||||
$testResults['Validation'] = $false
|
||||
Write-TestResult "Parameter Validation" $false $_.Exception.Message
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Summary
|
||||
Write-Host "=== Test Summary ===" -ForegroundColor Cyan
|
||||
|
||||
$totalTests = $testResults.Count
|
||||
$passedTests = ($testResults.Values | Where-Object { $_ -eq $true }).Count
|
||||
$failedTests = ($testResults.Values | Where-Object { $_ -eq $false }).Count
|
||||
$skippedTests = ($testResults.Values | Where-Object { $_ -eq $null }).Count
|
||||
|
||||
Write-Host "Total Tests: $totalTests" -ForegroundColor Gray
|
||||
Write-Host "Passed: $passedTests" -ForegroundColor Green
|
||||
Write-Host "Failed: $failedTests" -ForegroundColor Red
|
||||
Write-Host "Skipped: $skippedTests" -ForegroundColor Yellow
|
||||
|
||||
Write-Host ""
|
||||
|
||||
# Detailed results
|
||||
foreach ($test in $testResults.GetEnumerator()) {
|
||||
$status = switch ($test.Value) {
|
||||
$true { "PASS" }
|
||||
$false { "FAIL" }
|
||||
$null { "SKIP" }
|
||||
}
|
||||
$color = switch ($test.Value) {
|
||||
$true { "Green" }
|
||||
$false { "Red" }
|
||||
$null { "Yellow" }
|
||||
}
|
||||
Write-Host " $($test.Key): $status" -ForegroundColor $color
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
if ($failedTests -eq 0) {
|
||||
Write-Host "=== All Tests Passed! ===" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Write-Host "The PSMinIO module is ready for use." -ForegroundColor Cyan
|
||||
Write-Host "To get started, run:" -ForegroundColor Gray
|
||||
Write-Host " Get-Help about_PSMinIO" -ForegroundColor White
|
||||
Write-Host " Get-Command -Module PSMinIO" -ForegroundColor White
|
||||
} else {
|
||||
Write-Host "=== Some Tests Failed ===" -ForegroundColor Red
|
||||
Write-Host ""
|
||||
Write-Host "Please review the failed tests and fix any issues before using the module." -ForegroundColor Yellow
|
||||
exit 1
|
||||
}
|
||||
|
||||
} catch {
|
||||
Write-Host ""
|
||||
Write-Host "=== Test Execution Failed ===" -ForegroundColor Red
|
||||
Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red
|
||||
Write-Host ""
|
||||
exit 1
|
||||
} finally {
|
||||
# Clean up - remove module if loaded
|
||||
if (Get-Module PSMinIO -ErrorAction SilentlyContinue) {
|
||||
Remove-Module PSMinIO -Force
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user