diff --git a/Tests/Add-PASGroupMember.Tests.ps1 b/Tests/Add-PASGroupMember.Tests.ps1 index 8f8613b3..b0745630 100644 --- a/Tests/Add-PASGroupMember.Tests.ps1 +++ b/Tests/Add-PASGroupMember.Tests.ps1 @@ -51,12 +51,6 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } $InputObj = [pscustomobject]@{ - 'GroupName' = 'SomeGroup' - 'UserName' = 'SomeUser' - - } - - $InputObjV10 = [pscustomobject]@{ 'memberId' = 'someName' 'memberType' = 'domain' 'domainName' = 'SomeDomain' @@ -66,8 +60,8 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } Context 'Mandatory Parameters' { - $Parameters = @{Parameter = 'GroupName' }, - @{Parameter = 'UserName' } + $Parameters = @{Parameter = 'groupId' }, + @{Parameter = 'memberId' } It 'specifies parameter as mandatory' -TestCases $Parameters { @@ -95,19 +89,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Groups/SomeGroup/Users/" - - } -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint - V10' { - - $InputObjV10 | Add-PASGroupMember - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/API/UserGroups/$($InputObjV10.groupId)/Members" + $URI -eq "$($Script:psPASSession.BaseURI)/API/UserGroups/$($InputObj.groupId)/Members" } -Times 1 -Exactly -Scope It @@ -121,14 +103,6 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - It 'uses expected method - V10' { - - $InputObjV10 | Add-PASGroupMember - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'POST' } -Times 1 -Exactly -Scope It - - } - It 'sends request with expected body' { $InputObj | Add-PASGroupMember @@ -145,26 +119,6 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { It 'has a request body with expected number of properties' { - ($Script:RequestBody | Get-Member -MemberType NoteProperty).length | Should -Be 1 - - } - - It 'sends request with expected body - v10' { - - $InputObjV10 | Add-PASGroupMember - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $Script:RequestBody = $Body | ConvertFrom-Json - - ($Script:RequestBody) -ne $null - - } -Times 1 -Exactly -Scope It - - } - - It 'has a request body with expected number of properties - V10' { - ($Script:RequestBody | Get-Member -MemberType NoteProperty).length | Should -Be 3 } @@ -174,7 +128,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { $psPASSession.ExternalVersion = '1.0' - { $InputObjV10 | Add-PASGroupMember } | Should -Throw + { $InputObj | Add-PASGroupMember } | Should -Throw $psPASSession.ExternalVersion = '0.0' diff --git a/Tests/Add-PASPendingAccount.Tests.ps1 b/Tests/Add-PASPendingAccount.Tests.ps1 deleted file mode 100644 index 7eaed73d..00000000 --- a/Tests/Add-PASPendingAccount.Tests.ps1 +++ /dev/null @@ -1,155 +0,0 @@ -Describe $($PSCommandPath -Replace '.Tests.ps1') { - - BeforeAll { - #Get Current Directory - $Here = Split-Path -Parent $PSCommandPath - - #Assume ModuleName from Repository Root folder - $ModuleName = Split-Path (Split-Path $Here -Parent) -Leaf - - #Resolve Path to Module Directory - $ModulePath = Resolve-Path "$Here\..\$ModuleName" - - #Define Path to Module Manifest - $ManifestPath = Join-Path "$ModulePath" "$ModuleName.psd1" - - if ( -not (Get-Module -Name $ModuleName -All)) { - - Import-Module -Name "$ManifestPath" -ArgumentList $true -Force -ErrorAction Stop - - } - - $Script:RequestBody = $null - $psPASSession = [ordered]@{ - BaseURI = 'https://SomeURL/SomeApp' - User = $null - ExternalVersion = [System.Version]'0.0' - WebSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession - StartTime = $null - ElapsedTime = $null - LastCommand = $null - LastCommandTime = $null - LastCommandResults = $null - } - - New-Variable -Name psPASSession -Value $psPASSession -Scope Script -Force - - } - - - AfterAll { - - $Script:RequestBody = $null - - } - - InModuleScope $(Split-Path (Split-Path (Split-Path -Parent $PSCommandPath) -Parent) -Leaf ) { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - Write-Output @{ } - } - - $InputObj = [pscustomobject]@{ - 'UserName' = 'SomeUser' - 'Address' = 'SomeAddress' - 'AccountDiscoveryDate' = '2018-02-22T22:22:22Z' - 'OSType' = 'Windows' - 'AccountEnabled' = 'enabled' - 'AccountOSGroups' = 'SomeGroup' - 'AccountType' = 'local' - 'DiscoveryPlatformType' = 'SomePlatform' - 'Domain' = 'SomeDomain' - 'LastLogonDate' = '2017-12-31T23:59:59Z' - 'LastPasswordSet' = '1995-05-06T20:20:00Z' - 'PasswordNeverExpires' = $true - 'OSVersion' = 'SomeValue' - 'OU' = 'SomeOU' - 'AccountCategory' = 'privileged' - 'AccountCategoryCriteria' = 'some;category' - 'UserDisplayName' = 'DisplayThis' - 'AccountDescription' = 'SomeDescription' - 'AccountExpirationDate' = '2020-01-01T00:00:00Z' - 'UID' = '0' - 'GID' = '0' - 'MachineOSFamily' = 'Workstation' - } - - $response = $InputObj | Add-PASPendingAccount -Verbose - - } - - - Context 'Mandatory Parameters' { - $Parameters = @{Parameter = 'UserName' }, - @{Parameter = 'Address' }, - @{Parameter = 'AccountDiscoveryDate' }, - @{Parameter = 'AccountEnabled' } - - It 'specifies parameter as mandatory' -TestCases $Parameters { - param($Parameter) - - (Get-Command Add-PASPendingAccount).Parameters["$Parameter"].Attributes.Mandatory | Should -Be $true - - } - - } - - Context 'Input' { - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled 'Invoke-PASRestMethod' -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/PendingAccounts" - - } -Times 1 -Exactly -Scope It - - } - - It 'sends request using expected method' { - - Assert-MockCalled 'Invoke-PASRestMethod' -ParameterFilter { $Method -match 'POST' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with expected body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $Script:RequestBody = $Body | ConvertFrom-Json - - ($Script:RequestBody.pendingAccount) -ne $null - - } -Times 1 -Exactly -Scope It - - } - - It 'has a request body with expected number of properties' { - - ($Script:RequestBody.pendingAccount | Get-Member -MemberType NoteProperty).length | Should -Be 21 - - } - - } - - Context 'Output' { - - It 'provides no output' { - - $response | Should -BeNullOrEmpty - - } - - } - - } - -} \ No newline at end of file diff --git a/Tests/Add-PASSafeMember.Tests.ps1 b/Tests/Add-PASSafeMember.Tests.ps1 index 8710c784..5703caa2 100644 --- a/Tests/Add-PASSafeMember.Tests.ps1 +++ b/Tests/Add-PASSafeMember.Tests.ps1 @@ -60,147 +60,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - Context 'Gen1 Input' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'member' = [PSCustomObject]@{ - 'MemberName' = 'SomeMember' - 'MembershipExpirationDate' = '1/1/1970' - 'SearchIn' = 'SomePlace' - 'Permissions' = @( - [pscustomobject]@{ - 'Key' = 'Key1' - 'Value' = 'Value1' - }, - [pscustomobject]@{ - 'Key' = 'Key2' - 'Value' = 'Value2' - }, - [pscustomobject]@{ - 'Key' = 'TrueKey' - 'Value' = 'true' - }, - [pscustomobject]@{ - 'Key' = 'FalseKey' - 'Value' = $false - }, - [pscustomobject]@{ - 'Key' = 'AnotherKey' - 'Value' = 'AnotherValue' - }, - [pscustomobject]@{ - 'Key' = 'AnotherFalseKey' - 'Value' = $false - }, - [pscustomobject]@{ - 'Key' = 'IntegerKey' - 'Value' = 1 - } - - - ) - } - } - - } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeSafe' - 'MemberName' = 'SomeUser' - 'SearchIn' = 'SomePlace' - 'UseAccounts' = $true - 'RetrieveAccounts' = $true - 'ListAccounts' = $true - 'AddAccounts' = $false - 'UpdateAccountContent' = $false - 'UpdateAccountProperties' = $false - 'InitiateCPMAccountManagementOperations' = $true - 'SpecifyNextAccountContent' = $false - 'RenameAccounts' = $false - 'DeleteAccounts' = $false - 'UnlockAccounts' = $true - 'ManageSafe' = $false - 'ManageSafeMembers' = $false - 'BackupSafe' = $false - 'ViewAuditLog' = $true - 'ViewSafeMembers' = $true - 'RequestsAuthorizationLevel' = 0 - 'AccessWithoutConfirmation' = $false - 'CreateFolders' = $false - 'DeleteFolders' = $false - 'MoveAccountsAndFolders' = $false - - - } - - $response = $InputObj | Add-PASSafeMember -MembershipExpirationDate '12/31/18' -UseGen1API - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/SomeSafe/Members" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'POST' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with expected body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $Script:RequestBody = $Body | ConvertFrom-Json - - ($Script:RequestBody.member) -ne $null - - } -Times 1 -Exactly -Scope It - - } - - It 'has a request body with expected number of properties' { - - ($Script:RequestBody.member | Get-Member -MemberType NoteProperty).length | Should -Be 4 - - } - - It 'has expected number of nested properties' { - - ($Script:RequestBody.member.permissions).Count | Should -Be 21 - - } - - It 'throws if invalid date pattern specified' { - - { $InputObj | Add-PASSafeMember -MembershipExpirationDate '31/12/18' } | Should -Throw - - } - - It 'throws error if version exceeds 12.2' { - $psPASSession.ExternalVersion = '12.3' - { Find-PASSafe } | Should -Throw - $psPASSession.ExternalVersion = '0.0' - } - - } - - Context 'Gen2 Input' { + Context 'Input' { BeforeEach { @@ -306,134 +166,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - Context 'Gen1 Output' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'member' = [PSCustomObject]@{ - 'MemberName' = 'SomeMember' - 'MembershipExpirationDate' = '1/1/1970' - 'SearchIn' = 'SomePlace' - 'Permissions' = @( - [pscustomobject]@{ - 'Key' = 'Key1' - 'Value' = 'Value1' - }, - [pscustomobject]@{ - 'Key' = 'Key2' - 'Value' = 'Value2' - }, - [pscustomobject]@{ - 'Key' = 'TrueKey' - 'Value' = 'true' - }, - [pscustomobject]@{ - 'Key' = 'FalseKey' - 'Value' = $false - }, - [pscustomobject]@{ - 'Key' = 'AnotherKey' - 'Value' = 'AnotherValue' - }, - [pscustomobject]@{ - 'Key' = 'AnotherFalseKey' - 'Value' = $false - }, - [pscustomobject]@{ - 'Key' = 'IntegerKey' - 'Value' = 1 - } - - - ) - } - } - - } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeSafe' - 'MemberName' = 'SomeUser' - 'SearchIn' = 'SomePlace' - 'UseAccounts' = $true - 'RetrieveAccounts' = $true - 'ListAccounts' = $true - 'AddAccounts' = $false - 'UpdateAccountContent' = $false - 'UpdateAccountProperties' = $false - 'InitiateCPMAccountManagementOperations' = $true - 'SpecifyNextAccountContent' = $false - 'RenameAccounts' = $false - 'DeleteAccounts' = $false - 'UnlockAccounts' = $true - 'ManageSafe' = $false - 'ManageSafeMembers' = $false - 'BackupSafe' = $false - 'ViewAuditLog' = $true - 'ViewSafeMembers' = $true - 'RequestsAuthorizationLevel' = 0 - 'AccessWithoutConfirmation' = $false - 'CreateFolders' = $false - 'DeleteFolders' = $false - 'MoveAccountsAndFolders' = $false - - - } - - $response = $InputObj | Add-PASSafeMember -MembershipExpirationDate '12/31/18' -UseGen1API - - } - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 5 - - } - - It 'has expected number of nested permission properties' { - - ($response.permissions | Get-Member -MemberType NoteProperty).count | Should -Be 7 - - } - - It 'has expected boolean false property value' { - - $response.permissions.FalseKey | Should -Be $False - - - } - - It 'has expected boolean true property value' { - - - $response.permissions.TrueKey | Should -Be $True - - } - - It 'has expected integer property value' { - - - $response.permissions.IntegerKey | Should -Be 1 - - } - - It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.Safe.Member.Extended - - } - - } - - Context 'Gen2 Output' { + Context 'Output' { BeforeEach { diff --git a/Tests/Find-PASSafe.Tests.ps1 b/Tests/Find-PASSafe.Tests.ps1 deleted file mode 100644 index 97d8dd9a..00000000 --- a/Tests/Find-PASSafe.Tests.ps1 +++ /dev/null @@ -1,199 +0,0 @@ -Describe $($PSCommandPath -Replace '.Tests.ps1') { - - BeforeAll { - #Get Current Directory - $Here = Split-Path -Parent $PSCommandPath - - #Assume ModuleName from Repository Root folder - $ModuleName = Split-Path (Split-Path $Here -Parent) -Leaf - - #Resolve Path to Module Directory - $ModulePath = Resolve-Path "$Here\..\$ModuleName" - - #Define Path to Module Manifest - $ManifestPath = Join-Path "$ModulePath" "$ModuleName.psd1" - - if ( -not (Get-Module -Name $ModuleName -All)) { - - Import-Module -Name "$ManifestPath" -ArgumentList $true -Force -ErrorAction Stop - - } - - $Script:RequestBody = $null - $psPASSession = [ordered]@{ - BaseURI = 'https://SomeURL/SomeApp' - User = $null - ExternalVersion = [System.Version]'0.0' - WebSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession - StartTime = $null - ElapsedTime = $null - LastCommand = $null - LastCommandTime = $null - LastCommandResults = $null - } - - New-Variable -Name psPASSession -Value $psPASSession -Scope Script -Force - - } - - - AfterAll { - - $Script:RequestBody = $null - - } - - InModuleScope $(Split-Path (Split-Path (Split-Path -Parent $PSCommandPath) -Parent) -Leaf ) { - - Context 'Input' { - - $Script:psPASSession.BaseURI = 'https://SomeURL/SomeApp' - $psPASSession.ExternalVersion = '0.0' - $psPASSession.WebSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' } - } - - Find-PASSafe - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/api/Safes?limit=25" - - } -Times 1 -Exactly -Scope It - - } - - It 'sends request with expected query' { - - Find-PASSafe -search SomeQuery - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/api/Safes?limit=25&search=SomeQuery" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'GET' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with no body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Body -eq $null } -Times 1 -Exactly -Scope It - - } - - It 'throws error if version requirement not met' { - $psPASSession.ExternalVersion = '1.0' - { Find-PASSafe } | Should -Throw - $psPASSession.ExternalVersion = '0.0' - } - - It 'throws error if version exceeds 11.7' { - $psPASSession.ExternalVersion = '11.8' - { Find-PASSafe } | Should -Throw - $psPASSession.ExternalVersion = '0.0' - } - - It 'sends expected number of requests' { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'Total' = 100 - 'Safes' = @( - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' } - ) - } - } - - Find-PASSafe - - Assert-MockCalled Invoke-PASRestMethod -Times 5 -Exactly -Scope It - - } - - - - } - - Context 'Response Output' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'Total' = 20 - 'Safes' = @( - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' } - ) - } - } - - $response = Find-PASSafe - - } - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 2 - - } - - It 'returns expected number of results' { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'Total' = 100 - 'Safes' = @( - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' }, - [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' } - ) - } - } - - $response = Find-PASSafe - - $response.count | Should -Be 20 - - } - - } - - } - -} \ No newline at end of file diff --git a/Tests/Format-PASUserObject.Tests.ps1 b/Tests/Format-PASUserObject.Tests.ps1 index 8abc8058..e55369f9 100644 --- a/Tests/Format-PASUserObject.Tests.ps1 +++ b/Tests/Format-PASUserObject.Tests.ps1 @@ -53,7 +53,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { 'UserName' = 'SomeUser' 'FirstName' = 'Some' 'LastName' = 'User' - 'ExpiryDate' = $(Get-Date -Day 31 -Month 10 -Year 2018 -Hour 0 -Minute 0 -Second 0 -Millisecond 0) + 'ExpiryDate' = [datetime]::SpecifyKind((Get-Date -Day 31 -Month 10 -Year 2018 -Hour 0 -Minute 0 -Second 0 -Millisecond 0), [DateTimeKind]::Utc) 'workStreet' = 'SomeStreet' 'homePage' = 'www.geocities.com' 'faxNumber' = '1979' @@ -104,6 +104,19 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { $result['ExpiryDate'] | Should -Be '1540944000' } + It 'has array value for allowedAuthenticationMethods' { + $InputObj['allowedAuthenticationMethods'] = 'FIDO' + $result = $InputObj | Format-PASUserObject + ($result['allowedAuthenticationMethods'] -is [array]) | Should -Be $true + $result['allowedAuthenticationMethods'] | Should -Be @('FIDO') + } + + It 'converts allowedAuthenticationMethods to expected json array' { + $InputObj['allowedAuthenticationMethods'] = 'FIDO' + $result = $InputObj | Format-PASUserObject | ConvertTo-Json -Depth 4 | ConvertFrom-Json + $result.allowedAuthenticationMethods | Should -Be @('FIDO') + } + It 'does not include unexpected keys in result' { $result = $InputObj | Format-PASUserObject $result.keys | Should -Not -Contain FirstName diff --git a/Tests/Get-PASAccountActivity.Tests.ps1 b/Tests/Get-PASAccountActivity.Tests.ps1 index d501002e..169a77b6 100644 --- a/Tests/Get-PASAccountActivity.Tests.ps1 +++ b/Tests/Get-PASAccountActivity.Tests.ps1 @@ -62,58 +62,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - Context 'Input - Gen 1' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [pscustomobject]@{'GetAccountActivitiesResult' = [pscustomobject]@{ - 'prop1' = 'val1' - 'prop2' = 'val2' - 'prop3' = 'val3' - } - } - } - - $InputObj = [pscustomobject]@{ - 'AccountID' = '66_6' - - } - - $response = $InputObj | Get-PASAccountActivity -UseGen1API -Verbose - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Accounts/66_6/Activities" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'GET' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with no body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Body -eq $null } -Times 1 -Exactly -Scope It - - } - - } - - Context 'Input - Gen 2' { + Context 'Input' { BeforeEach { @@ -164,50 +113,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - Context 'Output - Gen 1' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [pscustomobject]@{'GetAccountActivitiesResult' = [pscustomobject]@{ - 'prop1' = 'val1' - 'prop2' = 'val2' - 'prop3' = 'val3' - } - } - } - - $InputObj = [pscustomobject]@{ - 'AccountID' = '66_6' - - } - - $response = $InputObj | Get-PASAccountActivity -UseGen1API -Verbose - } - - It 'provides output' { - - $response | Should -Not -Be null - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 3 - - } - - It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.Account.Activity - - } - - - - } - - Context 'Output - Gen 2' { + Context 'Output' { BeforeEach { diff --git a/Tests/Get-PASAccountGroup.Tests.ps1 b/Tests/Get-PASAccountGroup.Tests.ps1 index 15f9b3c5..3b843090 100644 --- a/Tests/Get-PASAccountGroup.Tests.ps1 +++ b/Tests/Get-PASAccountGroup.Tests.ps1 @@ -100,24 +100,6 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { $psPASSession.ExternalVersion = '0.0' } - It 'sends request to expected endpoint - Gen1 ParameterSet' { - - $InputObj | Get-PASAccountGroup -UseGen1API - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/API/Safes/SomeSafe/AccountGroups" - - } -Times 1 -Exactly -Scope It - - } - - It 'throws error if version requirement not met' { - $psPASSession.ExternalVersion = '1.0' - { Get-PASAccountGroup -Safe 'SomeSafe' } | Should -Throw - $psPASSession.ExternalVersion = '0.0' - } - } Context 'Output' { diff --git a/Tests/Get-PASSafe.Tests.ps1 b/Tests/Get-PASSafe.Tests.ps1 index 9173c0b0..74cced0e 100644 --- a/Tests/Get-PASSafe.Tests.ps1 +++ b/Tests/Get-PASSafe.Tests.ps1 @@ -47,152 +47,10 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { BeforeEach { Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'SearchSafesResult' = [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' } - 'GetSafesResult' = [PSCustomObject]@{'PropA' = 'ValA'; 'PropB' = 'ValB'; 'PropC' = 'ValC' } - 'GetSafeResult' = [PSCustomObject]@{'Prop5' = 'Val5'; 'Prop6' = 'Val6'; 'Prop7' = 'Val7'; 'Prop8' = 'Val8' } - } - } - } - Context 'Input - Gen1-byAll ParameterSet' { - - BeforeEach { - - Get-PASSafe -FindAll -UseGen1API - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'GET' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with no body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Body -eq $null } -Times 1 -Exactly -Scope It - - } - - It 'throws if version exceeds 12.2' { - - $psPASSession.ExternalVersion = '12.3' - { Get-PASSafe -FindAll -UseGen1API } | Should -Throw - $psPASSession.ExternalVersion = '0.0' - - } - - } - - Context 'Input - Gen1-byName ParameterSet' { - - BeforeEach { - - Get-PASSafe -SafeName SomeSafe -UseGen1API - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/SomeSafe" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'GET' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with no body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Body -eq $null } -Times 1 -Exactly -Scope It - - } - - It 'throws if version exceeds 12.2' { - - $psPASSession.ExternalVersion = '12.3' - { Get-PASSafe -SafeName SomeSafe -UseGen1API } | Should -Throw - $psPASSession.ExternalVersion = '0.0' - - } - - } - - Context 'Input - Gen1-byQuery ParameterSet' { - - BeforeEach { - - Get-PASSafe -query 'SomeSafe' - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes?query=SomeSafe" - - } -Times 1 -Exactly -Scope It - + [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' } } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'GET' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with no body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Body -eq $null } -Times 1 -Exactly -Scope It - - } - - It 'throws if version exceeds 12.2' { - - $psPASSession.ExternalVersion = '12.3' - { Get-PASSafe -query 'SomeSafe' } | Should -Throw - $psPASSession.ExternalVersion = '0.0' - - } - } - - Context 'Input - Gen2 ParameterSet' { + Context 'Input' { BeforeEach { @@ -314,96 +172,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - Context 'Output - Gen1-byAll ParameterSet' { - - BeforeEach { - - $response = Get-PASSafe -FindAll -UseGen1API - } - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 3 - - } - - It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.Safe - - } - - - - } - - Context 'Output - Gen1-byName ParameterSet' { - - BeforeEach { - - $response = Get-PASSafe -SafeName SomeSafe -UseGen1API - - } - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 4 - - } - - It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.Safe - - } - - - - } - - Context 'Output - Gen1-byQuery ParameterSet' { - - BeforeEach { - - $response = Get-PASSafe -query 'SomeSafe' - - } - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 2 - - } - - It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.Safe - - } - - - - } - - Context 'Output - Gen2 ParameterSet' { + Context 'Output' { BeforeEach { diff --git a/Tests/Get-PASSafeMember.Tests.ps1 b/Tests/Get-PASSafeMember.Tests.ps1 index 1663cfab..6000995f 100644 --- a/Tests/Get-PASSafeMember.Tests.ps1 +++ b/Tests/Get-PASSafeMember.Tests.ps1 @@ -45,80 +45,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { InModuleScope $(Split-Path (Split-Path (Split-Path -Parent $PSCommandPath) -Parent) -Leaf ) { - Context 'Gen1 Input' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeSafe' - - } - - $response = Get-PASSafeMember -SafeName SomeSafe -UseGen1API - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/SomeSafe/Members" - - } -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - $response = $InputObj | Get-PASSafeMember -MemberName SomeMember -UseGen1API - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/SomeSafe/Members/SomeMember/" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected GET method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'GET' } -Times 1 -Exactly -Scope It - - } - - It 'uses expected PUT method' { - - $response = Get-PASSafeMember -SafeName SomeSafe -MemberName SomeMember -UseGen1API - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'PUT' } -Times 1 -Exactly -Scope It - - } - - It 'throws for PUT method if version exceeds 12.3' { - - $psPASSession.ExternalVersion = '12.4' - { Get-PASSafeMember -SafeName SomeSafe -MemberName SomeMember -UseGen1API } | Should -Throw - $psPASSession.ExternalVersion = '0.0' - - } - - It 'sends request with no body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Body -eq $null } -Times 1 -Exactly -Scope It - - } - - } - - Context 'Gen2 Input' { + Context 'Input' { BeforeEach { @@ -414,136 +341,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - Context 'Gen1 Output' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'members' = [PSCustomObject]@{ - 'UserName' = 'SomeMember' - 'Permissions' = [pscustomobject]@{ - 'Key1' = $true - 'Key2' = $true - 'FalseKey' = $false - 'AnotherKey' = $true - 'AnotherFalseKey' = $false - 'IntegerKey' = 1 - } - } - } - - } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeSafe' - - } - - $response = $InputObj | Get-PASSafeMember -UseGen1API - - } - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 3 - - } - - It 'has expected number of nested permission properties' { - - ($response.permissions | Get-Member -MemberType NoteProperty).count | Should -Be 6 - - } - - It 'has expected boolean false property value' { - - $response.permissions.FalseKey | Should -Be $False - - - } - - It 'has expected boolean true property value' { - - - $response.permissions.Key1 | Should -Be $True - - } - - It 'has expected integer property value' { - - - $response.permissions.IntegerKey | Should -Be 1 - - } - - It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.Safe.Member - - } - - It 'outputs object with expected safename property' { - - $response.SafeName | Should -Be 'SomeSafe' - - } - - It 'outputs object with expected username property' { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'member' = [PSCustomObject]@{ - 'Permissions' = @( - [pscustomobject]@{ - 'Key' = 'Key1' - 'Value' = $true - }, - [pscustomobject]@{ - 'Key' = 'Key2' - 'Value' = $true - }, - [pscustomobject]@{ - 'Key' = 'TrueKey' - 'Value' = $true - }, - [pscustomobject]@{ - 'Key' = 'FalseKey' - 'Value' = $false - }, - [pscustomobject]@{ - 'Key' = 'AnotherKey' - 'Value' = $true - }, - [pscustomobject]@{ - 'Key' = 'AnotherFalseKey' - 'Value' = $false - } - - - ) - } - } - - } - - $response = $InputObj | Get-PASSafeMember -MemberName SomeMember -UseGen1API - - $response.UserName | Should -Be 'SomeMember' - - } - - - - } - - Context 'Gen2 Output' { + Context 'Output' { BeforeEach { diff --git a/Tests/Get-PASSafeShareLogo.Tests.ps1 b/Tests/Get-PASSafeShareLogo.Tests.ps1 deleted file mode 100644 index 9853dd7c..00000000 --- a/Tests/Get-PASSafeShareLogo.Tests.ps1 +++ /dev/null @@ -1,113 +0,0 @@ -Describe $($PSCommandPath -Replace '.Tests.ps1') { - - BeforeAll { - #Get Current Directory - $Here = Split-Path -Parent $PSCommandPath - - #Assume ModuleName from Repository Root folder - $ModuleName = Split-Path (Split-Path $Here -Parent) -Leaf - - #Resolve Path to Module Directory - $ModulePath = Resolve-Path "$Here\..\$ModuleName" - - #Define Path to Module Manifest - $ManifestPath = Join-Path "$ModulePath" "$ModuleName.psd1" - - if ( -not (Get-Module -Name $ModuleName -All)) { - - Import-Module -Name "$ManifestPath" -ArgumentList $true -Force -ErrorAction Stop - - } - - $Script:RequestBody = $null - $psPASSession = [ordered]@{ - BaseURI = 'https://SomeURL/SomeApp' - User = $null - ExternalVersion = [System.Version]'0.0' - WebSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession - StartTime = $null - ElapsedTime = $null - LastCommand = $null - LastCommandTime = $null - LastCommandResults = $null - } - - New-Variable -Name psPASSession -Value $psPASSession -Scope Script -Force - - } - - - AfterAll { - - $Script:RequestBody = $null - - } - - InModuleScope $(Split-Path (Split-Path (Split-Path -Parent $PSCommandPath) -Parent) -Leaf ) { - BeforeEach { - Mock Invoke-PASRestMethod -MockWith { - Write-Output 'Squint and This is an Image' - } - $response = Get-PASSafeShareLogo -ImageType Square - } - Context 'Mandatory Parameters' { - - $Parameters = @{Parameter = 'ImageType' } - - It 'specifies parameter as mandatory' -TestCases $Parameters { - - param($Parameter) - - (Get-Command Get-PASSafeShareLogo).Parameters["$Parameter"].Attributes.Mandatory | Should -Be $true - - } - - } - - - - Context 'Input' { - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Logo?type=Square" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'GET' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with no body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Body -eq $null } -Times 1 -Exactly -Scope It - - } - - } - - Context 'Output' { - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - } - - } - -} \ No newline at end of file diff --git a/Tests/Get-PASServerWebService.Tests.ps1 b/Tests/Get-PASServerWebService.Tests.ps1 index c255dfe5..9dcacca0 100644 --- a/Tests/Get-PASServerWebService.Tests.ps1 +++ b/Tests/Get-PASServerWebService.Tests.ps1 @@ -60,7 +60,7 @@ Describe $($PSCommandPath -replace '.Tests.ps1') { } } $Script:psPASSession.BaseURI = 'https://SomeURL/SomeApp' - $response = Get-PASServerWebService -BaseURI 'https://SomeURL' -PVWAAppName SomeApp -UseGen1API + $response = Get-PASServerWebService -BaseURI 'https://SomeURL' -PVWAAppName SomeApp } It 'sends request' { @@ -71,18 +71,6 @@ Describe $($PSCommandPath -replace '.Tests.ps1') { It 'sends request to expected endpoint' { - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq 'https://SomeURL/SomeApp/WebServices/PIMServices.svc/Verify' - - } #-Times 1 -Exactly -Scope It - - } - - It 'sends request to expected Gen2 endpoint' { - - Get-PASServerWebService -BaseURI 'https://SomeURL' -PVWAAppName SomeApp - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $URI -eq "$($Script:psPASSession.BaseURI)/API/verify/" @@ -117,7 +105,7 @@ Describe $($PSCommandPath -replace '.Tests.ps1') { } } $Script:psPASSession.BaseURI = 'https://SomeURL/SomeApp' - $response = Get-PASServerWebService -BaseURI 'https://SomeURL' -PVWAAppName SomeApp -UseGen1API + $response = Get-PASServerWebService -BaseURI 'https://SomeURL' -PVWAAppName SomeApp } It 'provides output' { diff --git a/Tests/Get-PASUser.Tests.ps1 b/Tests/Get-PASUser.Tests.ps1 index f1842c5a..3f98ec44 100644 --- a/Tests/Get-PASUser.Tests.ps1 +++ b/Tests/Get-PASUser.Tests.ps1 @@ -53,12 +53,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { [PSCustomObject]@{'Detail1' = 'Detail'; 'Detail2' = 'Detail' } } - $InputObj = [pscustomobject]@{ - 'UserName' = 'SomeUser' - - } - - $InputObjV10 = [PSCustomObject]@{ + $InputObj = [PSCustomObject]@{ 'Search' = 'SomeUser' 'ComponentUser' = $true @@ -76,20 +71,6 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { It 'sends request to expected endpoint' { - $response = $InputObj | Get-PASUser -UseGen1API - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/SomeUser" - - } -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint - Gen2' { - - $InputObjV10 | Get-PASUser - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { (($URI -eq "$($Script:psPASSession.BaseURI)/api/Users?Search=SomeUser&ComponentUser=True") -or @@ -126,7 +107,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { It 'throws error if version requirement not met' { $psPASSession.ExternalVersion = '1.0' - { $InputObjV10 | Get-PASUser } | Should -Throw + { $InputObj | Get-PASUser } | Should -Throw $psPASSession.ExternalVersion = '0.0' } @@ -161,12 +142,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { [PSCustomObject]@{'Detail1' = 'Detail'; 'Detail2' = 'Detail' } } - $InputObj = [pscustomobject]@{ - 'UserName' = 'SomeUser' - - } - - $InputObjV10 = [PSCustomObject]@{ + $InputObj = [PSCustomObject]@{ 'Search' = 'SomeUser' 'ComponentUser' = $true @@ -189,20 +165,12 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { It 'outputs object with expected typename' { - $response = $InputObj | Get-PASUser -UseGen1API - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.User - - } - - It 'outputs object with expected typename - Gen2' { - Mock Invoke-PASRestMethod -MockWith { [PSCustomObject]@{'Users' = [PSCustomObject]@{'Detail1' = 'Detail'; 'Detail2' = 'Detail' } } } - $response = $InputObjV10 | Get-PASUser + $response = $InputObj | Get-PASUser $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.User.Extended } diff --git a/Tests/Invoke-PASCPMOperation.Tests.ps1 b/Tests/Invoke-PASCPMOperation.Tests.ps1 index 8f9d0624..fdc35782 100644 --- a/Tests/Invoke-PASCPMOperation.Tests.ps1 +++ b/Tests/Invoke-PASCPMOperation.Tests.ps1 @@ -115,27 +115,6 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - It 'sends change request to expected classic api endpoint' { - Invoke-PASCPMOperation -AccountID $AccountID -ChangeTask -ImmediateChangeByCPM 'Yes' -ChangeCredsForGroup 'No' - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Scope It -ParameterFilter { - - $URI -eq 'https://SomeURL/SomeApp/WebServices/PIMServices.svc/Accounts/SomeID/ChangeCredentials' - } - - } - - It 'sends change request to classic api using expected method' { - - Invoke-PASCPMOperation -AccountID $AccountID -ChangeTask -ImmediateChangeByCPM 'Yes' -ChangeCredsForGroup 'No' - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Scope It -ParameterFilter { - - $Method -eq 'PUT' - } - - } - It 'sends change request, when specifying value, to expected api endpoint' { Invoke-PASCPMOperation -AccountID $AccountID -ChangeTask -ChangeImmediately $true -NewCredentials $Password diff --git a/Tests/New-PASOnboardingRule.Tests.ps1 b/Tests/New-PASOnboardingRule.Tests.ps1 index 6627e968..88281604 100644 --- a/Tests/New-PASOnboardingRule.Tests.ps1 +++ b/Tests/New-PASOnboardingRule.Tests.ps1 @@ -50,8 +50,8 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } $InputObj = [pscustomobject]@{ - 'DecisionPlatformId' = 'SomePlatform' - 'DecisionSafeName' = 'SomeSafe' + 'TargetPlatformId' = 'SomePlatform' + 'TargetSafeName' = 'SomeSafe' 'SystemTypeFilter' = 'Windows' } @@ -61,9 +61,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } Context 'Mandatory Parameters' { - $Parameters = @{Parameter = 'DecisionPlatformId' }, - @{Parameter = 'DecisionSafeName' }, - @{Parameter = 'SystemTypeFilter' }, + $Parameters = @{Parameter = 'SystemTypeFilter' }, @{Parameter = 'TargetPlatformId' }, @{Parameter = 'TargetSafeName' } @@ -127,20 +125,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { $psPASSession.ExternalVersion = '0.0' } - It 'accepts alternative parameterset input' { - - $InputObj = [pscustomobject]@{ - 'TargetPlatformId' = 'SomePlatform' - 'TargetSafeName' = 'SomeSafe' - 'SystemTypeFilter' = 'Windows' - - } - - { $InputObj | New-PASOnboardingRule } | Should -Not -Throw - - } - - It 'throws error if parameterset version requirement not met' { + It 'throws error if version 10.2 requirement not met' { $InputObj = [pscustomobject]@{ 'TargetPlatformId' = 'SomePlatform' diff --git a/Tests/New-PASUser.Tests.ps1 b/Tests/New-PASUser.Tests.ps1 index 8e7b04b9..e40e500a 100644 --- a/Tests/New-PASUser.Tests.ps1 +++ b/Tests/New-PASUser.Tests.ps1 @@ -47,90 +47,15 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { Context 'Mandatory Parameters' { - It 'specifies parameter UserName as mandatory for ParameterSet Gen1' { + It 'specifies parameter UserName as mandatory' { - (Get-Command New-PASUser).Parameters['UserName'].ParameterSets['Gen1'].IsMandatory | Should -Be $true - - } - - It 'specifies parameter UserName as mandatory for ParameterSet Gen2' { - - (Get-Command New-PASUser).Parameters['UserName'].ParameterSets['Gen2'].IsMandatory | Should -Be $true - - } - - It 'specifies parameter InitialPassword as mandatory for ParameterSet Gen1' { - - (Get-Command New-PASUser).Parameters['InitialPassword'].ParameterSets['Gen1'].IsMandatory | Should -Be $true + (Get-Command New-PASUser).Parameters['UserName'].Attributes.Mandatory | Select-Object -Unique | Should -Be $true } } - Context 'Input - Gen1' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{'Detail1' = 'Detail'; 'Detail2' = 'Detail' } - } - - $InputObj = [pscustomobject]@{ - 'UserName' = 'SomeUser' - 'InitialPassword' = $('P_Password' | ConvertTo-SecureString -AsPlainText -Force) - 'FirstName' = 'Some' - 'LastName' = 'User' - 'ExpiryDate' = '10/31/2018' - - } - - $response = $InputObj | New-PASUser -UseClassicAPI - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Users" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'POST' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with expected body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $Script:RequestBody = $Body | ConvertFrom-Json - - ($Script:RequestBody) -ne $null - - } -Times 1 -Exactly -Scope It - - } - - It 'has a request body with expected number of properties' { - - ($Script:RequestBody | Get-Member -MemberType NoteProperty).length | Should -Be 5 - - } - - } - - Context 'Input - Gen2' { + Context 'Input' { BeforeEach { @@ -233,7 +158,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - $response = $InputObj | New-PASUser -UseClassicAPI + $response = $InputObj | New-PASUser } @@ -250,13 +175,6 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.User - - } - - It 'outputs object with expected typename - Gen2' { - $response = $InputObj | New-PASUser $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.User.Extended } diff --git a/Tests/Remove-PASSafe.Tests.ps1 b/Tests/Remove-PASSafe.Tests.ps1 index 38027efe..6469ead2 100644 --- a/Tests/Remove-PASSafe.Tests.ps1 +++ b/Tests/Remove-PASSafe.Tests.ps1 @@ -61,62 +61,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { - Context 'Gen1 Input' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - - } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeSafe' - - } - - $response = $InputObj | Remove-PASSafe -UseGen1API - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/SomeSafe" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'DELETE' } -Times 1 -Exactly -Scope It - - } - - It 'sends request with no body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Body -eq $null } -Times 1 -Exactly -Scope It - - } - - It 'throws if version exceeds 12.2' { - - $psPASSession.ExternalVersion = '12.3' - { Get-PASSafe -SafeName SomeSafe -UseGen1API } | Should -Throw - $psPASSession.ExternalVersion = '0.0' - - } - - } - - Context 'Gen2 Input' { + Context 'Input' { BeforeEach { @@ -169,32 +114,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - Context 'Gen1 Output' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - - } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeSafe' - - } - - $response = $InputObj | Remove-PASSafe -UseGen1API - - } - - It 'provides no output' { - - $response | Should -BeNullOrEmpty - - } - - } - - Context 'Gen2 Output' { + Context 'Output' { BeforeEach { @@ -207,7 +127,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - $response = $InputObj | Remove-PASSafe -UseGen1API + $response = $InputObj | Remove-PASSafe } diff --git a/Tests/Remove-PASUser.Tests.ps1 b/Tests/Remove-PASUser.Tests.ps1 index 6719a226..aa00ab40 100644 --- a/Tests/Remove-PASUser.Tests.ps1 +++ b/Tests/Remove-PASUser.Tests.ps1 @@ -51,14 +51,14 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } $InputObj = [pscustomobject]@{ - 'UserName' = 'ThatUser' + 'id' = 1234 } } Context 'Mandatory Parameters' { - $Parameters = @{Parameter = 'UserName' } + $Parameters = @{Parameter = 'id' } It 'specifies parameter as mandatory' -TestCases $Parameters { @@ -80,18 +80,8 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - It 'sends request to expected endpoint - Classic API' { + It 'sends request to expected endpoint' { $InputObj | Remove-PASUser - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/ThatUser" - - } -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint - V2 API' { - Remove-PASUser -id 1234 Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $URI -eq "$($Script:psPASSession.BaseURI)/api/Users/1234" diff --git a/Tests/Set-PASSafe.Tests.ps1 b/Tests/Set-PASSafe.Tests.ps1 index 883798c8..61d2a791 100644 --- a/Tests/Set-PASSafe.Tests.ps1 +++ b/Tests/Set-PASSafe.Tests.ps1 @@ -61,65 +61,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { - Context 'Input-Gen1' { - - BeforeEach { - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{'UpdateSafeResult' = [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' } } - } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeName' - - } - Mock Get-PASSafe -MockWith {} - $response = $InputObj | Set-PASSafe -NumberOfDaysRetention 1 -ManagingCPM SomeCPM -NewSafeName SomeNewName -UseGen1API - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/SomeName" - - } -Times 1 -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'PUT' } -Times 1 -Scope It - - } - - It 'sends request with expected body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $Script:RequestBody = $Body | ConvertFrom-Json - - ($Script:RequestBody.safe) -ne $null - - } -Scope It - - } - - It 'has a request body with expected number of properties' { - - ($Script:RequestBody.safe | Get-Member -MemberType NoteProperty).length | Should -Be 3 - - } - - } - - Context 'Input-Gen2' { + Context 'Input' { BeforeEach { Mock Invoke-PASRestMethod -MockWith { @@ -179,45 +121,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - Context 'Output-Gen1' { - - BeforeEach { - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{'UpdateSafeResult' = [PSCustomObject]@{'Prop1' = 'Val1'; 'Prop2' = 'Val2' } } - } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeName' - - } - - $response = $InputObj | Set-PASSafe -NumberOfDaysRetention 1 -ManagingCPM SomeCPM -NewSafeName SomeNewName -UseGen1API - - } - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 2 - - } - - It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.Safe - - } - - - - } - - Context 'Output-Gen2' { + Context 'Output' { BeforeEach { Mock Invoke-PASRestMethod -MockWith { diff --git a/Tests/Set-PASSafeMember.Tests.ps1 b/Tests/Set-PASSafeMember.Tests.ps1 index a8f02086..4d467c4a 100644 --- a/Tests/Set-PASSafeMember.Tests.ps1 +++ b/Tests/Set-PASSafeMember.Tests.ps1 @@ -62,97 +62,7 @@ Describe $($PSCommandPath -replace '.Tests.ps1') { - Context 'Gen1 Input' { - - BeforeEach { - Mock Invoke-PASRestMethod -MockWith {} - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeSafe' - 'MemberName' = 'SomeUser' - 'UseAccounts' = $true - 'RetrieveAccounts' = $true - 'ListAccounts' = $true - 'AddAccounts' = $false - 'UpdateAccountContent' = $false - 'UpdateAccountProperties' = $false - 'InitiateCPMAccountManagementOperations' = $true - 'SpecifyNextAccountContent' = $false - 'RenameAccounts' = $false - 'DeleteAccounts' = $false - 'UnlockAccounts' = $true - 'ManageSafe' = $false - 'ManageSafeMembers' = $false - 'BackupSafe' = $false - 'ViewAuditLog' = $true - 'ViewSafeMembers' = $true - 'RequestsAuthorizationLevel' = 1 - 'AccessWithoutConfirmation' = $false - 'CreateFolders' = $false - 'DeleteFolders' = $false - 'MoveAccountsAndFolders' = $false - - - } - - $response = $InputObj | Set-PASSafeMember -MembershipExpirationDate 12/31/18 -UseGen1API - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/SomeSafe/Members/SomeUser/" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'PUT' } -Times 1 -Exactly -Scope It - - } - - It 'throws if invalid date pattern specified' { - - { $InputObj | Set-PASSafeMember -MembershipExpirationDate '31/12/18' } | Should -Throw - - } - - It 'sends request with expected body' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $Script:RequestBody = $Body | ConvertFrom-Json - - ($Script:RequestBody.member) -ne $null - - } -Times 1 -Exactly -Scope It - - } - - It 'has a request body with expected number of properties' { - - ($Script:RequestBody.member | Get-Member -MemberType NoteProperty).length | Should -Be 2 - - } - - It 'has expected number of nested properties' { - - ($Script:RequestBody.member.permissions).Count | Should -Be 21 - - } - - } - - Context 'Gen2 Input' { + Context 'Input' { BeforeEach { Mock Invoke-PASRestMethod -MockWith {} @@ -184,7 +94,7 @@ Describe $($PSCommandPath -replace '.Tests.ps1') { 'requestsAuthorizationLevel1' = $true } - $response = $InputObj | Set-PASSafeMember -MembershipExpirationDate 12/31/18 + $response = $InputObj | Set-PASSafeMember -MembershipExpirationDate ([datetime]'2018-12-31') } It 'sends request' { @@ -255,243 +165,6 @@ Describe $($PSCommandPath -replace '.Tests.ps1') { } - Context 'Gen1 Output' { - - BeforeEach { - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'member' = [PSCustomObject]@{ - 'MembershipExpirationDate' = '31/12/2018' - 'Permissions' = @( - [pscustomobject]@{ - 'Key' = 'Key1' - 'Value' = $true - }, - [pscustomobject]@{ - 'Key' = 'Key2' - 'Value' = $true - }, - [pscustomobject]@{ - 'Key' = 'TrueKey' - 'Value' = $true - }, - [pscustomobject]@{ - 'Key' = 'FalseKey' - 'Value' = $false - }, - [pscustomobject]@{ - 'Key' = 'AnotherKey' - 'Value' = $true - }, - [pscustomobject]@{ - 'Key' = 'AnotherFalseKey' - 'Value' = $false - } - [pscustomobject]@{ - 'Key' = 'IntegerKey' - 'Value' = 1 - } - - ) - } - } - - } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeSafe' - 'MemberName' = 'SomeUser' - 'UseAccounts' = $true - 'RetrieveAccounts' = $true - 'ListAccounts' = $true - 'AddAccounts' = $false - 'UpdateAccountContent' = $false - 'UpdateAccountProperties' = $false - 'InitiateCPMAccountManagementOperations' = $true - 'SpecifyNextAccountContent' = $false - 'RenameAccounts' = $false - 'DeleteAccounts' = $false - 'UnlockAccounts' = $true - 'ManageSafe' = $false - 'ManageSafeMembers' = $false - 'BackupSafe' = $false - 'ViewAuditLog' = $true - 'ViewSafeMembers' = $true - 'RequestsAuthorizationLevel' = 1 - 'AccessWithoutConfirmation' = $false - 'CreateFolders' = $false - 'DeleteFolders' = $false - 'MoveAccountsAndFolders' = $false - - - } - - $response = $InputObj | Set-PASSafeMember -MembershipExpirationDate 12/31/18 -UseGen1API - } - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 4 - - } - - It 'has expected number of nested permission properties' { - - ($response.permissions | Get-Member -MemberType NoteProperty).count | Should -Be 7 - - } - - It 'has expected boolean false property value' { - - $response.permissions.FalseKey | Should -Be $False - - - } - - It 'has expected boolean true property value' { - - - $response.permissions.TrueKey | Should -Be $True - - } - - It 'has expected integer property value' { - - - $response.permissions.IntegerKey | Should -Be 1 - - } - - It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.Safe.Member - - } - - It 'outputs object with expected safename property' { - - $response.SafeName | Should -Be 'SomeSafe' - - } - - It 'outputs object with expected username property' { - - $response.UserName | Should -Be 'SomeUser' - - } - - } - - Context 'Gen2 Output' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{ - 'MemberName' = 'SomeMember' - 'MembershipExpirationDate' = '1/1/1970' - 'SearchIn' = 'SomePlace' - 'Permissions' = [pscustomobject]@{ - 'Key1' = 'Value1' - 'Key2' = 'Value2' - 'TrueKey' = 'true' - 'FalseKey' = $false - 'AnotherKey' = 'AnotherValue' - 'AnotherFalseKey' = $false - 'IntegerKey' = 1 - } - - } - - } - - $InputObj = [pscustomobject]@{ - 'SafeName' = 'SomeSafe' - 'MemberName' = 'SomeUser' - 'UseAccounts' = $true - 'RetrieveAccounts' = $true - 'ListAccounts' = $true - 'AddAccounts' = $false - 'UpdateAccountContent' = $false - 'UpdateAccountProperties' = $false - 'InitiateCPMAccountManagementOperations' = $true - 'SpecifyNextAccountContent' = $false - 'RenameAccounts' = $false - 'DeleteAccounts' = $false - 'UnlockAccounts' = $true - 'ManageSafe' = $false - 'ManageSafeMembers' = $false - 'BackupSafe' = $false - 'ViewAuditLog' = $true - 'ViewSafeMembers' = $true - 'AccessWithoutConfirmation' = $false - 'CreateFolders' = $false - 'DeleteFolders' = $false - 'MoveAccountsAndFolders' = $false - 'requestsAuthorizationLevel1' = $true - - - - } - - Mock Get-PASSafeMember -MockWith {} - $response = $InputObj | Set-PASSafeMember -MembershipExpirationDate '12/31/18' - - } - - It 'provides output' { - - $response | Should -Not -BeNullOrEmpty - - } - - It 'has output with expected number of properties' { - - ($response | Get-Member -MemberType NoteProperty).length | Should -Be 5 - - } - - It 'has expected number of nested permission properties' { - - ($response.permissions | Get-Member -MemberType NoteProperty).count | Should -Be 7 - - } - - It 'has expected boolean false property value' { - - $response.permissions.FalseKey | Should -Be $False - - - } - - It 'has expected boolean true property value' { - - - $response.permissions.TrueKey | Should -Be $True - - } - - It 'has expected integer property value' { - - - $response.permissions.IntegerKey | Should -Be 1 - - } - - It 'outputs object with expected typename' { - - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.Safe.Member.Gen2 - - } - - } - } } \ No newline at end of file diff --git a/Tests/Set-PASUser.Tests.ps1 b/Tests/Set-PASUser.Tests.ps1 index 2d3ba3a5..557bc5ea 100644 --- a/Tests/Set-PASUser.Tests.ps1 +++ b/Tests/Set-PASUser.Tests.ps1 @@ -47,66 +47,15 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { Context 'Mandatory Parameters' { - It 'specifies parameter UserName as mandatory for ParameterSet Gen1' { + It 'specifies parameter UserName as mandatory' { - (Get-Command Set-PASUser).Parameters['UserName'].ParameterSets['Gen1'].IsMandatory | Should -Be $true - - } - - It 'specifies parameter UserName as mandatory for ParameterSet Gen2' { - - (Get-Command Set-PASUser).Parameters['UserName'].ParameterSets['Gen2'].IsMandatory | Should -Be $true - - } - - } - - Context 'Input - Gen1' { - - BeforeEach { - - Mock Invoke-PASRestMethod -MockWith { - [PSCustomObject]@{'Detail1' = 'Detail'; 'Detail2' = 'Detail' } - } - - $InputObj = [pscustomobject]@{ - 'UserName' = 'SomeUser' - 'NewPassword' = $('P_Password' | ConvertTo-SecureString -AsPlainText -Force) - 'FirstName' = 'Some' - 'LastName' = 'User' - 'ExpiryDate' = '10/31/2018' - - } - - $response = $InputObj | Set-PASUser -NewPassword $('P_Password' | ConvertTo-SecureString -AsPlainText -Force) -ExpiryDate '10/31/2018' -UseClassicAPI - - } - - It 'sends request' { - - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It - - } - - It 'sends request to expected endpoint' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { - - $URI -eq "$($Script:psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/SomeUser" - - } -Times 1 -Exactly -Scope It - - } - - It 'uses expected method' { - - Assert-MockCalled Invoke-PASRestMethod -ParameterFilter { $Method -match 'PUT' } -Times 1 -Exactly -Scope It + (Get-Command Set-PASUser).Parameters['UserName'].Attributes.Mandatory | Select-Object -Unique | Should -Be $true } } - Context 'Input - Gen2' { + Context 'Input' { BeforeEach { @@ -243,6 +192,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } $InputObj = [pscustomobject]@{ + 'id' = 1234 'UserName' = 'SomeUser' 'NewPassword' = $('P_Password' | ConvertTo-SecureString -AsPlainText -Force) 'FirstName' = 'Some' @@ -251,7 +201,16 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - $response = $InputObj | Set-PASUser -NewPassword $('P_Password' | ConvertTo-SecureString -AsPlainText -Force) -ExpiryDate '10/31/2018' -UseClassicAPI + Mock Get-PASUser -MockWith { + [pscustomobject]@{ + 'id' = 1234 + 'UserName' = 'SomeUser' + 'FirstName' = 'Some' + 'LastName' = 'User' + } + } + + $response = $InputObj | Set-PASUser } @@ -269,7 +228,7 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { It 'outputs object with expected typename' { - $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.User + $response | Get-Member | Select-Object -ExpandProperty typename -Unique | Should -Be psPAS.CyberArk.Vault.User.Extended } diff --git a/Tests/Unblock-PASUser.Tests.ps1 b/Tests/Unblock-PASUser.Tests.ps1 index 595f8e15..00367370 100644 --- a/Tests/Unblock-PASUser.Tests.ps1 +++ b/Tests/Unblock-PASUser.Tests.ps1 @@ -66,15 +66,6 @@ Describe $($PSCommandPath -Replace '.Tests.ps1') { } - It 'sends request to Classic API' { - Unblock-PASUser -UserName MrFatFingers -Suspended $false - Assert-MockCalled Invoke-PASRestMethod -Times 1 -Exactly -Scope It -ParameterFilter { - $URI -eq 'https://SomeURL/SomeApp/WebServices/PIMServices.svc/Users/MrFatFingers' - } - - } - - } } diff --git a/psPAS/Functions/AccountGroups/Get-PASAccountGroup.ps1 b/psPAS/Functions/AccountGroups/Get-PASAccountGroup.ps1 index da94dec7..fbcbc9f8 100644 --- a/psPAS/Functions/AccountGroups/Get-PASAccountGroup.ps1 +++ b/psPAS/Functions/AccountGroups/Get-PASAccountGroup.ps1 @@ -1,54 +1,22 @@ # .ExternalHelp psPAS-help.xml function Get-PASAccountGroup { - [CmdletBinding(DefaultParameterSetName = 'Gen2')] + [CmdletBinding()] param( [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [string]$Safe, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' - )] - [Alias('UseClassicAPI')] - [switch]$UseGen1API + [string]$Safe ) - begin { }#begin + begin { + Assert-VersionRequirement -RequiredVersion 9.10 + }#begin process { - switch ($PSCmdlet.ParameterSetName) { - - 'Gen1' { - - Assert-VersionRequirement -RequiredVersion 10.5 -MaximumVersion 12.3 - #Create URL for Request - $URI = "$($psPASSession.BaseURI)/API/Safes/$($Safe | Get-EscapedString)/AccountGroups" - - break - - } - - default { - - Assert-VersionRequirement -RequiredVersion 9.10 - #Create URL for Request - $URI = "$($psPASSession.BaseURI)/API/AccountGroups?$($PSBoundParameters | Get-PASParameter | ConvertTo-QueryString)" - - } - - } - + #Create URL for Request + $URI = "$($psPASSession.BaseURI)/API/AccountGroups?$($PSBoundParameters | Get-PASParameter | ConvertTo-QueryString)" #send request to PAS web service $result = Invoke-PASRestMethod -Uri $URI -Method GET diff --git a/psPAS/Functions/Accounts/Add-PASPendingAccount.ps1 b/psPAS/Functions/Accounts/Add-PASPendingAccount.ps1 deleted file mode 100644 index 124e61a7..00000000 --- a/psPAS/Functions/Accounts/Add-PASPendingAccount.ps1 +++ /dev/null @@ -1,180 +0,0 @@ -# .ExternalHelp psPAS-help.xml -function Add-PASPendingAccount { - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingUserNameAndPassWordParams', '', Justification = 'Username not used for authentication')] - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPlainTextForPassword', 'LastPasswordSet', Justification = 'Parameter does not hold password')] - [CmdletBinding()] - param( - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true - )] - [ValidateNotNullOrEmpty()] - [string]$UserName, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true - )] - [string]$Address, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true - )] - [datetime]$AccountDiscoveryDate, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [ValidateSet('Windows', 'Unix')] - [string]$OSType, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true - )] - [ValidateSet('enabled', 'disabled')] - [string]$AccountEnabled, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$AccountOSGroups, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [ValidateSet('domain', 'local')] - [string]$AccountType, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$DiscoveryPlatformType, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$Domain, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$LastLogonDate, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$LastPasswordSet, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [boolean]$PasswordNeverExpires, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$OSVersion, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$OU, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [ValidateSet('Privileged', 'Non-privileged')] - [string]$AccountCategory, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$AccountCategoryCriteria, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$UserDisplayName, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$AccountDescription, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$AccountExpirationDate, - - [string]$UID, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [string]$GID, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [ValidateSet('Workstation', 'Server')] - [string]$MachineOSFamily - ) - - begin { - #!Depracated above 13.2 - Assert-VersionRequirement -MaximumVersion 13.2 - }#begin - - process { - - #Create URL for Request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/PendingAccounts" - - #Get all parameters that will be sent in the request - $boundParameters = $PSBoundParameters | Get-PASParameter - - if ($PSBoundParameters.ContainsKey('AccountDiscoveryDate')) { - - #Convert ExpiryDate to string in Required format - $Date = (Get-Date $AccountDiscoveryDate.ToUniversalTime() -Format 'yyyy-MM-ddTHH:mm:ssZ').ToString() - - #Include date string in request - $boundParameters['AccountDiscoveryDate'] = $Date - - } - - #Create body of request - $body = @{ - - #pendingaccount node - 'pendingAccount' = $boundParameters | Get-PASParameter - - #JSON object - } | ConvertTo-Json - - #send request to PAS web service - Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body - - }#process - - end { }#end - -} \ No newline at end of file diff --git a/psPAS/Functions/Accounts/Get-PASAccountActivity.ps1 b/psPAS/Functions/Accounts/Get-PASAccountActivity.ps1 index 17729d8e..38166bf1 100644 --- a/psPAS/Functions/Accounts/Get-PASAccountActivity.ps1 +++ b/psPAS/Functions/Accounts/Get-PASAccountActivity.ps1 @@ -1,58 +1,25 @@ # .ExternalHelp psPAS-help.xml function Get-PASAccountActivity { - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', 'UseGen1API', Justification = 'False Positive')] - [CmdletBinding(DefaultParameterSetName = 'Gen2')] + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', Justification = 'False Positive')] + [CmdletBinding()] param( [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [Alias('id')] - [string]$AccountID, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' - )] - [Alias('UseClassicAPI')] - [switch]$UseGen1API - + [string]$AccountID ) - begin { }#begin + begin { + Assert-VersionRequirement -RequiredVersion 13.2 + }#begin process { - switch ($PSCmdlet.ParameterSetName) { - - 'Gen1' { - - #!Depracated above 13.2 - Assert-VersionRequirement -MaximumVersion 13.2 - #URL for Request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc" - - break - - } - - default { - - Assert-VersionRequirement -RequiredVersion 13.2 - #URL for Request - $URI = "$($psPASSession.BaseURI)/api" - - } - - } + #URL for Request + $URI = "$($psPASSession.BaseURI)/api" #Create request URL $URI = "$URI/Accounts/$($AccountID | Get-EscapedString)/Activities" @@ -62,25 +29,8 @@ function Get-PASAccountActivity { if ($null -ne $result) { - switch ($PSCmdlet.ParameterSetName) { - - 'Gen1' { - - $result = $result.GetAccountActivitiesResult - $typename = 'psPAS.CyberArk.Vault.Account.Activity' - - break - - } - - default { - - $result = $result.Activities - $typename = 'psPAS.CyberArk.Vault.Account.Activity.Gen2' - - } - - } + $result = $result.Activities + $typename = 'psPAS.CyberArk.Vault.Account.Activity.Gen2' #Return Results $result | Add-ObjectDetail -typename $typename diff --git a/psPAS/Functions/Accounts/Invoke-PASCPMOperation.ps1 b/psPAS/Functions/Accounts/Invoke-PASCPMOperation.ps1 index d0356482..1562ddd7 100644 --- a/psPAS/Functions/Accounts/Invoke-PASCPMOperation.ps1 +++ b/psPAS/Functions/Accounts/Invoke-PASCPMOperation.ps1 @@ -38,11 +38,6 @@ function Invoke-PASCPMOperation { ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'Change' )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'ChangeCredentials' - )] [switch]$ChangeTask, [parameter( @@ -83,22 +78,6 @@ function Invoke-PASCPMOperation { )] [boolean]$ChangeEntireGroup, - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'ChangeCredentials' - )] - [ValidateSet('Yes', 'No')] - [string]$ImmediateChangeByCPM, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'ChangeCredentials' - )] - [ValidateSet('Yes', 'No')] - [string]$ChangeCredsForGroup, - [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, @@ -125,19 +104,6 @@ function Invoke-PASCPMOperation { switch ($PSCmdlet.ParameterSetName) { - 'ChangeCredentials' { - - #!Depracated above 13.2 - Assert-VersionRequirement -MaximumVersion 13.2 - - #add ImmediateChangeByCPM to header as key=value pair - $ThisRequest['WebSession'].Headers['ImmediateChangeByCPM'] = $ImmediateChangeByCPM - - #create request body - $ThisRequest['Body'] = $boundParameters | ConvertTo-Json - - } - 'VerifyCredentials' { Assert-VersionRequirement -SelfHosted diff --git a/psPAS/Functions/OnboardingRules/New-PASOnboardingRule.ps1 b/psPAS/Functions/OnboardingRules/New-PASOnboardingRule.ps1 index e013d286..49da7f4c 100644 --- a/psPAS/Functions/OnboardingRules/New-PASOnboardingRule.ps1 +++ b/psPAS/Functions/OnboardingRules/New-PASOnboardingRule.ps1 @@ -1,55 +1,28 @@ # .ExternalHelp psPAS-help.xml function New-PASOnboardingRule { - [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'Gen2')] + [CmdletBinding(SupportsShouldProcess)] param( [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(1, 99)] [string]$TargetPlatformId, [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(1, 28)] [string]$TargetSafeName, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [boolean]$IsAdminIDFilter, - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [ValidateLength(1, 28)] - [string]$DecisionSafeName, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [ValidateLength(1, 99)] - [string]$DecisionPlatformId, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [ValidateSet('Yes', 'No')] - [String]$IsAdminUIDFilter, - [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true @@ -73,8 +46,7 @@ function New-PASOnboardingRule { [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateSet('Equals', 'Begins', 'Ends')] [string]$UserNameMethod, @@ -88,16 +60,14 @@ function New-PASOnboardingRule { [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateSet('Equals', 'Begins', 'Ends')] [string]$AddressMethod, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateSet('Any', 'Privileged', 'NonPrivileged')] [string]$AccountCategoryFilter, @@ -117,7 +87,9 @@ function New-PASOnboardingRule { [string]$RuleDescription ) - begin { }#begin + begin { + Assert-VersionRequirement -RequiredVersion 10.2 + }#begin process { @@ -127,24 +99,9 @@ function New-PASOnboardingRule { #create request body $body = $PSBoundParameters | Get-PASParameter | ConvertTo-Json - #Get Values for ShouldProcess Message - switch ($PSCmdlet.ParameterSetName) { - - 'Gen2' { - Assert-VersionRequirement -RequiredVersion 10.2 - #version 10.2 parameters - $SafeName = $TargetSafeName - $PlatformID = $TargetPlatformId - } - - 'Gen1' { - Assert-VersionRequirement -RequiredVersion 9.8 - #pre 10.2 parameters - $SafeName = $DecisionSafeName - $PlatformID = $DecisionPlatformId - } - - } + #Set variables for ShouldProcess + $SafeName = $TargetSafeName + $PlatformID = $TargetPlatformId if ($PSCmdlet.ShouldProcess($SafeName, "Add On-Boarding Rule Using '$PlatformID'")) { diff --git a/psPAS/Functions/SafeMembers/Add-PASSafeMember.ps1 b/psPAS/Functions/SafeMembers/Add-PASSafeMember.ps1 index bb66e1a1..5bf11b16 100644 --- a/psPAS/Functions/SafeMembers/Add-PASSafeMember.ps1 +++ b/psPAS/Functions/SafeMembers/Add-PASSafeMember.ps1 @@ -2,11 +2,6 @@ function Add-PASSafeMember { [CmdletBinding(DefaultParameterSetName = 'Gen2')] param( - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, @@ -40,11 +35,6 @@ function Add-PASSafeMember { [ValidateNotNullOrEmpty()] [string]$SafeName, - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, @@ -80,11 +70,6 @@ function Add-PASSafeMember { [ValidateScript( { $_ -notmatch '.*(\?|\&).*' })] [string]$MemberName, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -117,11 +102,6 @@ function Add-PASSafeMember { )] [string]$SearchIn, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -154,11 +134,6 @@ function Add-PASSafeMember { )] [datetime]$MembershipExpirationDate, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -167,11 +142,6 @@ function Add-PASSafeMember { [Alias('RestrictedRetrieve')] [boolean]$UseAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -180,11 +150,6 @@ function Add-PASSafeMember { [Alias('Retrieve')] [boolean]$RetrieveAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -193,11 +158,6 @@ function Add-PASSafeMember { [Alias('ListContent')] [boolean]$ListAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -206,11 +166,6 @@ function Add-PASSafeMember { [Alias('Add')] [boolean]$AddAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -219,11 +174,6 @@ function Add-PASSafeMember { [Alias('Update')] [boolean]$UpdateAccountContent, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -232,11 +182,6 @@ function Add-PASSafeMember { [Alias('UpdateMetadata')] [boolean]$UpdateAccountProperties, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -244,11 +189,6 @@ function Add-PASSafeMember { )] [boolean]$InitiateCPMAccountManagementOperations, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -256,11 +196,6 @@ function Add-PASSafeMember { )] [boolean]$SpecifyNextAccountContent, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -269,11 +204,6 @@ function Add-PASSafeMember { [Alias('Rename')] [boolean]$RenameAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -282,11 +212,6 @@ function Add-PASSafeMember { [Alias('Delete')] [boolean]$DeleteAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -295,11 +220,6 @@ function Add-PASSafeMember { [Alias('Unlock')] [boolean]$UnlockAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -307,11 +227,6 @@ function Add-PASSafeMember { )] [boolean]$ManageSafe, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -319,11 +234,6 @@ function Add-PASSafeMember { )] [boolean]$ManageSafeMembers, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -331,11 +241,6 @@ function Add-PASSafeMember { )] [boolean]$BackupSafe, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -344,11 +249,6 @@ function Add-PASSafeMember { [Alias('ViewAudit')] [boolean]$ViewAuditLog, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -357,14 +257,6 @@ function Add-PASSafeMember { [Alias('ViewMembers')] [boolean]$ViewSafeMembers, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [ValidateRange(0, 2)] - [int]$RequestsAuthorizationLevel, - [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -379,11 +271,6 @@ function Add-PASSafeMember { )] [boolean]$requestsAuthorizationLevel2, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -391,11 +278,6 @@ function Add-PASSafeMember { )] [boolean]$AccessWithoutConfirmation, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -404,11 +286,6 @@ function Add-PASSafeMember { [Alias('AddRenameFolder')] [boolean]$CreateFolders, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -416,11 +293,6 @@ function Add-PASSafeMember { )] [boolean]$DeleteFolders, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -463,13 +335,6 @@ function Add-PASSafeMember { [ValidateSet('User', 'Group', 'Role')] [string]$memberType, - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' - )] - [switch]$UseGen1API, - [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $false, @@ -508,6 +373,8 @@ function Add-PASSafeMember { begin { + Assert-VersionRequirement -RequiredVersion 12.1 + #array for parameter names which appear in the top-tier of the JSON object $keysToKeep = [Collections.Generic.List[String]]@( 'MemberName', 'SearchIn', 'MembershipExpirationDate', 'Permissions', 'MemberType' @@ -523,43 +390,8 @@ function Add-PASSafeMember { switch ($PSCmdlet.ParameterSetName) { - ( { $PSItem -match '^Gen1' } ) { - - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/$($SafeName | - Get-EscapedString)/Members" - - if ($PSBoundParameters.ContainsKey('MembershipExpirationDate')) { - - #Convert MembershipExpirationDate to string in Required format - $Date = (Get-Date $MembershipExpirationDate -Format MM/dd/yyyy).ToString() - - #Include date string in request - $boundParameters['MembershipExpirationDate'] = $Date - - } - - #Add permissions array to request in correct order - [array]$boundParameters['Permissions'] = $boundParameters | ConvertTo-SortedPermission -Gen1 - - #Create required request object - $body = @{ - - 'member' = $boundParameters | Get-PASParameter -ParametersToKeep $keysToKeep - - #Ensure all required JSON levels are output - } | ConvertTo-Json -Depth 3 - - break - - } - ( { $PSItem -match '^Gen2' -or '^ReadOnly' -or '^ConnectOnly' -or '^Approver' -or '^AccountsManager' -or '^Full' } ) { - Assert-VersionRequirement -RequiredVersion 12.1 - #Create URL for request $URI = "$($psPASSession.BaseURI)/api/Safes/$($SafeName | Get-EscapedString)/Members" @@ -624,24 +456,6 @@ function Add-PASSafeMember { switch ($PSCmdlet.ParameterSetName) { - ( { $PSItem -match '^Gen1' } ) { - #format output - $result.member | Select-Object MemberName, MembershipExpirationDate, SearchIn, - - @{Name = 'Permissions'; 'Expression' = { - - $result.member.permissions | ConvertFrom-KeyValuePair } - - } | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Safe.Member.Extended -PropertyToAdd @{ - - 'SafeName' = $SafeName - - } - - break - - } - ( { $PSItem -match '^Gen2' -or '^ReadOnly' -or '^ConnectOnly' -or '^Approver' -or '^AccountsManager' -or '^Full' } ) { $result | diff --git a/psPAS/Functions/SafeMembers/Get-PASSafeMember.ps1 b/psPAS/Functions/SafeMembers/Get-PASSafeMember.ps1 index da5a521b..6ec4aa74 100644 --- a/psPAS/Functions/SafeMembers/Get-PASSafeMember.ps1 +++ b/psPAS/Functions/SafeMembers/Get-PASSafeMember.ps1 @@ -17,16 +17,6 @@ function Get-PASSafeMember { ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'Gen2-MemberFilter' )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1-SafeMembers' - )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1-MemberPermissions' - )] [ValidateNotNullOrEmpty()] [string]$SafeName, @@ -73,11 +63,6 @@ function Get-PASSafeMember { ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'Gen2-MemberPermissions' )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1-MemberPermissions' - )] [ValidateNotNullOrEmpty()] [string]$MemberName, @@ -99,23 +84,14 @@ function Get-PASSafeMember { ValueFromPipelinebyPropertyName = $false, ParameterSetName = 'Gen2-MemberFilter' )] - [int]$TimeoutSec, + [int]$TimeoutSec - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1-MemberPermissions' - )] - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1-SafeMembers' - )] - [switch]$UseGen1API ) begin { + Assert-VersionRequirement -RequiredVersion 12.0 + $Request = @{ } $Method = 'GET' $Limit = 25 #default if you call the API with no value @@ -126,18 +102,8 @@ function Get-PASSafeMember { switch ($PSCmdlet.ParameterSetName) { - ( { $PSItem -match '^Gen1-' } ) { - - #Create URL for Gen1 API requests - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/$($SafeName | Get-EscapedString)/Members" - - } - ( { $PSItem -match '^Gen2' } ) { - #Create URL for Gen1 API requests - Assert-VersionRequirement -RequiredVersion 12.0 - #Create URL for Gen2 API requests $URI = "$($psPASSession.BaseURI)/api/Safes/$($SafeName | Get-EscapedString)/Members" @@ -167,23 +133,6 @@ function Get-PASSafeMember { } - 'Gen1-MemberPermissions' { - - #check required version - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for member specific request - $URI = "$URI/$($MemberName | Get-EscapedString)/" - #Send a PUT Request instead of GET - $Method = 'PUT' - #Send an empty body - #Add to Request parameters for PUT Request - $Request['Body'] = @{'member' = @{ } } | ConvertTo-Json - - break - - } - 'Gen2-MemberFilter' { Assert-VersionRequirement -RequiredVersion 12.1 @@ -233,108 +182,57 @@ function Get-PASSafeMember { switch ($PSCmdlet.ParameterSetName) { - 'Gen1-MemberPermissions' { - - #format output - $Output = $result.member | Select-Object MembershipExpirationDate, - - @{Name = 'UserName'; 'Expression' = { $MemberName } }, - - @{Name = 'Permissions'; 'Expression' = { - - $result.member.permissions | ConvertFrom-KeyValuePair } - - } - - } - - 'Gen1-SafeMembers' { - - #output - $Output = $result.members | Select-Object UserName, Permissions - - } - - ( { $PSItem -match '^Gen1-' } ) { + 'Gen2-MemberPermissions' { - #Format and add SafeName to Gen 1 Output - $Output = $Output | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Safe.Member -PropertyToAdd @{ - - 'SafeName' = $SafeName - - } + $Output = $result break } - ( { $PSItem -match '^Gen2' } ) { + default { - if ($null -ne $result) { + $Total = $result.Count - switch ($PSCmdlet.ParameterSetName) { + if ($Total -gt 0) { - 'Gen2-MemberPermissions' { + #Set memberlist as output collection + $Members = [Collections.Generic.List[Object]]::New(($result.value)) - $Output = $result + #Split Request URL into baseURI & any query string value + $URLString = $URI.Split('?') + $URI = $URLString[0] + $queryString = $URLString[1] - break + for ( $Offset = $Limit ; $Offset -lt $Total ; $Offset += $Limit ) { - } + #While more members to return, create nextLink query value + $nextLink = "limit=$Limit&OffSet=$Offset" - default { + if ($null -ne $queryString) { - $Total = $result.Count + #If original request contained a queryString, concatenate with nextLink value. + $nextLink = "$queryString&$nextLink" - if ($Total -gt 0) { - - #Set memberlist as output collection - $Members = [Collections.Generic.List[Object]]::New(($result.value)) - - #Split Request URL into baseURI & any query string value - $URLString = $URI.Split('?') - $URI = $URLString[0] - $queryString = $URLString[1] - - for ( $Offset = $Limit ; $Offset -lt $Total ; $Offset += $Limit ) { - - #While more members to return, create nextLink query value - $nextLink = "limit=$Limit&OffSet=$Offset" - - if ($null -ne $queryString) { - - #If original request contained a queryString, concatenate with nextLink value. - $nextLink = "$queryString&$nextLink" - - } - - - #Request nextLink. Add memberlist to output collection. - $Null = $Members.AddRange((Invoke-PASRestMethod -Uri "$URI`?$nextLink" -Method GET -TimeoutSec $TimeoutSec).value) - - } - - $Output = $Members + } - } - } + #Request nextLink. Add memberlist to output collection. + $Null = $Members.AddRange((Invoke-PASRestMethod -Uri "$URI`?$nextLink" -Method GET -TimeoutSec $TimeoutSec).value) } - } - - $Output = $Output | - Select-Object *, @{Name = 'UserName'; 'Expression' = { $PSItem.MemberName } } | - Add-ObjectDetail -typename psPAS.CyberArk.Vault.Safe.Member.Gen2 + $Output = $Members - break + } } } - $Output + $Output | + Select-Object *, @{Name = 'UserName'; 'Expression' = { $PSItem.MemberName } } | + Add-ObjectDetail -typename psPAS.CyberArk.Vault.Safe.Member.Gen2 } diff --git a/psPAS/Functions/SafeMembers/Set-PASSafeMember.ps1 b/psPAS/Functions/SafeMembers/Set-PASSafeMember.ps1 index 0f6f14ec..bf68e8a1 100644 --- a/psPAS/Functions/SafeMembers/Set-PASSafeMember.ps1 +++ b/psPAS/Functions/SafeMembers/Set-PASSafeMember.ps1 @@ -2,11 +2,6 @@ function Set-PASSafeMember { [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'Gen2')] param( - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, @@ -40,11 +35,6 @@ function Set-PASSafeMember { [ValidateNotNullOrEmpty()] [string]$SafeName, - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, @@ -80,11 +70,6 @@ function Set-PASSafeMember { [ValidateScript( { $_ -notmatch '.*(\?|\&).*' })] [string]$MemberName, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -117,11 +102,6 @@ function Set-PASSafeMember { )] [Nullable[datetime]]$MembershipExpirationDate, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -130,11 +110,6 @@ function Set-PASSafeMember { [Alias('RestrictedRetrieve')] [boolean]$UseAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -143,11 +118,6 @@ function Set-PASSafeMember { [Alias('Retrieve')] [boolean]$RetrieveAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -156,11 +126,6 @@ function Set-PASSafeMember { [Alias('ListContent')] [boolean]$ListAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -182,11 +147,6 @@ function Set-PASSafeMember { [Alias('Update')] [boolean]$UpdateAccountContent, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -195,11 +155,6 @@ function Set-PASSafeMember { [Alias('UpdateMetadata')] [boolean]$UpdateAccountProperties, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -207,11 +162,6 @@ function Set-PASSafeMember { )] [boolean]$InitiateCPMAccountManagementOperations, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -219,11 +169,6 @@ function Set-PASSafeMember { )] [boolean]$SpecifyNextAccountContent, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -232,11 +177,6 @@ function Set-PASSafeMember { [Alias('Rename')] [boolean]$RenameAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -245,11 +185,6 @@ function Set-PASSafeMember { [Alias('Delete')] [boolean]$DeleteAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -258,11 +193,6 @@ function Set-PASSafeMember { [Alias('Unlock')] [boolean]$UnlockAccounts, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -270,11 +200,6 @@ function Set-PASSafeMember { )] [boolean]$ManageSafe, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -282,11 +207,6 @@ function Set-PASSafeMember { )] [boolean]$ManageSafeMembers, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -294,11 +214,6 @@ function Set-PASSafeMember { )] [boolean]$BackupSafe, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -307,11 +222,6 @@ function Set-PASSafeMember { [Alias('ViewAudit')] [boolean]$ViewAuditLog, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -320,14 +230,6 @@ function Set-PASSafeMember { [Alias('ViewMembers')] [boolean]$ViewSafeMembers, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [ValidateRange(0, 2)] - [int]$RequestsAuthorizationLevel, - [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -342,11 +244,6 @@ function Set-PASSafeMember { )] [boolean]$requestsAuthorizationLevel2, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -354,11 +251,6 @@ function Set-PASSafeMember { )] [boolean]$AccessWithoutConfirmation, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -367,11 +259,6 @@ function Set-PASSafeMember { [Alias('AddRenameFolder')] [boolean]$CreateFolders, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -379,11 +266,6 @@ function Set-PASSafeMember { )] [boolean]$DeleteFolders, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, @@ -392,13 +274,6 @@ function Set-PASSafeMember { [Alias('MoveFilesAndFolders')] [boolean]$MoveAccountsAndFolders, - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' - )] - [switch]$UseGen1API, - [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $false, @@ -437,6 +312,8 @@ function Set-PASSafeMember { begin { + Assert-VersionRequirement -RequiredVersion 12.2 + #array for parameter names which appear in the top-tier of the JSON object $keysToKeep = [Collections.Generic.List[String]]@( 'MembershipExpirationDate', 'Permissions' @@ -451,44 +328,8 @@ function Set-PASSafeMember { switch ($PSCmdlet.ParameterSetName) { - ( { $PSItem -match '^Gen1' } ) { - - #check required version - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/$($SafeName | - Get-EscapedString)/Members/$($MemberName | Get-EscapedString)/" - - if ($PSBoundParameters.ContainsKey('MembershipExpirationDate')) { - - #Convert ExpiryDate to string in Required format - $Date = (Get-Date $MembershipExpirationDate -Format MM/dd/yyyy).ToString() - - #Include date string in request - $boundParameters['MembershipExpirationDate'] = $Date - - } - - #Add permissions array to request in correct order - [array]$boundParameters['Permissions'] = $boundParameters | ConvertTo-SortedPermission -Gen1 - - #Create JSON for body of request - $body = @{ - - 'member' = $boundParameters | Get-PASParameter -ParametersToKeep $keysToKeep - - #Ensure all levels of object are output - } | ConvertTo-Json -Depth 3 - - break - - } - ( { $PSItem -match '^Gen2' -or '^ReadOnly' -or '^ConnectOnly' -or '^Approver' -or '^AccountsManager' -or '^Full' } ) { - Assert-VersionRequirement -RequiredVersion 12.2 - $safeMember = Get-PASSafeMember -SafeName $SafeName -MemberName $MemberName if ($null -ne $safeMember) { @@ -562,39 +403,13 @@ function Set-PASSafeMember { if ($null -ne $result) { - switch ($PSCmdlet.ParameterSetName) { - - 'Gen1' { - - #format output - $result.member | Select-Object MembershipExpirationDate, - - @{Name = 'Permissions'; 'Expression' = { - - $result.member.permissions | ConvertFrom-KeyValuePair } - - } | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Safe.Member -PropertyToAdd @{ - - 'UserName' = $MemberName - 'SafeName' = $SafeName - - } + $return = $result | + Select-Object *, @{Name = 'UserName'; 'Expression' = { $PSItem.MemberName } } | + Add-ObjectDetail -typename psPAS.CyberArk.Vault.Safe.Member.Gen2 - break + $return - } - - 'Gen2' { - - $result | - Select-Object *, @{Name = 'UserName'; 'Expression' = { $PSItem.MemberName } } | - Add-ObjectDetail -typename psPAS.CyberArk.Vault.Safe.Member.Gen2 - - break - - } - - } + break } diff --git a/psPAS/Functions/Safes/Find-PASSafe.ps1 b/psPAS/Functions/Safes/Find-PASSafe.ps1 deleted file mode 100644 index 4bd3dbd7..00000000 --- a/psPAS/Functions/Safes/Find-PASSafe.ps1 +++ /dev/null @@ -1,60 +0,0 @@ -# .ExternalHelp psPAS-help.xml -function Find-PASSafe { - [CmdletBinding()] - param( - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $false - )] - [string]$search, - - [parameter( - Mandatory = $false, - ValueFromPipelineByPropertyName = $false - )] - [int]$TimeoutSec - - ) - - begin { - - Assert-VersionRequirement -RequiredVersion 10.1 -MaximumVersion 11.7 - - #Create base URL for request - $URI = "$($psPASSession.BaseURI)/api/Safes" - $SearchQuery = $null - $Limit = 25 #default if you call the API with no value - - }#begin - - process { - - if ( -not [string]::IsNullOrEmpty($search) ) { - - $SearchQuery = "&$($PSBoundParameters | Get-PASParameter | ConvertTo-QueryString)" - - } - - $InitialResponse = Invoke-PASRestMethod -Uri "$URI`?limit=$Limit$SearchQuery" -Method GET -TimeoutSec $TimeoutSec - - $Total = $InitialResponse.Total - - if ($Total -gt 0) { - - $Safes = [Collections.Generic.List[Object]]::New(($InitialResponse.Safes)) - - for ( $Offset = $Limit ; $Offset -lt $Total ; $Offset += $Limit ) { - - $Null = $Safes.AddRange((Invoke-PASRestMethod -Uri "$URI`?limit=$Limit&OffSet=$Offset$searchQuery" -Method GET -TimeoutSec $TimeoutSec).Safes) - - } - - $Safes - - } - - }#process - - end { }#end - -} \ No newline at end of file diff --git a/psPAS/Functions/Safes/Get-PASSafe.ps1 b/psPAS/Functions/Safes/Get-PASSafe.ps1 index b065db3a..dd4379aa 100644 --- a/psPAS/Functions/Safes/Get-PASSafe.ps1 +++ b/psPAS/Functions/Safes/Get-PASSafe.ps1 @@ -47,11 +47,6 @@ function Get-PASSafe { [ValidateNotNullOrEmpty()] [Boolean]$extendedDetails, - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1-byName' - )] [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, @@ -68,32 +63,6 @@ function Get-PASSafe { [ValidateNotNullOrEmpty()] [Boolean]$useCache, - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1-byQuery' - )] - [string]$query, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1-byAll' - )] - [switch]$FindAll, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1-byName' - )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1-byAll' - )] - [switch]$UseGen1API, - [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $false @@ -104,7 +73,6 @@ function Get-PASSafe { begin { $typeName = 'psPAS.CyberArk.Vault.Safe' - $Limit = 25 #default if you call the API with no value }#begin @@ -153,8 +121,6 @@ function Get-PASSafe { } - $returnProperty = 'value' - #define base URL $URI = "$($psPASSession.BaseURI)/API/Safes" @@ -195,50 +161,6 @@ function Get-PASSafe { } - ( { $PSItem -match '^Gen1-' } ) { - - #check required version - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for Gen1 API requests - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes" - - } - - 'Gen1-byName' { - - $returnProperty = 'GetSafeResult' - - #Build URL from base URL - $URI = "$URI/$($SafeName | Get-EscapedString)" - - break - - } - - 'Gen1-byQuery' { - - $returnProperty = 'SearchSafesResult' - - if ($null -ne $queryString) { - - #Build URL from base URL - $URI = "$URI`?$queryString" - - } - - break - - } - - 'Gen1-byAll' { - - $returnProperty = 'GetSafesResult' - - break - - } - } #send request to web service @@ -246,34 +168,6 @@ function Get-PASSafe { switch ($PSCmdlet.ParameterSetName) { - ( { $PSItem -match '^Gen1-' } ) { - - $Total = $result.Total - - if ($Total -gt 0) { - - $Safes = [Collections.Generic.List[Object]]::New(($result.$returnProperty)) - - for ( $Offset = $Limit ; $Offset -lt $Total ; $Offset += $Limit ) { - - $Null = $Safes.AddRange((Invoke-PASRestMethod -Uri "$URI`?limit=$Limit&OffSet=$Offset$searchQuery" -Method GET -TimeoutSec $TimeoutSec).Safes) - - } - - $return = $Safes - - } - - elseif ($null -ne $result) { - - $return = $result.$returnProperty - - } - - break - - } - 'Gen2' { #return list diff --git a/psPAS/Functions/Safes/Remove-PASSafe.ps1 b/psPAS/Functions/Safes/Remove-PASSafe.ps1 index bd0fddd3..3cbaa186 100644 --- a/psPAS/Functions/Safes/Remove-PASSafe.ps1 +++ b/psPAS/Functions/Safes/Remove-PASSafe.ps1 @@ -1,60 +1,24 @@ # .ExternalHelp psPAS-help.xml function Remove-PASSafe { - [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', 'UseGen1API', Justification = 'False Positive')] - [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'Gen2')] + [CmdletBinding(SupportsShouldProcess)] param( [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [ValidateNotNullOrEmpty()] - [string]$SafeName, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' - )] - [switch]$UseGen1API + [string]$SafeName ) - begin { }#begin + begin { + Assert-VersionRequirement -RequiredVersion 12.1 + }#begin process { - switch ($PSCmdlet.ParameterSetName) { - - 'Gen1' { - - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/$($SafeName | - Get-EscapedString)" - - break - - } - - default { - - Assert-VersionRequirement -RequiredVersion 12.1 - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/api/Safes/$($SafeName | Get-EscapedString)" - - break - - } - - } + #Create URL for request + $URI = "$($psPASSession.BaseURI)/api/Safes/$($SafeName | Get-EscapedString)" if ($PSCmdlet.ShouldProcess($SafeName, 'Delete Safe')) { diff --git a/psPAS/Functions/Safes/Set-PASSafe.ps1 b/psPAS/Functions/Safes/Set-PASSafe.ps1 index e4f2ba0b..22d3d81b 100644 --- a/psPAS/Functions/Safes/Set-PASSafe.ps1 +++ b/psPAS/Functions/Safes/Set-PASSafe.ps1 @@ -70,29 +70,14 @@ function Set-PASSafe { ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'Gen2-NumberOfDaysRetention' )] - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1-NumberOfDaysRetention' - )] [ValidateRange(0, 3650)] - [int]$NumberOfDaysRetention, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1-NumberOfVersionsRetention' - )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1-NumberOfDaysRetention' - )] - [switch]$UseGen1API + [int]$NumberOfDaysRetention ) - begin { }#begin + begin { + Assert-VersionRequirement -RequiredVersion 12.2 + }#begin process { @@ -118,43 +103,14 @@ function Set-PASSafe { } } - switch ($PSCmdlet.ParameterSetName) { - - ( { $PSItem -match '^Gen2-' } ) { + $typename = "$typename.Gen2" - Assert-VersionRequirement -RequiredVersion 12.2 + #Create URL for Request + $URI = "$($psPASSession.BaseURI)/api/Safes/$($SafeName | Get-EscapedString)" - $typename = "$typename.Gen2" - - #Create URL for Request - $URI = "$($psPASSession.BaseURI)/api/Safes/$($SafeName | Get-EscapedString)" - - #Create Request Body - $body = $BoundParameters | ConvertTo-Json - - break - - } + #Create Request Body + $body = $BoundParameters | ConvertTo-Json - ( { $PSItem -match '^Gen1-' } ) { - - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for Request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Safes/$($SafeName | Get-EscapedString)" - - #Create Request Body - $body = @{ - - 'safe' = $BoundParameters - - } | ConvertTo-Json - - break - - } - - } if ($PSCmdlet.ShouldProcess($SafeName, 'Update Safe Properties')) { @@ -163,25 +119,7 @@ function Set-PASSafe { if ($null -ne $result) { - switch ($PSCmdlet.ParameterSetName) { - - ( { $PSItem -match '^Gen1-' } ) { - - $return = $result.UpdateSafeResult - - break - - } - - default { - - $return = $result - - break - - } - - } + $return = $result $return | Add-ObjectDetail -typename $typename diff --git a/psPAS/Functions/ServerWebServices/Get-PASSafeShareLogo.ps1 b/psPAS/Functions/ServerWebServices/Get-PASSafeShareLogo.ps1 deleted file mode 100644 index 2f4d190a..00000000 --- a/psPAS/Functions/ServerWebServices/Get-PASSafeShareLogo.ps1 +++ /dev/null @@ -1,36 +0,0 @@ -# .ExternalHelp psPAS-help.xml -function Get-PASSafeShareLogo { - [CmdletBinding()] - param( - [parameter( - Mandatory = $true - )] - [ValidateSet('Square', 'Watermark')] - [String]$ImageType - ) - - begin { - #!Depracated above 13.2 - Assert-VersionRequirement -MaximumVersion 13.2 - }#begin - - process { - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Logo?type=$ImageType" - - #send request to web service - $result = Invoke-PASRestMethod -Uri $URI -Method GET - - - if ($null -ne $result) { - - $result - - } - - }#process - - end { }#end - -} \ No newline at end of file diff --git a/psPAS/Functions/ServerWebServices/Get-PASServerWebService.ps1 b/psPAS/Functions/ServerWebServices/Get-PASServerWebService.ps1 index ad659afb..3be1915e 100644 --- a/psPAS/Functions/ServerWebServices/Get-PASServerWebService.ps1 +++ b/psPAS/Functions/ServerWebServices/Get-PASServerWebService.ps1 @@ -18,14 +18,7 @@ function Get-PASServerWebService { Mandatory = $false, ValueFromPipelinebyPropertyName = $true )] - [string]$PVWAAppName = 'PasswordVault', - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true - )] - [Alias('UseClassicAPI')] - [switch]$UseGen1API + [string]$PVWAAppName = 'PasswordVault' ) @@ -33,29 +26,20 @@ function Get-PASServerWebService { process { - switch ($PSBoundParameters.Keys) { - - 'UseGen1API' { - #!Depracated above 13.2 - Assert-VersionRequirement -MaximumVersion 13.2 + #Create URL for request + $URI = "$BaseURI/$PVWAAppName/API/verify/" - #Create URL for request - $URI = "$BaseURI/$PVWAAppName/WebServices/PIMServices.svc/Verify" - - break - } - - default { - - #Create URL for request - $URI = "$BaseURI/$PVWAAppName/API/verify/" - - } + $Request = @{ + Uri = $URI + Method = 'GET' + } + if ($PSBoundParameters.ContainsKey('WebSession')) { + $Request['WebSession'] = $WebSession } #send request to web service - $result = Invoke-PASRestMethod -Uri $URI -Method GET + $result = Invoke-PASRestMethod @Request if ($null -ne $result) { diff --git a/psPAS/Functions/User/Add-PASGroupMember.ps1 b/psPAS/Functions/User/Add-PASGroupMember.ps1 index 8e4417f7..9d00a833 100644 --- a/psPAS/Functions/User/Add-PASGroupMember.ps1 +++ b/psPAS/Functions/User/Add-PASGroupMember.ps1 @@ -1,83 +1,42 @@ # .ExternalHelp psPAS-help.xml function Add-PASGroupMember { - [CmdletBinding(DefaultParameterSetName = 'Gen2')] + [CmdletBinding()] param( [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [Alias('ID')] [int]$groupId, [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [string]$memberId, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateSet('domain', 'vault')] [string]$memberType, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] - [string]$domainName, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [string]$GroupName, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [string]$UserName + [string]$domainName ) begin { - + Assert-VersionRequirement -RequiredVersion 10.6 }#begin process { - switch ($PSCmdlet.ParameterSetName) { - - 'Gen1' { - - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Groups/$($GroupName | Get-EscapedString)/Users/" - - break - - } - - 'Gen2' { - - Assert-VersionRequirement -RequiredVersion 10.6 - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/API/UserGroups/$groupId/Members" - - break - - } - - } + #Create URL for request + $URI = "$($psPASSession.BaseURI)/API/UserGroups/$groupId/Members" #create request body $Body = $PSBoundParameters | Get-PASParameter -ParametersToRemove GroupName, groupId | ConvertTo-Json diff --git a/psPAS/Functions/User/Get-PASUser.ps1 b/psPAS/Functions/User/Get-PASUser.ps1 index 18b42cfe..824d4e3e 100644 --- a/psPAS/Functions/User/Get-PASUser.ps1 +++ b/psPAS/Functions/User/Get-PASUser.ps1 @@ -101,22 +101,13 @@ function Get-PASUser { ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'Gen2-ExtendedDetails' )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [string]$UserName, + [string]$UserName - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' - )] - [switch]$UseGen1API ) - begin { }#begin + begin { + Assert-VersionRequirement -RequiredVersion 10.9 + }#begin process { @@ -162,8 +153,6 @@ function Get-PASUser { } - Assert-VersionRequirement -RequiredVersion 10.9 - #Get Parameters to include in request $boundParameters = $PSBoundParameters | Get-PASParameter @@ -181,19 +170,6 @@ function Get-PASUser { } - 'Gen1' { - - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/$($UserName | Get-EscapedString)" - - $TypeName = 'psPAS.CyberArk.Vault.User' - - break - - } - } #send request to web service diff --git a/psPAS/Functions/User/New-PASUser.ps1 b/psPAS/Functions/User/New-PASUser.ps1 index c0b4f794..a12c289f 100644 --- a/psPAS/Functions/User/New-PASUser.ps1 +++ b/psPAS/Functions/User/New-PASUser.ps1 @@ -1,43 +1,29 @@ # .ExternalHelp psPAS-help.xml function New-PASUser { - [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'Gen2')] + [CmdletBinding(SupportsShouldProcess)] param( [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 128)] [string]$UserName, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [securestring]$InitialPassword, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [string]$userType, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [AllowEmptyCollection()] [ValidateSet('PIMSU', 'PSM', 'PSMP', 'PVWA', 'WINCLIENT', 'PTA', 'PACLI', 'NAPI', 'XAPI', 'HTTPGW', @@ -46,58 +32,38 @@ function New-PASUser { [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [boolean]$enableUser, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateSet('AuthTypePass', 'AuthTypeLDAP', 'AuthTypeRADIUS')] [string[]]$authenticationMethod, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [string]$Email, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [boolean]$ChangePassOnNextLogon, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [boolean]$ChangePasswordOnTheNextLogon, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [boolean]$passwordNeverExpires, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [string]$distinguishedName, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateSet('AddSafes', 'AuditUsers', 'AddUpdateUsers', 'ResetUsersPasswords', 'ActivateUsers', 'AddNetworkAreas', 'ManageDirectoryMapping', 'ManageServerFileCategories', 'BackupAllSafes', 'RestoreAllSafes')] @@ -106,313 +72,237 @@ function New-PASUser { [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [datetime]$ExpiryDate, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [string]$UserTypeName, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [boolean]$Disabled, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [string]$Location, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [int]$userActivityLogRetentionDays, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateRange(0, 23)] [int]$loginFromHour, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateRange(0, 23)] [int]$loginToHour, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$workStreet, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$workCity, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$workState, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$workZip, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$workCountry, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 319)] [string]$homePage, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 319)] [string]$homeEmail, - [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 319)] [string]$businessEmail, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 319)] [string]$otherEmail, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$homeNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$businessNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$cellularNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$faxNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$pagerNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 99)] [string]$description, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$FirstName, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$MiddleName, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$LastName, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$street, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$city, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$state, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$zip, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$country, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 49)] [string]$title, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 49)] [string]$organization, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 49)] [string]$department, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 49)] [string]$profession, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' - )] - [Alias('UseClassicAPI')] - [switch]$UseGen1API, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateSet('SAML', 'PKI', 'PKIPN', 'FIDO', 'WINDOWS')] [AllowEmptyCollection()] [string[]]$allowedAuthenticationMethods ) - begin { }#begin + begin { + Assert-VersionRequirement -RequiredVersion 10.9 + }#begin process { @@ -426,59 +316,24 @@ function New-PASUser { } - switch ($PSCmdlet.ParameterSetName) { - - 'Gen2' { - - Assert-VersionRequirement -RequiredVersion 10.9 - - if ($PSBoundParameters.Keys -match 'userActivityLogRetentionDays|loginFromHour|loginToHour') { - - Assert-VersionRequirement -RequiredVersion 13.2 - - } - - if ($PSBoundParameters.Keys -match 'allowedAuthenticationMethods') { + if ($PSBoundParameters.Keys -match 'userActivityLogRetentionDays|loginFromHour|loginToHour') { - Assert-VersionRequirement -RequiredVersion 14.4 + Assert-VersionRequirement -RequiredVersion 13.2 - } - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/api/Users" - - $boundParameters = $boundParameters | Format-PASUserObject - - $TypeName = 'psPAS.CyberArk.Vault.User.Extended' - - break - - } - - 'Gen1' { - - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Users" - - if ($PSBoundParameters.ContainsKey('ExpiryDate')) { - - #Convert ExpiryDate to string in Required format - $Date = (Get-Date $ExpiryDate -Format MM/dd/yyyy).ToString() + } - #Include date string in request - $boundParameters['ExpiryDate'] = $Date + if ($PSBoundParameters.Keys -match 'allowedAuthenticationMethods') { - } + Assert-VersionRequirement -RequiredVersion 14.4 - $TypeName = 'psPAS.CyberArk.Vault.User' + } - break + #Create URL for request + $URI = "$($psPASSession.BaseURI)/api/Users" - } + $boundParameters = $boundParameters | Format-PASUserObject - } + $TypeName = 'psPAS.CyberArk.Vault.User.Extended' #Construct Request Body $body = $boundParameters | ConvertTo-Json -Depth 4 diff --git a/psPAS/Functions/User/Remove-PASUser.ps1 b/psPAS/Functions/User/Remove-PASUser.ps1 index e2ff0238..c8d03961 100644 --- a/psPAS/Functions/User/Remove-PASUser.ps1 +++ b/psPAS/Functions/User/Remove-PASUser.ps1 @@ -1,61 +1,23 @@ # .ExternalHelp psPAS-help.xml function Remove-PASUser { - [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'Gen2')] + [CmdletBinding(SupportsShouldProcess)] param( [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] - [int]$id, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [string]$UserName + [int]$id ) begin { - - if ($PSCmdlet.ParameterSetName -eq 'Gen2') { - - Assert-VersionRequirement -RequiredVersion 11.1 - - } - + Assert-VersionRequirement -RequiredVersion 11.1 }#begin process { - switch ($PSCmdlet.ParameterSetName) { - - 'Gen2' { - - $URI = "$($psPASSession.BaseURI)/api/Users/$id" - - $User = $id - - break - - } - - default { - - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create URL for request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/$($UserName | Get-EscapedString)" - - $User = $UserName - - break - - } - - } + $URI = "$($psPASSession.BaseURI)/api/Users/$id" + $User = $id if ($PSCmdlet.ShouldProcess($User, 'Delete User')) { diff --git a/psPAS/Functions/User/Set-PASUser.ps1 b/psPAS/Functions/User/Set-PASUser.ps1 index 8c11ca10..0fe00f36 100644 --- a/psPAS/Functions/User/Set-PASUser.ps1 +++ b/psPAS/Functions/User/Set-PASUser.ps1 @@ -1,58 +1,42 @@ # .ExternalHelp psPAS-help.xml function Set-PASUser { - [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'Gen2')] + [CmdletBinding(SupportsShouldProcess)] param( [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [int]$id, [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 128)] [string]$username, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [securestring]$NewPassword, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [string]$userType, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [boolean]$suspended, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [AllowEmptyCollection()] [ValidateSet('PIMSU', 'PSM', 'PSMP', 'PVWA', 'WINCLIENT', 'PTA', 'PACLI', 'NAPI', 'XAPI', 'HTTPGW', @@ -61,58 +45,38 @@ function Set-PASUser { [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [boolean]$enableUser, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateSet('AuthTypePass', 'AuthTypeLDAP', 'AuthTypeRADIUS')] [string[]]$authenticationMethod, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [string]$Email, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [boolean]$ChangePassOnNextLogon, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [boolean]$ChangePasswordOnTheNextLogon, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [boolean]$passwordNeverExpires, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [string]$distinguishedName, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [AllowEmptyCollection()] [ValidateSet('AddSafes', 'AuditUsers', 'AddUpdateUsers', 'ResetUsersPasswords', 'ActivateUsers', 'AddNetworkAreas', @@ -121,117 +85,81 @@ function Set-PASUser { [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $false )] [datetime]$ExpiryDate, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [string]$UserTypeName, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' - )] - [boolean]$Disabled, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [string]$Location, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [int]$userActivityLogRetentionDays, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] - [ValidateRange(0, 23)] + [ValidateRange(0, 24)] [int]$loginFromHour, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateRange(0, 24)] [int]$loginToHour, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$workStreet, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$workCity, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$workState, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$workZip, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$workCountry, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 319)] [string]$homePage, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 319)] [string]$homeEmail, @@ -239,186 +167,147 @@ function Set-PASUser { [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 319)] [string]$businessEmail, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 319)] [string]$otherEmail, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$homeNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$businessNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$cellularNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$faxNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 24)] [string]$pagerNumber, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 99)] [string]$description, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$FirstName, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$MiddleName, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$LastName, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 29)] [string]$street, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$city, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$state, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$zip, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 19)] [string]$country, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 49)] [string]$title, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 49)] [string]$organization, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 49)] [string]$department, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateLength(0, 49)] [string]$profession, [parameter( Mandatory = $false, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' - )] - [Alias('UseClassicAPI')] - [switch]$UseGen1API, - - [parameter( - Mandatory = $false, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' + ValueFromPipelinebyPropertyName = $true )] [ValidateSet('SAML', 'PKI', 'PKIPN', 'FIDO', 'WINDOWS')] [AllowEmptyCollection()] @@ -426,13 +315,7 @@ function Set-PASUser { ) begin { - - if ($PSCmdlet.ParameterSetName -eq 'Gen2') { - - Assert-VersionRequirement -RequiredVersion 11.1 - - } - + Assert-VersionRequirement -RequiredVersion 11.1 }#begin process { @@ -440,66 +323,30 @@ function Set-PASUser { #Get request parameters $boundParameters = $PSBoundParameters | Get-PASParameter -ParametersToRemove id - switch ($PSCmdlet.ParameterSetName) { - - 'Gen2' { - - if ($PSBoundParameters.Keys -match 'userActivityLogRetentionDays|loginFromHour|loginToHour') { - - Assert-VersionRequirement -RequiredVersion 13.2 - - } - - if ($PSBoundParameters.Keys -match 'allowedAuthenticationMethods') { - - Assert-VersionRequirement -RequiredVersion 14.4 + if ($PSBoundParameters.Keys -match 'userActivityLogRetentionDays|loginFromHour|loginToHour') { - } + Assert-VersionRequirement -RequiredVersion 13.2 - #Create URL for request - $URI = "$($psPASSession.BaseURI)/api/Users/$id" - - $UserObject = Get-PASUser -id $id - if ($null -ne $UserObject) { - Format-PutRequestObject -InputObject $UserObject -boundParameters $BoundParameters -ParametersToRemove id, lastSuccessfulLoginDate, - source, componentUser, groupsMembership, authenticationMethod - } - - $boundParameters = $boundParameters | Format-PASUserObject - - $TypeName = 'psPAS.CyberArk.Vault.User.Extended' - - break - - } - - 'Gen1' { - - Assert-VersionRequirement -MaximumVersion 12.3 - - if ($PSBoundParameters.ContainsKey('ExpiryDate')) { - - #Convert ExpiryDate to string in Required format - $Date = (Get-Date $ExpiryDate -Format MM/dd/yyyy).ToString() - - #Include date string in request - $boundParameters['ExpiryDate'] = $Date + } - } + if ($PSBoundParameters.Keys -match 'allowedAuthenticationMethods') { - #Create URL for request - $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/$($UserName | Get-EscapedString)" + Assert-VersionRequirement -RequiredVersion 14.4 - $TypeName = 'psPAS.CyberArk.Vault.User' + } - #Prepare Request Body - $boundParameters = $boundParameters | Get-PASParameter -ParametersToRemove UserName + #Create URL for request + $URI = "$($psPASSession.BaseURI)/api/Users/$id" - break + $UserObject = Get-PASUser -id $id + if ($null -ne $UserObject) { + Format-PutRequestObject -InputObject $UserObject -boundParameters $BoundParameters -ParametersToRemove id, lastSuccessfulLoginDate, + source, componentUser, groupsMembership, authenticationMethod + } - } + $boundParameters = $boundParameters | Format-PASUserObject - } + $TypeName = 'psPAS.CyberArk.Vault.User.Extended' #deal with newPassword SecureString if ($PSBoundParameters.ContainsKey('NewPassword')) { diff --git a/psPAS/Functions/User/Unblock-PASUser.ps1 b/psPAS/Functions/User/Unblock-PASUser.ps1 index 9784f0b6..451c0363 100644 --- a/psPAS/Functions/User/Unblock-PASUser.ps1 +++ b/psPAS/Functions/User/Unblock-PASUser.ps1 @@ -1,66 +1,25 @@ # .ExternalHelp psPAS-help.xml function Unblock-PASUser { - - [CmdletBinding(DefaultParameterSetName = 'Gen2')] + [CmdletBinding()] param( [parameter( Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen2' - )] - [int]$id, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $true, - ParameterSetName = 'Gen1' + ValueFromPipelinebyPropertyName = $true )] - [string]$UserName, - - [parameter( - Mandatory = $true, - ValueFromPipelinebyPropertyName = $false, - ParameterSetName = 'Gen1' - )] - [ValidateSet($false)] - [boolean]$Suspended + [int]$id ) begin { - + Assert-VersionRequirement -RequiredVersion 10.10 $Request = @{'WebSession' = $psPASSession.WebSession } }#begin process { - switch ($PSCmdlet.ParameterSetName) { - - 'Gen2' { - - Assert-VersionRequirement -RequiredVersion 10.10 - - #Create request - $Request['URI'] = "$($psPASSession.BaseURI)/api/Users/$id/Activate" - $Request['Method'] = 'POST' - - break - - } - - 'Gen1' { - - Assert-VersionRequirement -MaximumVersion 12.3 - - #Create request - $Request['URI'] = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Users/$($UserName | Get-EscapedString)" - $Request['Method'] = 'PUT' - $Request['Body'] = $PSBoundParameters | Get-PASParameter -ParametersToRemove UserName | ConvertTo-Json - - break - - } - } + #Create request + $Request['URI'] = "$($psPASSession.BaseURI)/api/Users/$id/Activate" + $Request['Method'] = 'POST' #send request to web service $result = Invoke-PASRestMethod @Request diff --git a/psPAS/Private/Format-PASUserObject.ps1 b/psPAS/Private/Format-PASUserObject.ps1 index fd747d23..119de331 100644 --- a/psPAS/Private/Format-PASUserObject.ps1 +++ b/psPAS/Private/Format-PASUserObject.ps1 @@ -29,6 +29,7 @@ function Format-PASUserObject { $phonesParams = [Collections.Generic.List[String]]@('homeNumber', 'businessNumber', 'cellularNumber', 'faxNumber', 'pagerNumber') $personalDetailsParams = [Collections.Generic.List[String]]@('street', 'city', 'state', 'zip', 'country', 'title', 'organization', 'department', 'profession', 'FirstName', 'middleName', 'LastName') + $arrayParams = [Collections.Generic.List[String]]@('allowedAuthenticationMethods') } process { @@ -39,6 +40,13 @@ function Format-PASUserObject { #Process each key of the input hashtable switch ($UserProperties.keys) { + { $arrayParams -contains $PSItem } { + + #Ensure value is an array, even if only a single value is provided + $UserObject[$PSItem] = @($UserObject[$PSItem]) + + } + 'ExpiryDate' { if ($($UserProperties['ExpiryDate']).GetType().FullName -eq 'System.DateTime') { diff --git a/psPAS/psPAS.psd1 b/psPAS/psPAS.psd1 index 97d12d62..3a442db2 100644 --- a/psPAS/psPAS.psd1 +++ b/psPAS/psPAS.psd1 @@ -113,7 +113,6 @@ 'Get-PASLoggedOnUser', 'Add-PASGroupMember', 'Get-PASAccountActivity', - 'Add-PASPendingAccount', 'Get-PASSafe', 'Add-PASAccountGroupMember', 'New-PASAccountGroup', @@ -121,7 +120,6 @@ 'Get-PASOnboardingRule', 'Remove-PASOnboardingRule', 'Get-PASServer', - 'Get-PASSafeShareLogo', 'Get-PASServerWebService', 'Get-PASAccountPassword', 'Get-PASSafeMember', @@ -172,7 +170,6 @@ 'Get-PASDirectoryMapping', 'Remove-PASDirectory', 'Set-PASDirectoryMapping', - 'Find-PASSafe', 'Get-PASSession', 'Use-PASSession', 'Invoke-PASCPMOperation',