Tests/GitHubReleases.Tests.ps1
|
Import-Module "$PSScriptRoot/../PSFirebird.psd1" -Force Describe 'GitHub releases' -Tag 'Unit' { InModuleScope 'PSFirebird' { BeforeEach { Mock Invoke-RestMethod { Get-Content "$PSScriptRoot/assets/github-releases.json" -Raw | ConvertFrom-Json } } It 'Returns release info for Firebird 5.x' { $result = Get-FirebirdReleaseUrl -Version '5.0.2' -RuntimeIdentifier 'win-x64' $result.Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v5.0.2/Firebird-5.0.2.1613-0-windows-x64.zip' $result.FileName | Should -Be 'Firebird-5.0.2.1613-0-windows-x64.zip' $result.Version | Should -Be '5.0.2' $result.Sha256 | Should -Be 'c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4' (Get-FirebirdReleaseUrl -Version '5.0.1' -RuntimeIdentifier 'win-x86').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v5.0.1/Firebird-5.0.1.1469-0-windows-x86.zip' (Get-FirebirdReleaseUrl -Version '5.0.0' -RuntimeIdentifier 'linux-x64').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v5.0.0/Firebird-5.0.0.1306-0-linux-x64.tar.gz' (Get-FirebirdReleaseUrl -Version '5.0.0' -RuntimeIdentifier 'linux-arm64').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v5.0.0/Firebird-5.0.0.1306-0-linux-arm64.tar.gz' } It 'Returns release info for Firebird 4.x' { (Get-FirebirdReleaseUrl -Version '4.0.5' -RuntimeIdentifier 'win-x64').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v4.0.5/Firebird-4.0.5.3140-0-x64.zip' (Get-FirebirdReleaseUrl -Version '4.0.4' -RuntimeIdentifier 'win-x86').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v4.0.4/Firebird-4.0.4.3010-0-Win32.zip' (Get-FirebirdReleaseUrl -Version '4.0.3' -RuntimeIdentifier 'linux-x64').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v4.0.3/Firebird-4.0.3.2975-0.amd64.tar.gz' (Get-FirebirdReleaseUrl -Version '4.0.2' -RuntimeIdentifier 'linux-arm64').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v4.0.2/Firebird-4.0.2.2816-0.arm64.tar.gz' } It 'Returns release info for Firebird 3.x' { (Get-FirebirdReleaseUrl -Version '3.0.12' -RuntimeIdentifier 'win-x64').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v3.0.12/Firebird-3.0.12.33787-0-x64.zip' (Get-FirebirdReleaseUrl -Version '3.0.11' -RuntimeIdentifier 'win-x86').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v3.0.11/Firebird-3.0.11.33703-0_Win32.zip' (Get-FirebirdReleaseUrl -Version '3.0.10' -RuntimeIdentifier 'linux-x64').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v3.0.10/Firebird-3.0.10.33601-0.amd64.tar.gz' (Get-FirebirdReleaseUrl -Version '3.0.9' -RuntimeIdentifier 'linux-arm64').Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v3.0.9/Firebird-3.0.9.33560-0.arm64.tar.gz' } It 'Returns Sha256 when digest field is available (v5.0.2)' { $result = Get-FirebirdReleaseUrl -Version '5.0.2' -RuntimeIdentifier 'linux-x64' $result.Sha256 | Should -Be 'a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2' } It 'Returns null Sha256 when digest field is not available (v4.0.5)' { $result = Get-FirebirdReleaseUrl -Version '4.0.5' -RuntimeIdentifier 'linux-x64' $result.Sha256 | Should -BeNullOrEmpty } } Context 'Find-FirebirdRelease (public)' { BeforeEach { Mock Invoke-RestMethod { Get-Content "$PSScriptRoot/assets/github-releases.json" -Raw | ConvertFrom-Json } -ModuleName 'PSFirebird' } It 'Returns a PSCustomObject with Version, FileName, Url, and Sha256' { $result = Find-FirebirdRelease -Version '5.0.2' -RuntimeIdentifier 'linux-x64' $result | Should -Not -BeNullOrEmpty $result.Version | Should -Be '5.0.2' $result.FileName | Should -Be 'Firebird-5.0.2.1613-0-linux-x64.tar.gz' $result.Url | Should -Be 'https://github.com/FirebirdSQL/firebird/releases/download/v5.0.2/Firebird-5.0.2.1613-0-linux-x64.tar.gz' $result.Sha256 | Should -Be 'a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2' } It 'Works for all major versions' { $r5 = Find-FirebirdRelease -Version '5.0.0' -RuntimeIdentifier 'linux-arm64' $r5.FileName | Should -BeLike 'Firebird-5.0.0*linux-arm64*' $r4 = Find-FirebirdRelease -Version '4.0.5' -RuntimeIdentifier 'linux-x64' $r4.FileName | Should -BeLike 'Firebird-4.0.5*' $r3 = Find-FirebirdRelease -Version '3.0.12' -RuntimeIdentifier 'win-x64' $r3.FileName | Should -BeLike 'Firebird-3.0.12*' } It 'Throws for unsupported versions' { { Find-FirebirdRelease -Version '2.5.9' } | Should -Throw '*minimal supported version*' } } } |