185 lines
4.3 KiB
PowerShell
Executable file
185 lines
4.3 KiB
PowerShell
Executable file
#!/usr/bin/env pwsh
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
BeforeAll {
|
|
Import-Module "$PSScriptRoot/../src/PSConfluencePublisher.psd1"
|
|
}
|
|
|
|
|
|
Describe 'Get-PageMeta' `
|
|
{
|
|
BeforeAll `
|
|
{
|
|
Mock -ModuleName 'PageMeta' Get-PersonalAccessToken {
|
|
'012345678901234567890'
|
|
}
|
|
}
|
|
|
|
Context 'default' `
|
|
{
|
|
|
|
It 'uses index' `
|
|
{
|
|
$mockPageMeta = @{
|
|
'Title' = 'foobar'
|
|
'Id' = '0123456789'
|
|
}
|
|
|
|
$mockManifest = @(
|
|
@{},
|
|
$mockPageMeta
|
|
)
|
|
|
|
$mockIndex = @{
|
|
'foobar' = 1
|
|
}
|
|
|
|
$meta = Get-PageMeta `
|
|
-Host 'foobar' `
|
|
-Title 'foobar' `
|
|
-Space 'foobar' `
|
|
-Index $mockIndex `
|
|
-Manifest $mockManifest
|
|
|
|
$meta | Should -Be $mockPageMeta
|
|
}
|
|
|
|
It 'returns cache when page id present' `
|
|
{
|
|
$mockPageMeta = @{
|
|
'Title' = 'foobar'
|
|
'Id' = '0123456789'
|
|
}
|
|
|
|
$mockManifest = @(
|
|
$mockPageMeta
|
|
)
|
|
|
|
$meta = Get-PageMeta `
|
|
-Host 'foobar' `
|
|
-Title 'foobar' `
|
|
-Space 'foobar' `
|
|
-Manifest $mockManifest
|
|
|
|
$meta | Should -Be $mockPageMeta
|
|
}
|
|
}
|
|
|
|
Context 'locally cached' `
|
|
{
|
|
BeforeAll `
|
|
{
|
|
$mockManifest = @(
|
|
@{
|
|
'Title' = 'page0'
|
|
'Id' = 'id0'
|
|
},
|
|
@{
|
|
'Title' = 'page1'
|
|
'Id' = 'id1'
|
|
},
|
|
@{
|
|
'Title' = 'page2'
|
|
'Id' = 'id2'
|
|
}
|
|
)
|
|
}
|
|
|
|
It 'from parameter' `
|
|
{
|
|
$meta = Get-PageMeta `
|
|
-Host 'foobar' `
|
|
-Space 'foobar' `
|
|
-Manifest $mockManifest
|
|
|
|
$meta.Count | Should -Be 3
|
|
}
|
|
|
|
It 'from pipeline' `
|
|
{
|
|
$meta = $mockManifest | Get-PageMeta `
|
|
-Host 'foobar' `
|
|
-Space 'foobar'
|
|
|
|
$meta.Count | Should -Be 3
|
|
}
|
|
}
|
|
|
|
Context 'locally cached' `
|
|
{
|
|
BeforeAll `
|
|
{
|
|
$mockManifest = @(
|
|
@{
|
|
'Title' = 'page0'
|
|
'Id' = 'id0'
|
|
},
|
|
@{
|
|
'Title' = 'page1'
|
|
},
|
|
@{
|
|
'Title' = 'page2'
|
|
'Id' = 'id2'
|
|
}
|
|
)
|
|
|
|
Mock -ModuleName 'PageMeta' Invoke-WebRequest {
|
|
@{
|
|
'Content' = '{"results": [{"id": "remoteid", "_expandable": {"version": 1}}]}'
|
|
}
|
|
}
|
|
}
|
|
|
|
It 'only gets remote if necesary' `
|
|
{
|
|
$meta = Get-PageMeta `
|
|
-Host 'foobar' `
|
|
-Space 'foobar' `
|
|
-Manifest $mockManifest
|
|
|
|
Should -Invoke -CommandName Invoke-WebRequest `
|
|
-ModuleName 'PageMeta' `
|
|
-Exactly `
|
|
-Times 1
|
|
|
|
$meta.Count | Should -Be 3
|
|
|
|
$meta[0].Id | Should -Be 'id0'
|
|
|
|
$meta[0].Version | Should -Be $null
|
|
|
|
$meta[1].Id | Should -Be 'remoteid'
|
|
|
|
$meta[1].Version | Should -Be 1
|
|
}
|
|
|
|
It 'forcefully gets remote' `
|
|
{
|
|
$meta = Get-PageMeta `
|
|
-Host 'foobar' `
|
|
-Space 'foobar' `
|
|
-Force `
|
|
-Manifest $mockManifest
|
|
|
|
Should -Invoke -CommandName Invoke-WebRequest `
|
|
-ModuleName 'PageMeta' `
|
|
-Exactly `
|
|
-Times 3
|
|
|
|
$meta.Count | Should -Be 3
|
|
|
|
$meta[0].Id | Should -Be 'remoteid'
|
|
|
|
$meta[0].Version | Should -Be 1
|
|
|
|
$meta[1].Id | Should -Be 'remoteid'
|
|
|
|
$meta[1].Version | Should -Be 1
|
|
|
|
$meta[2].Id | Should -Be 'remoteid'
|
|
|
|
$meta[2].Version | Should -Be 1
|
|
}
|
|
}
|
|
}
|
|
|