diff --git a/Cmdlets/Public/Get-TeamViewerRole.ps1 b/Cmdlets/Public/Get-TeamViewerRole.ps1 index 4623e83..e202ddd 100644 --- a/Cmdlets/Public/Get-TeamViewerRole.ps1 +++ b/Cmdlets/Public/Get-TeamViewerRole.ps1 @@ -3,22 +3,35 @@ function Get-TeamViewerRole { param( [Parameter(Mandatory = $true)] [securestring] - $ApiToken + $ApiToken, + + [switch] + [Alias('ListPermissions')] + $Permissions ) - Begin{ - $parameters = @{ } - $resourceUri = "$(Get-TeamViewerApiUri)/userroles" + Begin { + $parameters = @{ } + $resourceUri = "$(Get-TeamViewerApiUri)/userroles" + if ($Permissions) { + $resourceUri += '/permissions' + } } -Process{ - $response = Invoke-TeamViewerRestMethod ` - -ApiToken $ApiToken ` - -Uri $resourceUri ` - -Method Get ` - -Body $parameters ` - -WriteErrorTo $PSCmdlet ` - -ErrorAction Stop - Write-Output ($response.Roles | ConvertTo-TeamViewerRole ) -} + Process { + $response = Invoke-TeamViewerRestMethod ` + -ApiToken $ApiToken ` + -Uri $resourceUri ` + -Method Get ` + -Body $parameters ` + -WriteErrorTo $PSCmdlet ` + -ErrorAction Stop + if ($Permissions) { + return [PSCustomObject] $response + } + else { + Write-Output ($response.Roles | ConvertTo-TeamViewerRole ) + } + } } + diff --git a/Docs/Help/Get-TeamViewerRole.md b/Docs/Help/Get-TeamViewerRole.md index b946d4b..a7267db 100644 --- a/Docs/Help/Get-TeamViewerRole.md +++ b/Docs/Help/Get-TeamViewerRole.md @@ -14,7 +14,7 @@ Lists all roles and their permissions in a TeamViewer company. ## SYNTAX ```powershell -Get-TeamViewerRole [-ApiToken] [] +Get-TeamViewerRole [-ApiToken] [-Permissions] [] ``` ## DESCRIPTION @@ -31,6 +31,15 @@ PS /> Get-TeamViewerRole Lists all roles and their permissions. +### Example 2 + +```powershell +PS /> Get-TeamViewerRole -ApiToken $token -Permissions +``` + +Lists all the possible permissions. + + ## PARAMETERS ### -ApiToken @@ -48,6 +57,21 @@ Default value: None Accept pipeline input: False Accept wildcard characters: False ``` +### -Permissions + +Return the list of currently supported permissions. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: ListPermissions + +Required: False +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` ### CommonParameters @@ -66,3 +90,4 @@ An array of `TeamViewerPS.Role` objects. ## NOTES ## RELATED LINKS + diff --git a/Tests/Public/Get-TeamViewerRole.Tests.ps1 b/Tests/Public/Get-TeamViewerRole.Tests.ps1 index 5ba42b5..a596d21 100644 --- a/Tests/Public/Get-TeamViewerRole.Tests.ps1 +++ b/Tests/Public/Get-TeamViewerRole.Tests.ps1 @@ -61,6 +61,14 @@ Describe 'Get-TeamViewerRole' { $Uri -eq '//unit.test/userroles' -And ` $Method -eq 'Get' } } + It 'Should call the correct API endpoint to list permissions' { + Get-TeamViewerRole -ApiToken $testApiToken -Permissions + + Assert-MockCalled Invoke-TeamViewerRestMethod -Times 1 -Scope It -ParameterFilter { + $ApiToken -eq $testApiToken -And ` + $Uri -eq '//unit.test/userroles/permissions' -And ` + $Method -eq 'Get' } + } It 'Should return Role objects' { $result = Get-TeamViewerRole -ApiToken $testApiToken