Skip to content

Commit

Permalink
Remnove-TssFolderTemplate - closes #67
Browse files Browse the repository at this point in the history
  • Loading branch information
wsmelton committed Feb 12, 2021
1 parent 858c7dd commit 381a0ee
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 0 deletions.
74 changes: 74 additions & 0 deletions src/functions/folders/Remove-FolderTemplate.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
function Remove-FolderTemplate {
<#
.SYNOPSIS
Remove the associated template on the folder
.DESCRIPTION
Remove the ability to create secrets based on the template on the folder. If no associated template exists on the folder then any template can be used.
.EXAMPLE
$session = New-TssSession -SecretServer https://alpha -Credential $ssCred
Remove-TssFolderTemplate -TssSession $session -Id 23 -Template 6001, 6003, 6036
Removes Template 6001 from Folder ID 23
.NOTES
Requires TssSession object returned by New-TssSession
#>
[CmdletBinding(SupportsShouldProcess)]
[OutputType('TssDelete')]
param (
# TssSession object created by New-TssSession for auth
[Parameter(Mandatory,
ValueFromPipeline,
Position = 0)]
[TssSession]$TssSession,

# Short description for parameter
[Parameter(Mandatory,ValueFromPipelineByPropertyName)]
[Alias("FolderId")]
[int]
$Id,

# Template ID to associated
[Parameter(ValueFromPipelineByPropertyName)]
[int[]]
$TemplateId
)
begin {
$tssParams = $PSBoundParameters
$invokeParams = @{ }
}

process {
Write-Verbose "Provided command parameters: $(. $GetInvocation $PSCmdlet.MyInvocation)"
if ($tssParams.ContainsKey('TssSession') -and $TssSession.IsValidSession()) {
foreach ($template in $TemplateId) {
$restResponse = $null
$uri = $TssSession.ApiUrl, 'folders', $Id, 'templates', $template -join '/'
$invokeParams.Uri = $uri
$invokeParams.Method = 'DELETE'

$invokeParams.PersonalAccessToken = $TssSession.AccessToken
if (-not $PSCmdlet.ShouldProcess($folder,"$($invokeParams.Method) $uri")) { return }
Write-Verbose "$($invokeParams.Method) $uri with $body"
try {
$restResponse = Invoke-TssRestApi @invokeParams
} catch {
Write-Warning "Issue removing [$folder]"
$err = $_
. $ErrorHandling $err
}

if ($restResponse) {
[TssDelete]@{
Id = $restResponse.id
ObjectType = $restResponse.objectType
}
}
}
} else {
Write-Warning "No valid session found"
}
}
}
49 changes: 49 additions & 0 deletions tests/folders/Remove-TssFolderTemplate.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
BeforeDiscovery {
$commandName = Split-Path ($PSCommandPath.Replace('.Tests.ps1','')) -Leaf
. ([IO.Path]::Combine([string]$PSScriptRoot, '..', 'constants.ps1'))
}
Describe "$commandName verify parameters" {
BeforeDiscovery {
[object[]]$knownParameters = 'TssSession'
[object[]]$currentParams = ([Management.Automation.CommandMetaData]$ExecutionContext.SessionState.InvokeCommand.GetCommand($commandName,'Function')).Parameters.Keys
[object[]]$commandDetails = [System.Management.Automation.CommandInfo]$ExecutionContext.SessionState.InvokeCommand.GetCommand($commandName,'Function')
$unknownParameters = Compare-Object -ReferenceObject $knownParameters -DifferenceObject $currentParams -PassThru
}
Context "Verify parmaeters" -Foreach @{currentParams = $currentParams} {
It "$commandName should contain <_> parameter" -TestCases $knownParameters {
$_ -in $currentParams | Should -Be $true
}
It "$commandName should not contain parameter: <_>" -TestCases $unknownParameters {
$_ | Should -BeNullOrEmpty
}
}
Context "Command specific details" {
It "$commandName should set OutputType to TssDelete" -TestCases $commandDetails {
$_.OutputType.Name | Should -Be 'TssDelete'
}
}
}
# Describe "$commandName works" {
# BeforeDiscovery {
# $session = New-TssSession -SecretServer $ss -Credential $ssCred
# $invokeParams = @{
# Uri = "$ss/api/v1/folders?take=$($session.take)"
# ExpandProperty = 'records'
# PersonalAccessToken = $session.AccessToken
# }
# $getFolders = Invoke-TssRestApi @invokeParams
# $tssSecretFolder = $getFolders.Where({$_.folderPath -match '\tss_module_testing'})
# # Prep work

# $session.SessionExpire()
# $props = 'Prop1', 'Prop2', 'Prop3'
# }
# Context "Checking" -Foreach @{object = $object} {
# It "Should not be empty" {
# $object | Should -Not -BeNullOrEmpty
# }
# It "Should output <_> property" -TestCases $props {
# $object[0].PSObject.Properties.Name | Should -Contain $_
# }
# }
# }

0 comments on commit 381a0ee

Please sign in to comment.