Resolve -preserverelativepath issue in invoke-giteafiledownload, update pester tests, and bump module version to 1.4.0
Some checks failed
Publish Powershell Module to Gitea Repository / deploy (push) Has been cancelled
Publish Powershell Module to Gitea Repository / test (push) Has been cancelled

This commit is contained in:
2025-05-27 11:31:00 -04:00
parent 1d0c8b43bc
commit 1c09d40253
3 changed files with 115 additions and 68 deletions

View File

@@ -13,7 +13,7 @@ Describe 'Invoke-GiteaFileDownload' {
}
# Correct webClient Mock: headers, download, dispose
Mock -CommandName New-Object -ModuleName PS-GiteaUtilities -MockWith {
Mock -CommandName New-Object -ModuleName PS-GiteaUtilities -ParameterFilter { $TypeName -eq 'System.Net.WebClient' } -MockWith {
$headers = New-Object System.Net.WebHeaderCollection
# Create a real object
@@ -54,19 +54,49 @@ Describe 'Invoke-GiteaFileDownload' {
}
}
Context 'When preserving relative paths' {
It 'Should create a path based on filePath with PreserveRelativePath' {
Context 'When specifying an outputPath' {
It 'Should create a path based on outputPath' {
$result = Invoke-GiteaFileDownload -downloadURL 'https://gitea.example.com/raw/path/to/file.txt' `
-filePath 'docs/manual/file.txt' -PreserveRelativePath -token 'abc123'
-outputPath 'docs/manual/' -token 'abc123'
$result.Path | Should -Match 'docs[\\/]+manual[\\/]+file\.txt$'
$result.Success | Should -Be $true
}
}
Context 'When specifying an outputName' {
It 'Should download file and name it based on outputName' {
$result = Invoke-GiteaFileDownload -downloadURL 'https://gitea.example.com/raw/path/to/file.txt' `
-outputName 'newfile.txt' -token 'abc123'
$result.Path | Should -Match 'newfile\.txt$'
$result.Success | Should -Be $true
}
}
Context 'When specifying an outputName and outputPath' {
It 'Should download file and name it based on outputName' {
$result = Invoke-GiteaFileDownload -downloadURL 'https://gitea.example.com/raw/path/to/file.txt' `
-outputPath 'docs/manual/' -outputName 'newfile.txt' -token 'abc123'
$result.Path | Should -Match 'docs[\\/]+manual[\\/]+newfile\.txt$'
$result.Success | Should -Be $true
}
}
Context 'When using -PreserveRelativePath' {
It 'Should preserve the relative path structure' {
$result = Invoke-GiteaFileDownload -downloadURL 'https://gitea.example.com/raw/path/to/file.txt' `
-PreserveRelativePath -token 'abc123'
$result.Path | Should -Match 'path[\\/]+to[\\/]+file\.txt$'
$result.Success | Should -Be $true
}
}
Context 'When skipping directories' {
It 'Should skip items with type = dir' {
$result = Invoke-GiteaFileDownload -filePath 'docs/' -type 'dir' -token 'abc123'
$result = Invoke-GiteaFileDownload -outputPath 'docs/' -type 'dir' -token 'abc123'
$result.Success | Should -Be $true
$result.Error | Should -Match 'Skipped'
@@ -93,7 +123,7 @@ Describe 'Invoke-GiteaFileDownload' {
Context 'When download fails' {
BeforeEach {
Mock -CommandName New-Object -ModuleName PS-GiteaUtilities -MockWith {
Mock -CommandName New-Object -ModuleName PS-GiteaUtilities -ParameterFilter { $TypeName -eq 'System.Net.WebClient' } -MockWith {
$headers = New-Object System.Net.WebHeaderCollection
$webClient = New-Object PSObject