diff --git a/.github/workflows/powershell-module-ci.yml b/.github/workflows/powershell-module-ci.yml index 8bbe51736..9142a4f6e 100644 --- a/.github/workflows/powershell-module-ci.yml +++ b/.github/workflows/powershell-module-ci.yml @@ -77,6 +77,10 @@ jobs: - name: Install dependencies if: steps.cacher.outputs.cache-hit != 'true' shell: pwsh + env: + PESTER_APIKEY: ${{ secrets.PESTER_APIKEY }} + PESTER_ORGID: ${{ secrets.PESTER_ORGID }} + PESTER_MSP_APIKEY: ${{ secrets.PESTER_MSP_APIKEY }} run: | Set-PSRepository PSGallery -InstallationPolicy Trusted @@ -103,6 +107,7 @@ jobs: Install-Module -Name $RequiredModule -Repository:($($PSDependencies[$RequiredModule].Repository)) -RequiredVersion:($($PSDependencies[$RequiredModule].RequiredVersion)) -AllowPrerelease -Force } } + Validate-Module: needs: ["Setup-Build-Dependancies", "Check-PR-Labels"] runs-on: ubuntu-latest @@ -121,10 +126,45 @@ jobs: shell: pwsh run: | . "./PowerShell/JumpCloud Module/Tests/InvokePester.ps1" -ModuleValidation - Test-Module: + Setup-Org: needs: ["Setup-Build-Dependancies", "Check-PR-Labels"] runs-on: ubuntu-latest + name: Setup Org Upload Variable Artifact + steps: + - uses: actions/checkout@v4 + with: + sparse-checkout: | + PowerShell + - uses: actions/cache@v3 + with: + path: "/home/runner/.local/share/powershell/Modules/" + key: PS-Dependancies + - name: Setup Org Variables + shell: pwsh + env: + PESTER_APIKEY: ${{ secrets.PESTER_APIKEY }} + PESTER_ORGID: ${{ secrets.PESTER_ORGID }} + PESTER_MSP_APIKEY: ${{ secrets.PESTER_MSP_APIKEY }} + run: | + # Setup Org + # $variableArray = New-Object System.Collections.Generic.List[PSCustomObject] + # Load Get-Config.ps1 + . "./PowerShell/Deploy/Get-Config.ps1" + Write-Host ('[status] Setting up org') + $variables = . ("./PowerShell/JumpCloud Module/Tests/SetupOrg.ps1") -JumpCloudApiKey "$env:PESTER_APIKEY" -JumpCloudApiKeyMsp "$env:PESTER_MSP_APIKEY" + $variables | ConvertTo-Json -Depth 10 | Out-File -FilePath /home/runner/.local/share/powershell/Modules/PesterVariables.json + - uses: actions/upload-artifact@v3 + with: + name: jumpcloud-vars + path: /home/runner/.local/share/powershell/Modules/PesterVariables.json + Test-Module: + needs: ["Setup-Build-Dependancies", "Check-PR-Labels", "Setup-Org"] + runs-on: ubuntu-latest timeout-minutes: 75 + strategy: + fail-fast: false + matrix: + job_group: [0, 1, 2] name: Run Pester Tests and Upload Results steps: - uses: actions/checkout@v4 @@ -135,6 +175,9 @@ jobs: with: path: "/home/runner/.local/share/powershell/Modules/" key: PS-Dependancies + - uses: actions/download-artifact@v3 + with: + name: jumpcloud-vars - name: Test PWSH Module shell: pwsh env: @@ -142,7 +185,26 @@ jobs: PESTER_ORGID: ${{ secrets.PESTER_ORGID }} PESTER_MSP_APIKEY: ${{ secrets.PESTER_MSP_APIKEY }} run: | - . "./PowerShell/JumpCloud Module/Tests/InvokePester.ps1" -JumpCloudApiKey "$env:PESTER_APIKEY" -JumpCloudApiKeyMsp "$env:PESTER_MSP_APIKEY" -JumpCloudMspOrg "$env:PESTER_ORGID" -ExcludeTagList "ModuleValidation", "JCDeployment", "MSP", "JCModule" -IncludeTagList "*" -RequiredModulesRepo "PSGallery" + # Setup Variables for Pester Run + $env:job_group = ${{ matrix.job_group }} + $PesterParams = Get-Content -Raw ${{ github.workspace }}/PesterVariables.json | ConvertFrom-JSON + write-host "[status] Importing $($PesterParams.count) variables from SetupOrg" + $PesterParams | Foreach-Object { + if ($_.Name){ + Write-Host ("[status] Setting variable $($_.Name) with value $($_.Value)") + Set-Variable -Name $_.Name -Value $_.Value -Scope Global + } + } + Set-Variable -Name PesterParams_ApiKey -Value "$env:PESTER_APIKEY" -Scope Global + + # Import JC Module + Import-Module "${{github.workspace}}/PowerShell/JumpCloud Module/JumpCloud.psd1" + + # Authenticate to JC Org + Connect-JCOnline -JumpCloudApiKey:("$env:PESTER_APIKEY") -force | Out-Null + + # Invoke Pester + . "./PowerShell/JumpCloud Module/Tests/InvokePester.ps1" -JumpCloudApiKey "$env:PESTER_APIKEY" -ExcludeTagList "ModuleValidation", "JCDeployment", "MSP", "JCModule" -IncludeTagList "*" -RequiredModulesRepo "PSGallery" Test-Module-MSP: needs: ["Setup-Build-Dependancies", "Check-PR-Labels"] runs-on: ubuntu-latest @@ -163,4 +225,6 @@ jobs: PESTER_MSP_APIKEY: ${{ secrets.PESTER_MSP_APIKEY }} PESTER_PROVIDER_ID: ${{ secrets.PESTER_PROVIDER_ID }} run: | - . "./PowerShell/JumpCloud Module/Tests/InvokePester.ps1" -JumpCloudApiKey "$env:PESTER_APIKEY" -JumpCloudApiKeyMsp "$env:PESTER_MSP_APIKEY" -JumpCloudMspOrg "$env:PESTER_ORGID" -ExcludeTagList "None" -IncludeTagList "MSP" -RequiredModulesRepo "PSGallery" + Set-Variable -Name PesterParams_ApiKeyMsp -Value "$env:PESTER_MSP_APIKEY" -Scope Global + + . "./PowerShell/JumpCloud Module/Tests/InvokePester.ps1" -JumpCloudApiKeyMsp "$env:PESTER_MSP_APIKEY" -JumpCloudMspOrg "$env:PESTER_ORGID" -ProviderID "$env:PESTER_PROVIDER_ID" -RequiredModulesRepo "PSGallery" -MSP diff --git a/.gitignore b/.gitignore index e7dcf8f9f..2835b809e 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,7 @@ /scripts/automation/Radius/Config.ps1 /scripts/automation/Radius/users.json __pycache__/ -*.pyc \ No newline at end of file +*.pyc +# Ignore PWSH CSV Import/Update Files: +# /PowerShell/JumpCloud Module/Tests/Csv_Files/import/* +# /PowerShell/JumpCloud Module/Tests/Csv_Files/update/* \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/JumpCloud.psd1 b/PowerShell/JumpCloud Module/JumpCloud.psd1 index e60e8b4f9..57710219e 100644 --- a/PowerShell/JumpCloud Module/JumpCloud.psd1 +++ b/PowerShell/JumpCloud Module/JumpCloud.psd1 @@ -3,157 +3,158 @@ # # Generated by: JumpCloud Solutions Architect Team # -# Generated on: 10/19/2023 +# Generated on: 11/2/2023 # @{ - # Script module or binary module file associated with this manifest. - RootModule = 'JumpCloud.psm1' +# Script module or binary module file associated with this manifest. +RootModule = 'JumpCloud.psm1' - # Version number of this module. - ModuleVersion = '2.8.1' +# Version number of this module. +ModuleVersion = '2.8.2' - # Supported PSEditions - # CompatiblePSEditions = @() +# Supported PSEditions +# CompatiblePSEditions = @() - # ID used to uniquely identify this module - GUID = '31c023d1-a901-48c4-90a3-082f91b31646' +# ID used to uniquely identify this module +GUID = '31c023d1-a901-48c4-90a3-082f91b31646' - # Author of this module - Author = 'JumpCloud Solutions Architect Team' +# Author of this module +Author = 'JumpCloud Solutions Architect Team' - # Company or vendor of this module - CompanyName = 'JumpCloud' +# Company or vendor of this module +CompanyName = 'JumpCloud' - # Copyright statement for this module - Copyright = '(c) JumpCloud. All rights reserved.' +# Copyright statement for this module +Copyright = '(c) JumpCloud. All rights reserved.' - # Description of the functionality provided by this module - Description = 'PowerShell functions to manage a JumpCloud Directory-as-a-Service' +# Description of the functionality provided by this module +Description = 'PowerShell functions to manage a JumpCloud Directory-as-a-Service' - # Minimum version of the PowerShell engine required by this module - PowerShellVersion = '4.0' +# Minimum version of the PowerShell engine required by this module +PowerShellVersion = '4.0' - # Name of the PowerShell host required by this module - # PowerShellHostName = '' +# Name of the PowerShell host required by this module +# PowerShellHostName = '' - # Minimum version of the PowerShell host required by this module - # PowerShellHostVersion = '' +# Minimum version of the PowerShell host required by this module +# PowerShellHostVersion = '' - # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. - # DotNetFrameworkVersion = '' +# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. +# DotNetFrameworkVersion = '' - # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. - # ClrVersion = '' +# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. +# ClrVersion = '' - # Processor architecture (None, X86, Amd64) required by this module - # ProcessorArchitecture = '' +# Processor architecture (None, X86, Amd64) required by this module +# ProcessorArchitecture = '' - # Modules that must be imported into the global environment prior to importing this module - RequiredModules = @('JumpCloud.SDK.DirectoryInsights', - 'JumpCloud.SDK.V1', - 'JumpCloud.SDK.V2') +# Modules that must be imported into the global environment prior to importing this module +RequiredModules = @('JumpCloud.SDK.DirectoryInsights', + 'JumpCloud.SDK.V1', + 'JumpCloud.SDK.V2') - # Assemblies that must be loaded prior to importing this module - # RequiredAssemblies = @() +# Assemblies that must be loaded prior to importing this module +# RequiredAssemblies = @() - # Script files (.ps1) that are run in the caller's environment prior to importing this module. - # ScriptsToProcess = @() +# Script files (.ps1) that are run in the caller's environment prior to importing this module. +# ScriptsToProcess = @() - # Type files (.ps1xml) to be loaded when importing this module - # TypesToProcess = @() +# Type files (.ps1xml) to be loaded when importing this module +# TypesToProcess = @() - # Format files (.ps1xml) to be loaded when importing this module - # FormatsToProcess = @() +# Format files (.ps1xml) to be loaded when importing this module +# FormatsToProcess = @() - # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess - # NestedModules = @() +# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess +# NestedModules = @() - # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. - FunctionsToExport = 'Add-JCAssociation', 'Add-JCCommandTarget', - 'Add-JCRadiusReplyAttribute', 'Add-JCSystemGroupMember', - 'Add-JCSystemUser', 'Add-JCUserGroupMember', 'Backup-JCOrganization', - 'Connect-JCOnline', 'Copy-JCAssociation', 'Get-JCAssociation', - 'Get-JCBackup', 'Get-JCCommand', 'Get-JCCommandResult', - 'Get-JCCommandTarget', 'Get-JCEvent', 'Get-JCEventCount', 'Get-JCGroup', - 'Get-JCOrganization', 'Get-JCPolicy', 'Get-JCPolicyResult', - 'Get-JCPolicyTargetGroup', 'Get-JCPolicyTargetSystem', - 'Get-JCRadiusReplyAttribute', 'Get-JCRadiusServer', 'Get-JCSystem', - 'Get-JCSystemApp', 'Get-JCSystemGroupMember', 'Get-JCSystemInsights', - 'Get-JCSystemUser', 'Get-JCUser', 'Get-JCUserGroupMember', - 'Import-JCCommand', 'Import-JCMSPFromCSV', 'Import-JCUsersFromCSV', - 'Invoke-JCCommand', 'Invoke-JCDeployment', 'New-JCCommand', - 'New-JCDeploymentTemplate', 'New-JCImportTemplate', - 'New-JCMSPImportTemplate', 'New-JCPolicy', 'New-JCRadiusServer', - 'New-JCSystemGroup', 'New-JCUser', 'New-JCUserGroup', - 'Remove-JCAssociation', 'Remove-JCCommand', 'Remove-JCCommandResult', - 'Remove-JCCommandTarget', 'Remove-JCPolicy', - 'Remove-JCRadiusReplyAttribute', 'Remove-JCRadiusServer', - 'Remove-JCSystem', 'Remove-JCSystemGroup', - 'Remove-JCSystemGroupMember', 'Remove-JCSystemUser', 'Remove-JCUser', - 'Remove-JCUserGroup', 'Remove-JCUserGroupMember', - 'Send-JCPasswordReset', 'Set-JCCommand', 'Set-JCOrganization', - 'Set-JCPolicy', 'Set-JCRadiusReplyAttribute', 'Set-JCRadiusServer', - 'Set-JCSettingsFile', 'Set-JCSystem', 'Set-JCSystemUser', 'Set-JCUser', - 'Set-JCUserGroupLDAP', 'Update-JCModule', 'Update-JCMSPFromCSV', - 'Update-JCUsersFromCSV' +# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. +FunctionsToExport = 'Add-JCAssociation', 'Add-JCCommandTarget', + 'Add-JCRadiusReplyAttribute', 'Add-JCSystemGroupMember', + 'Add-JCSystemUser', 'Add-JCUserGroupMember', 'Backup-JCOrganization', + 'Connect-JCOnline', 'Copy-JCAssociation', 'Get-JCAssociation', + 'Get-JCBackup', 'Get-JCCommand', 'Get-JCCommandResult', + 'Get-JCCommandTarget', 'Get-JCEvent', 'Get-JCEventCount', 'Get-JCGroup', + 'Get-JCOrganization', 'Get-JCPolicy', 'Get-JCPolicyResult', + 'Get-JCPolicyTargetGroup', 'Get-JCPolicyTargetSystem', + 'Get-JCRadiusReplyAttribute', 'Get-JCRadiusServer', 'Get-JCSystem', + 'Get-JCSystemApp', 'Get-JCSystemGroupMember', 'Get-JCSystemInsights', + 'Get-JCSystemUser', 'Get-JCUser', 'Get-JCUserGroupMember', + 'Import-JCCommand', 'Import-JCMSPFromCSV', 'Import-JCUsersFromCSV', + 'Invoke-JCCommand', 'Invoke-JCDeployment', 'New-JCCommand', + 'New-JCDeploymentTemplate', 'New-JCImportTemplate', + 'New-JCMSPImportTemplate', 'New-JCPolicy', 'New-JCRadiusServer', + 'New-JCSystemGroup', 'New-JCUser', 'New-JCUserGroup', + 'Remove-JCAssociation', 'Remove-JCCommand', 'Remove-JCCommandResult', + 'Remove-JCCommandTarget', 'Remove-JCPolicy', + 'Remove-JCRadiusReplyAttribute', 'Remove-JCRadiusServer', + 'Remove-JCSystem', 'Remove-JCSystemGroup', + 'Remove-JCSystemGroupMember', 'Remove-JCSystemUser', 'Remove-JCUser', + 'Remove-JCUserGroup', 'Remove-JCUserGroupMember', + 'Send-JCPasswordReset', 'Set-JCCommand', 'Set-JCOrganization', + 'Set-JCPolicy', 'Set-JCRadiusReplyAttribute', 'Set-JCRadiusServer', + 'Set-JCSettingsFile', 'Set-JCSystem', 'Set-JCSystemUser', 'Set-JCUser', + 'Set-JCUserGroupLDAP', 'Update-JCModule', 'Update-JCMSPFromCSV', + 'Update-JCUsersFromCSV' - # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. - CmdletsToExport = @() +# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. +CmdletsToExport = @() - # Variables to export from this module - VariablesToExport = '*' +# Variables to export from this module +VariablesToExport = '*' - # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. - AliasesToExport = 'New-JCAssociation' +# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. +AliasesToExport = 'New-JCAssociation' - # DSC resources to export from this module - # DscResourcesToExport = @() +# DSC resources to export from this module +# DscResourcesToExport = @() - # List of all modules packaged with this module - # ModuleList = @() +# List of all modules packaged with this module +# ModuleList = @() - # List of all files packaged with this module - # FileList = @() +# List of all files packaged with this module +# FileList = @() - # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. - PrivateData = @{ +# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. +PrivateData = @{ - PSData = @{ + PSData = @{ - # Tags applied to this module. These help with module discovery in online galleries. - Tags = 'JumpCloud', 'DaaS', 'Jump', 'Cloud', 'Directory' + # Tags applied to this module. These help with module discovery in online galleries. + Tags = 'JumpCloud','DaaS','Jump','Cloud','Directory' - # A URL to the license for this module. - LicenseUri = 'https://github.com/TheJumpCloud/support/blob/master/PowerShell/LICENSE' + # A URL to the license for this module. + LicenseUri = 'https://github.com/TheJumpCloud/support/blob/master/PowerShell/LICENSE' - # A URL to the main website for this project. - ProjectUri = 'https://github.com/TheJumpCloud/support/wiki' + # A URL to the main website for this project. + ProjectUri = 'https://github.com/TheJumpCloud/support/wiki' - # A URL to an icon representing this module. - IconUri = 'https://avatars1.githubusercontent.com/u/4927461?s=200&v=4' + # A URL to an icon representing this module. + IconUri = 'https://avatars1.githubusercontent.com/u/4927461?s=200&v=4' - # ReleaseNotes of this module - ReleaseNotes = 'https://git.io/jc-pwsh-releasenotes' + # ReleaseNotes of this module + ReleaseNotes = 'https://git.io/jc-pwsh-releasenotes' - # Prerelease string of this module - # Prerelease = '' + # Prerelease string of this module + # Prerelease = '' - # Flag to indicate whether the module requires explicit user acceptance for install/update/save - # RequireLicenseAcceptance = $false + # Flag to indicate whether the module requires explicit user acceptance for install/update/save + # RequireLicenseAcceptance = $false - # External dependent modules of this module - # ExternalModuleDependencies = @() + # External dependent modules of this module + # ExternalModuleDependencies = @() - } # End of PSData hashtable + } # End of PSData hashtable - } # End of PrivateData hashtable + } # End of PrivateData hashtable - # HelpInfo URI of this module - HelpInfoURI = 'https://github.com/TheJumpCloud/support/wiki' +# HelpInfo URI of this module +HelpInfoURI = 'https://github.com/TheJumpCloud/support/wiki' - # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. - # DefaultCommandPrefix = '' +# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. +# DefaultCommandPrefix = '' } + diff --git a/PowerShell/JumpCloud Module/Public/Association/Add-JCAssociation.ps1 b/PowerShell/JumpCloud Module/Public/Association/Add-JCAssociation.ps1 index 7640f4329..f94133693 100755 --- a/PowerShell/JumpCloud Module/Public/Association/Add-JCAssociation.ps1 +++ b/PowerShell/JumpCloud Module/Public/Association/Add-JCAssociation.ps1 @@ -26,6 +26,7 @@ Function Add-JCAssociation { $FunctionParameters = [ordered]@{ } # Add input parameters from function in to hash table and filter out unnecessary parameters $PSBoundParameters.GetEnumerator() | Where-Object { -not [System.String]::IsNullOrEmpty($_.Value) } | ForEach-Object { $FunctionParameters.Add($_.Key, $_.Value) | Out-Null } + # Check if the type is in param block or a dynamic type # Add action ($FunctionParameters).Add('Action', $Action) | Out-Null # Run the command diff --git a/PowerShell/JumpCloud Module/Public/Policies/PolicyTargets/Get-JCPolicyTargetGroup.ps1 b/PowerShell/JumpCloud Module/Public/Policies/PolicyTargets/Get-JCPolicyTargetGroup.ps1 index 73518518a..0998110b5 100755 --- a/PowerShell/JumpCloud Module/Public/Policies/PolicyTargets/Get-JCPolicyTargetGroup.ps1 +++ b/PowerShell/JumpCloud Module/Public/Policies/PolicyTargets/Get-JCPolicyTargetGroup.ps1 @@ -9,7 +9,7 @@ Function Get-JCPolicyTargetGroup { Write-Verbose 'Verifying JCAPI Key' If ($JCAPIKEY.length -ne 40) { - Connect-JCOnline + Connect-JCOnline } Write-Verbose 'Populating API headers' @@ -35,10 +35,10 @@ Function Get-JCPolicyTargetGroup { Process { switch ($PSCmdlet.ParameterSetName) { 'ByName' { - $Policy = Get-JCPolicy -Name:($PolicyName) + $Policy = Get-JCPolicy -Name:($PolicyName) } 'ById' { - $Policy = Get-JCPolicy -PolicyID:($PolicyID) + $Policy = Get-JCPolicy -PolicyID:($PolicyID) } } If ($Policy) { @@ -47,8 +47,14 @@ Function Get-JCPolicyTargetGroup { $URL = $URL_Template -f $JCUrlBasePath, $PolicyID $Results = Invoke-JCApi -Method:('GET') -Paginate:($true) -Url:($URL) ForEach ($Result In $Results) { - $GroupID = $Result.id - $GroupName = $SystemGroupNameHash[$GroupID].name + # Try-catch block to handle the case where policy group is not assigned a a device group + Try { + $GroupID = $Result.id + $GroupName = $SystemGroupNameHash[$GroupID].name + } Catch { + $GroupID = $null + $GroupName = $null + } $OutputObject = [PSCustomObject]@{ 'PolicyID' = $PolicyID 'PolicyName' = $PolicyName diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_Pester_Tests_1.1.0.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_Pester_Tests_1.1.0.csv deleted file mode 100755 index 94a5fdb81..000000000 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_Pester_Tests_1.1.0.csv +++ /dev/null @@ -1,27 +0,0 @@ -Description,FirstName,LastName,Username,Email,Password,SystemID,Administrator,Group1,Group2,Group3,Group4,Group5,Attribute1_name,Attribute1_value,Attribute2_name,Attribute2_value,Attribute3_name,Attribute3_value,Attribute4_name,Attribute4_value,Attribute5_name,Attribute5_value -Standard Inactive,Delete,Me,ia.user,ia.user@pleasedelete.com,,,,,,,,,,,,,,,,,, -Standard Active,Delete,Me,a.user,a.user@pleasedelete.com,Temp123!,,,,,,,,,,,,,,,,, -Active Bound Blank,Delete,Me,a.bound.std,a.bound.std@pleasedelete.com,Temp123!,5c2e83b2bc6fe97784a8749b,,,,,,,,,,,,,,,, -Active Bound $true,Delete,Me,a.bound.true1,a.bound.true1@pleasedelete.com,Temp123!,5c2e83b2bc6fe97784a8749b,$true,,,,,,,,,,,,,,, -Active Bound $false,Delete,Me,a.bound.false1,a.bound.false1@pleasedelete.com,Temp123!,5c2e83b2bc6fe97784a8749b,$false,,,,,,,,,,,,,,, -Active Bound false,Delete,Me,a.bound.false2,a.bound.false2@pleasedelete.com,Temp123!,5c2e83b2bc6fe97784a8749b,FALSE,,,,,,,,,,,,,,, -Active Bound true,Delete,Me,a.bound.true2,a.bound.true2@pleasedelete.com,Temp123!,5c2e83b2bc6fe97784a8749b,TRUE,,,,,,,,,,,,,,, -Inactive Bound Blank,Delete,Me,ia.bound.std,ia.bound.std@pleasedelete.com,,5c2e83b2bc6fe97784a8749b,,,,,,,,,,,,,,,, -Inactive Bound $true,Delete,Me,ia.bound.true1,ia.bound.true1@pleasedelete.com,,5c2e83b2bc6fe97784a8749b,$true,,,,,,,,,,,,,,, -Inactive Bound $false,Delete,Me,ia.bound.false1,ia.bound.false1@pleasedelete.com,,5c2e83b2bc6fe97784a8749b,$false,,,,,,,,,,,,,,, -Inactive Bound false,Delete,Me,ia.bound.false2,ia.bound.false2@pleasedelete.com,,5c2e83b2bc6fe97784a8749b,FALSE,,,,,,,,,,,,,,, -Inactive Bound true,Delete,Me,ia.bound.true2,ia.bound.true2@pleasedelete.com,,5c2e83b2bc6fe97784a8749b,TRUE,,,,,,,,,,,,,,, -Active 1 Group,Delete,Me,a.1group,a.1group@pleasedelete.com,Temp123!,,,One,,,,,,,,,,,,,, -Inactive 1 Group,Delete,Me,ia.1group,ia.1group@pleasedelete.com,,,,One,,,,,,,,,,,,,, -Active 2 Groups,Delete,Me,a.2group,a.2group@pleasedelete.com,Temp123!,,,One,Two,,,,,,,,,,,,, -Inactive 2 Groups,Delete,Me,ia.2group,ia.2group@pleasedelete.com,,,,One,Two,,,,,,,,,,,,, -Active 5 Groups,Delete,Me,a.5group,a.5group@pleasedelete.com,Temp123!,,,One,Two,Three,Four,Five,,,,,,,,,, -Inactie 5 Groups,Delete,Me,ia.5group,ia.5group@pleasedelete.com,,,,One,Two,Three,Four,Five,,,,,,,,,, -Active 1 Attr,Delete,Me,a.1attr,a.1attr@pleasedelete.com,Temp123!,,,,,,,,Attr1,One,,,,,,,, -Inactive 1 Attr,Delete,Me,ia.1attr,ia.1attr@pleasedelete.com,,,,,,,,,Attr1,One,,,,,,,, -Active 2 Attr,Delete,Me,a.2attr,a.2attr@pleasedelete.com,Temp123!,,,,,,,,Attr1,One,Attr2,Two,,,,,, -Inactive 2 Attr,Delete,Me,ia.2attr,ia.2attr@pleasedelete.com,,,,,,,,,Attr1,One,Attr2,Two,,,,,, -Active 5 Attr,Delete,Me,a.5attr,a.5attr@pleasedelete.com,Temp123!,,,,,,,,Attr1,One,Attr2,Two,Attr3,Three,Attr4,Four,Attr5,Five -Inactive 5 Attr,Delete,Me,ia.5attr,ia.5attr@pleasedelete.com,,,,,,,,,Attr1,One,Attr2,Two,Attr3,Three,Attr4,Four,Attr5,Five -Active 5G 5Attr Bound Admin,Delete,Me,a.all,a.all@pleasedelete.com,Temp123!,5c2e83b2bc6fe97784a8749b,$true,One,Two,Three,Four,Five,Attr1,One,Attr2,Two,Attr3,Three,Attr4,Four,Attr5,Five -Inactive 5G 5Attr Bound Admin,Delete,Me,ia.all,ia.all@pleasedelete.com,,5c2e83b2bc6fe97784a8749b,$true,One,Two,Three,Four,Five,Attr1,One,Attr2,Two,Attr3,Three,Attr4,Four,Attr5,Five diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributes.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributes.csv old mode 100755 new mode 100644 index 539b60d40..e69de29bb --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributes.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributes.csv @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","MiddleName","preferredName","jobTitle","employeeIdentifier","department","costCenter","company","employeeType","description","location","home_streetAddress","home_poBox","home_city","home_state","home_postalCode","home_country","work_streetAddress","work_poBox","work_city","work_state","work_postalCode","work_country","mobile_number","home_number","work_number","work_mobile_number","work_fax_number" -delete,me,delete.me9,deleteme9@pleasedelete.me,Temp123!,middleName,displayName,jobTitle,suhh2,department,costCenter,company,employeeType,decription,location,home_streetAddress,home_poBox,home_city,home_state,home_postalCode,home_country,work_streetAddress,work_poBox,work_city,work_state,work_postalCode,work_country,mobile_number,home_number,work_number,work_mobile_number,work_fax_number -delete2,me2,delete.me10,deleteme10@pleasedelete.me2,Temp123!2,middleName2,displayName2,jobTitle2,suhh1,department2,costCenter2,company2,employeeType2,decription2,location2,home_streetAddress2,home_poBox2,home_city2,home_state2,home_postalCode2,home_country2,work_streetAddress2,work_poBox2,work_city2,work_state2,work_postalCode2,work_country2,mobile_number2,home_number2,work_number2,work_mobile_number2,work_fax_number2 \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributesAndAllCustom.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributesAndAllCustom.csv old mode 100755 new mode 100644 index dd3479347..e69de29bb --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributesAndAllCustom.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributesAndAllCustom.csv @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","MiddleName","preferredName","jobTitle","employeeIdentifier","alternateEmail","manager","managedAppleID","department","costCenter","company","employeeType","description","location","home_streetAddress","home_poBox","home_city","home_state","home_postalCode","home_country","work_streetAddress","work_poBox","work_city","work_state","work_postalCode","work_country","mobile_number","home_number","work_number","work_mobile_number","work_fax_number","SystemID","Administrator","Group1","Group2","Group3","Attribute1_name","Attribute1_value","Attribute2_name","Attribute2_value" -delete,me,delete.me7,deleteme37@pleasedelete.me,Temp123!,middleName,displayName,jobTitle,suhh34,deleteme37ae@pleasedelete.me,,deleteme37maid@pleasedelete.me,department,costCenter,company,employeeType,decription,location,home_streetAddress,home_poBox,home_city,home_state,home_postalCode,home_country,work_streetAddress,work_poBox,work_city,work_state,work_postalCode,work_country,mobile_number,home_number,work_number,work_mobile_number,work_fax_number,,,,,,Attr1,One,Attr2,Two -delete2,me2,delete.me327,deleteme35@pleasedelete.me2,Temp123!2,middleName2,displayName2,jobTitle2,suhhh45,deleteme35ae@pleasedelete.me,,deleteme35maid@pleasedelete.me,department2,costCenter2,company2,employeeType2,decription2,location2,home_streetAddress2,home_poBox2,home_city2,home_state2,home_postalCode2,home_country2,work_streetAddress2,work_poBox2,work_city2,work_state2,work_postalCode2,work_country2,mobile_number2,home_number2,work_number2,work_mobile_number2,work_fax_number2,,,,,,Attr1,One,, \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributesAndAllCustom_import.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_allNewAttributesAndAllCustom_import.csv new file mode 100644 index 000000000..e69de29bb diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_missingAttribute.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_missingAttribute.csv index d66d494a6..e69de29bb 100644 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_missingAttribute.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_missingAttribute.csv @@ -1,2 +0,0 @@ -FirstName, LastName, Username, Email, Password, Attribute1_name, Attribute1_value -missing, attribute, missingAttribute, deletemeMissingAttribute@pleasedelete.me, Temp123!, 9898, \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_telephonyAttributes.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_telephonyAttributes.csv old mode 100755 new mode 100644 index 7ede7f54e..e69de29bb --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_telephonyAttributes.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_telephonyAttributes.csv @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","mobile_number","home_number","work_number","work_mobile_number","work_fax_number" -delete,me,delete.me1,deleteme1@pleasedelete.me,Temp123!,mobile_number,home_number,work_number,work_mobile_number,work_fax_number -delete,me,delete.me2,deleteme2@pleasedelete.me,Temp123!,mobile_number2,home_number2,work_number2,work_mobile_number2,work_fax_number2 \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_uid_guid.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_uid_guid.csv index bce78bbca..e69de29bb 100644 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_uid_guid.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_uid_guid.csv @@ -1,2 +0,0 @@ -FirstName,LastName,Username,Email,Password,unix_guid,unix_uid -delete,meuidgid,Uiduser,deletemeuidgid@pleasedelete.me,Temp123!,9898,9696 \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_uid_guid_import.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_uid_guid_import.csv new file mode 100644 index 000000000..e69de29bb diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_userInformationAttributes.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_userInformationAttributes.csv old mode 100755 new mode 100644 index b768ffc2a..e69de29bb --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_userInformationAttributes.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_userInformationAttributes.csv @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","MiddleName","preferredName","jobTitle","employeeIdentifier","department","costCenter","company","employeeType","description","location" -delete,me,delete.me3,deleteme3@pleasedelete.me,Temp123!,middleName,displayName,jobTitle,employeeIdentifier1234567,department,costCenter,company,employeeType,decription,location -delete,me,delete.me4,deleteme4@pleasedelete.me,Temp123!,middleName,displayName,jobTitle,employeeIdentifier12345678,department,costCenter,company,employeeType,decription,location diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_userLocationAttributes.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_userLocationAttributes.csv old mode 100755 new mode 100644 index 6bcb0f78b..e69de29bb --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_userLocationAttributes.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/ImportExample_userLocationAttributes.csv @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","home_streetAddress","home_poBox","home_city","home_state","home_postalCode","home_country","work_streetAddress","work_poBox","work_city","work_state","work_postalCode","work_country" -delete,me,delete.me5,deleteme5@pleasedelete.me,Temp123!,home_streetAddress,home_poBox,home_city,home_state,home_postalCode,home_country,work_streetAddress,work_poBox,work_city,work_state,work_postalCode,work_country -delete2,me2,delete.me62,deleteme6@pleasedelete.me2,Temp123!2,home_streetAddress2,home_poBox2,home_city2,home_state2,home_postalCode2,home_country2,work_streetAddress2,work_poBox2,work_city2,work_state2,work_postalCode2,work_cou diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/Ldap_Import.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/Ldap_Import.csv index 4986fd53c..e69de29bb 100644 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/Ldap_Import.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/Ldap_Import.csv @@ -1,2 +0,0 @@ -"ldapserver_id","Username","ldap_binding_user","Email","LastName","FirstName" -"5a4bff8dc911807e553de936","jIpJtPAg","yes","jIpJtPAg@pleasedelete.com","Test","Pester" diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/MFA_Import.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/MFA_Import.csv index 2630fc1ac..e69de29bb 100644 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/MFA_Import.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/MFA_Import.csv @@ -1,2 +0,0 @@ -"enable_user_portal_multifactor","Username","EnrollmentDays","Email","LastName","FirstName" -"True","BJAvyWin","9/15/2022 2:20:25 PM","BJAvyWin@pleasedelete.com","Test","Pester" diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/UpdateWithInfoNoAttributeTest.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/UpdateWithInfoNoAttributeTest.csv new file mode 100644 index 000000000..e69de29bb diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/import/custom_attribute.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/import/custom_attribute.csv new file mode 100644 index 000000000..e69de29bb diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/Ldap_Update.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/Ldap_Update.csv index 7a6489769..e69de29bb 100644 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/Ldap_Update.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/Ldap_Update.csv @@ -1,2 +0,0 @@ -"ldap_binding_user","Username","ldapserver_id" -"yes","dYNIfgVL","5a4bff8dc911807e553de936" diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/MFA_Update.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/MFA_Update.csv index 5280d6e1a..e69de29bb 100644 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/MFA_Update.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/MFA_Update.csv @@ -1,2 +0,0 @@ -"Username","EnrollmentDays","enable_user_portal_multifactor" -"WAcOuGEy","9/15/2022 2:22:03 PM","True" diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_AllNewAttributes.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_AllNewAttributes.csv deleted file mode 100755 index 8780a4ee3..000000000 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_AllNewAttributes.csv +++ /dev/null @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","MiddleName","preferredName","jobTitle","employeeIdentifier","department","costCenter","company","employeeType","description","location","home_streetAddress","home_poBox","home_city","home_state","home_postalCode","home_country","work_streetAddress","work_poBox","work_city","work_state","work_postalCode","work_country","mobile_number","home_number","work_number","work_mobile_number","work_fax_number" -deleteupdate70,meupdate70,delete.me9,deleteme9@pleasedelete.meupdate70,Temp123!update70,middleNameupdate70,displayNameupdate70,jobTitleupdate70,employeeIdentifier12345678910update70,departmentupdate70,costCenterupdate70,companyupdate70,employeeTypeupdate70,decriptionupdate70,locationupdate70,home_streetAddressupdate70,home_poBoxupdate70,home_cityupdate70,home_stateupdate70,home_postalCodeupdate70,home_countryupdate70,work_streetAddressupdate70,work_poBoxupdate70,work_cityupdate70,work_stateupdate70,work_postalCodeupdate70,work_countryupdate70,mobile_numberupdate70,home_numberupdate70,work_numberupdate70,work_mobile_numberupdate70,work_fax_number -delete2update80,me2update80,delete.me10,deleteme10@pleasedelete.me2update80,Temp123!2update80,middleName2update80,displayName2update80,jobTitle2update80,employeeIdentifier123456721update80,department2update80,costCenter2update80,company2update80,employeeType2update80,decription2update80,location2update80,home_streetAddress2update80,home_poBox2update80,home_city2update80,home_state2update80,home_postalCode2update80,home_country2update80,work_streetAddress2update80,work_poBox2update80,work_city2update80,work_state2update80,work_postalCode2update80,work_country2update80,mobile_number2update80,home_number2update80,work_number2update80,work_mobile_number2update80,work_fax_number2 \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_AllNewAttributesAndAllCustom.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_AllNewAttributesAndAllCustom.csv old mode 100755 new mode 100644 index 02cc7b6fc..e69de29bb --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_AllNewAttributesAndAllCustom.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_AllNewAttributesAndAllCustom.csv @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","MiddleName","preferredName","jobTitle","employeeIdentifier","alternateEmail","manager","managedAppleID","department","costCenter","company","employeeType","description","location","home_streetAddress","home_poBox","home_city","home_state","home_postalCode","home_country","work_streetAddress","work_poBox","work_city","work_state","work_postalCode","work_country","mobile_number","home_number","work_number","work_mobile_number","work_fax_number","SystemID","Administrator","Group1","Group2","Group3","Attribute1_name","Attribute1_value","Attribute2_name","Attribute2_value" -delete88,me88,delete.me7,deleteme37@pleasedelete.me88,Temp123!88,middleName88,displayName88,jobTitle88,employeeIdentifier12345678910123456799,deleteme37ae@pleasedelete.me88,,deleteme37maid@pleasedelete.me88,department88,costCenter88,company88,employeeType88,decription88,location88,home_streetAddress88,home_poBox88,home_city88,home_state88,home_postalCode88,home_country88,work_streetAddress88,work_poBox88,work_city88,work_state88,work_postalCode88,work_country88,mobile_number88,home_number88,work_number88,work_mobile_number88,work_fax_number88,,,,,,Attr1,One88,Attr2,Two2 -delete299,me299,delete.me327,deleteme35@pleasedelete.me299,Temp123!299,middleName299,displayName299,jobTitle299,employeeIdentifier123456721219999,deleteme35ae@pleasedelete.me299,,deleteme35maid@pleasedelete.me299,department299,costCenter299,company299,employeeType299,decription299,location299,home_streetAddress299,home_poBox299,home_city299,home_state299,home_postalCode299,home_country299,work_streetAddress299,work_poBox299,work_city299,work_state299,work_postalCode299,work_country299,mobile_number299,home_number299,work_number299,work_mobile_number299,work_fax_number299,,,,,,Attr1,One99,, \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_NoChanges.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_NoChanges.csv deleted file mode 100755 index b8e5fe62a..000000000 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_NoChanges.csv +++ /dev/null @@ -1,3 +0,0 @@ -"Username","MiddleName","preferredName","jobTitle","employeeIdentifier","department","costCenter","company","employeeType","description","location","home_streetAddress","home_poBox","home_city","home_state","home_postalCode","home_country","work_streetAddress","work_poBox","work_city","work_state","work_postalCode","work_country","mobile_number","home_number","work_number","work_mobile_number","work_fax_number","SystemID","Administrator","Group1","Group2","Attribute1_name","Attribute1_value","Attribute2_name","Attribute2_value" -"delete.me7",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -"delete.me327",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_missingAttribute.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_missingAttribute.csv index ab8ff3e52..e69de29bb 100644 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_missingAttribute.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_missingAttribute.csv @@ -1,2 +0,0 @@ -"Attribute1_name","Username","Attribute1_value" -"9898","pester.tester1_lxWCrXwc","" diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_telephonyAttributes.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_telephonyAttributes.csv deleted file mode 100755 index 1e9f08095..000000000 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_telephonyAttributes.csv +++ /dev/null @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","mobile_number","home_number","work_number","work_mobile_number","work_fax_number" -delete,me,delete.me1,deleteme1@pleasedelete.me,Temp123!,mobile_number2,home_number2,work_number2,work_mobile_number2,work_fax_number2 -delete,me,delete.me2,deleteme2@pleasedelete.me,Temp123!,mobile_number3,home_number3,work_number3,work_mobile_number3,work_fax_number3 \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_uid_guid.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_uid_guid.csv index e1d3ec2f6..e69de29bb 100644 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_uid_guid.csv +++ b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_uid_guid.csv @@ -1,2 +0,0 @@ -FirstName,LastName,Username,Email,Password,unix_guid,unix_uid -delete,meuidgid,Uiduser,deletemeuidgid@pleasedelete.me,Temp123!,7777,6666 \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_userInformationAttributes.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_userInformationAttributes.csv deleted file mode 100755 index 4c4c9e0e7..000000000 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_userInformationAttributes.csv +++ /dev/null @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","MiddleName","preferredName","jobTitle","employeeIdentifier","department","costCenter","company","employeeType","description","location" -delete22,me22,delete.me3,deleteme3@pleasedelete.me22,Temp123!22,middleName22,displayName22,jobTitle22,employeeIdentifier123456722,department22,costCenter22,company22,employeeType22,decription22,location22 -delete33,me33,delete.me4,deleteme4@pleasedelete.me33,Temp123!33,middleName33,displayName33,jobTitle33,employeeIdentifier1234567833,department33,costCenter33,company33,employeeType33,decription33,location33 diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_userLocationAttributes.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_userLocationAttributes.csv deleted file mode 100755 index 842d0bd05..000000000 --- a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateExample_userLocationAttributes.csv +++ /dev/null @@ -1,3 +0,0 @@ -"FirstName","LastName","Username","Email","Password","home_streetAddress","home_poBox","home_city","home_state","home_postalCode","home_country","work_streetAddress","work_poBox","work_city","work_state","work_postalCode","work_country" -delete55,me55,delete.me5,deleteme5@pleasedelete.me55,Temp123!55,home_streetAddress55,home_poBox55,home_city55,home_state55,home_postalCode55,home_country55,work_streetAddress55,work_poBox55,work_city55,work_state55,work_postalCode55,work_country55 -delete256,me256,delete.me6,deleteme6@pleasedelete.me256,Temp123!256,home_streetAddress256,home_poBox256,home_city256,home_state256,home_postalCode256,home_country256,work_streetAddress256,work_poBox256,work_city256,work_state256,work_postalCode256,work_country256 diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateWithInfoNoAttributeNewTest.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateWithInfoNoAttributeNewTest.csv new file mode 100644 index 000000000..e69de29bb diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateWithInfoTest.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateWithInfoTest.csv new file mode 100644 index 000000000..e69de29bb diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateWithNoInfoTest.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/UpdateWithNoInfoTest.csv new file mode 100644 index 000000000..e69de29bb diff --git a/PowerShell/JumpCloud Module/Tests/Csv_Files/update/custom_attribute.csv b/PowerShell/JumpCloud Module/Tests/Csv_Files/update/custom_attribute.csv new file mode 100644 index 000000000..e69de29bb diff --git a/PowerShell/JumpCloud Module/Tests/DefineEnvironment.ps1 b/PowerShell/JumpCloud Module/Tests/DefineEnvironment.ps1 index dabe3fae5..8fcb04ebc 100644 --- a/PowerShell/JumpCloud Module/Tests/DefineEnvironment.ps1 +++ b/PowerShell/JumpCloud Module/Tests/DefineEnvironment.ps1 @@ -70,8 +70,8 @@ $PesterParamsHash_Common = @{ ModuleName = 'JumpCloud' ModuleManifestName = 'JumpCloud.psd1' ModuleManifestPath = "$PSScriptRoot/../" - ApiKey = $JumpCloudApiKey - ApiKeyMsp = $JumpCloudApiKeyMsp + #ApiKey = $JumpCloudApiKey + #ApiKeyMsp = $JumpCloudApiKeyMsp PesterResultsFileXml = "$($PSScriptRoot)/JumpCloud-$($OS)-TestResults.xml" # CSV Files Import_JCUsersFromCSV_1_1_Tests = "$PSScriptRoot/Csv_Files/import/ImportExample_Pester_Tests_1.1.0.csv" # This CSV file is specific to pester environment (SystemID's and Group Names) @@ -240,9 +240,19 @@ $PesterParamsHash_Definitions = @{ trigger = 'threetrigger' } }; + +$variableArray = New-Object System.Collections.Generic.List[PSCustomObject] + + # Combine all hash tables into one list and foreach of their values create a new global parameter (Get-Variable -Scope:('Script') -Name:("$($PesterParamsHash_VariableName.VariableNamePrefixHash)*")).Value | ForEach-Object { $_.GetEnumerator() | ForEach-Object { Set-Variable -Name:("$($PesterParamsHash_VariableName.VariableNamePrefix)$($_.Name)") -Value:($_.Value) -Scope:('Global') + $variableObject = [PSCustomObject]@{ + Name = "$($PesterParamsHash_VariableName.VariableNamePrefix)$($_.Name)" + Value = $_.Value + } + $variableArray.Add($variableObject) } -} \ No newline at end of file +} +Return $variableArray \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/InvokePester.ps1 b/PowerShell/JumpCloud Module/Tests/InvokePester.ps1 index 32d88db46..44bfff94e 100755 --- a/PowerShell/JumpCloud Module/Tests/InvokePester.ps1 +++ b/PowerShell/JumpCloud Module/Tests/InvokePester.ps1 @@ -2,13 +2,15 @@ # There are two parameter sets Param( - [Parameter(ParameterSetName = 'moduleValidation', Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 5)][switch]$ModuleValidation, - [Parameter(ParameterSetName = 'dataTests', Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)][ValidateNotNullOrEmpty()][System.String]$JumpCloudApiKey - , [Parameter(ParameterSetName = 'dataTests', Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 1)][ValidateNotNullOrEmpty()][System.String]$JumpCloudApiKeyMsp - , [Parameter(ParameterSetName = 'dataTests', Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 1)][ValidateNotNullOrEmpty()][System.String]$JumpCloudMspOrg - , [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 2)][System.String[]]$ExcludeTagList - , [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 3)][System.String[]]$IncludeTagList + [Parameter(ParameterSetName = 'SingleOrgTests', Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)][ValidateNotNullOrEmpty()][System.String]$JumpCloudApiKey + , [Parameter(ParameterSetName = 'MSPTests', Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 1)][ValidateNotNullOrEmpty()][System.String]$JumpCloudApiKeyMsp + , [Parameter(ParameterSetName = 'MSPTests', Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 1)][ValidateNotNullOrEmpty()][System.String]$JumpCloudMspOrg + , [Parameter(ParameterSetName = 'MSPTests', Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 1)][ValidateNotNullOrEmpty()][System.String]$ProviderID + , [Parameter(ParameterSetName = 'SingleOrgTests', Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 2)][System.String[]]$ExcludeTagList + , [Parameter(ParameterSetName = 'SingleOrgTests', Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 3)][System.String[]]$IncludeTagList , [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 4)][System.String]$RequiredModulesRepo = 'PSGallery' + , [Parameter(ParameterSetName = 'ModuleValidation', Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 5)][switch]$ModuleValidation + , [Parameter(ParameterSetName = 'MSPTests', Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 6)][switch]$MSP ) # Load Get-Config.ps1 @@ -38,34 +40,83 @@ $IncludeTags = If ($IncludeTagList) { } Else { $Tags | Where-Object { $_ -notin $ExcludeTags } | Select-Object -Unique } - +# locally, clear pester run paths if it exists before run: +If ($PesterRunPaths) { + Clear-Variable -Name PesterRunPaths +} # Determine the parameter set path -if ($PSCmdlet.ParameterSetName -eq 'moduleValidation') { +if ($PSCmdlet.ParameterSetName -eq 'ModuleValidation') { $IncludeTags = "ModuleValidation" $PesterRunPaths = @( "$PSScriptRoot/ModuleValidation/" ) -} elseif ($PSCmdlet.ParameterSetName -eq 'dataTests') { +} elseif ($PSCmdlet.ParameterSetName -eq 'SingleOrgTests') { + if ($env:CI) { + If ($env:job_group) { + # split tests by job group: + $PesterTestsPaths = Get-ChildItem -Path $PSScriptRoot -Filter *.Tests.ps1 -Recurse | Where-Object size -GT 0 | Sort-Object -Property Name + Write-Host "[Status] $($PesterTestsPaths.count) tests found" + $CIindex = @() + $numItems = $($PesterTestsPaths.count) + $numBuckets = 3 + $itemsPerBucket = [math]::Floor(($numItems / $numBuckets)) + $remainder = ($numItems % $numBuckets) + $extra = 0 + for ($i = 0; $i -lt $numBuckets; $i++) { + <# Action that will repeat until the condition is met #> + if ($i -eq ($numBuckets - 1)) { + $extra = $remainder + } + $indexList = ($itemsPerBucket + $extra) + # Write-Host "Container $i contains $indexList items:" + $CIIndexList = @() + $CIIndexList += for ($k = 0; $k -lt $indexList; $k++) { + <# Action that will repeat until the condition is met #> + $bucketIndex = $i * $itemsPerBucket + # write-host "`$tags[$($bucketIndex + $k)] ="$tags[($bucketIndex + $k)] + $PesterTestsPaths[$bucketIndex + $k] + } + # add to ciIndex Array + $CIindex += , ($CIIndexList) + } + $PesterRunPaths = $CIindex[[int]$($env:job_group)] + Write-Host "[status] The following $($($CIindex[[int]$($env:job_group)]).count) tests will be run:" + $($CIindex[[int]$($env:job_group)]) | ForEach-Object { Write-Host "$_" } + } + } else { + # run setup org locally and set variables + $variables = . ("./PowerShell/JumpCloud Module/Tests/SetupOrg.ps1") -JumpCloudApiKey "$JumpCloudApiKey" -JumpCloudApiKeyMsp "$JumpCloudApiKey" + Write-Host "[status] Setting Env Variables for tests" + $variables | Foreach-Object { + if ($_.Name) { + Set-Variable -Name $_.Name -Value $_.Value -Scope Global + } + } + } + + + $env:JCAPIKEY = $JumpCloudApiKey + Connect-JCOnline -JumpCloudApiKey:($env:JCAPIKEY) -force +} elseif ($PSCmdlet.ParameterSetName -eq 'MSPTests') { + # For online tests we need to run setup org and generate resources within an organization + # Load DefineEnvironment + $IncludeTags = "MSP" + $PesterRunPaths = @( + "$PSScriptRoot" + ) + $MSPVars = . ("$PSScriptRoot/DefineEnvironment.ps1") -JumpCloudApiKey:($JumpCloudApiKeyMsp) -JumpCloudApiKeyMsp:($JumpCloudApiKeyMsp) -RequiredModulesRepo:($RequiredModulesRepo) + # Set Env Variables + $env:JCAPIKEY = $JumpCloudApiKeyMsp + $env:JCOrgId = $JumpCloudMspOrg + $env:JCProviderID = $ProviderID + # force import module + Import-Module $FilePath_psd1 -Force + Connect-JCOnline -JumpCloudApiKey:($env:JCAPIKEY) -JumpCloudOrgId:($env:JCOrgId) -force +} +if (-Not $PesterRunPaths) { $PesterRunPaths = @( "$PSScriptRoot" ) - # For online tests we need to run setup org and generate resources within an organization - # Load DefineEnvironment - . ("$PSScriptRoot/DefineEnvironment.ps1") -JumpCloudApiKey:($JumpCloudApiKey) -JumpCloudApiKeyMsp:($JumpCloudApiKeyMsp) -RequiredModulesRepo:($RequiredModulesRepo) - # Load SetupOrg - if ("MSP" -in $IncludeTags) { - Write-Host ('[status] MSP Tests setting API Key, OrgID') - $env:JCAPIKEY = $env:PESTER_MSP_APIKEY - $env:JCOrgId = $env:PESTER_ORGID - $env:JCProviderID = $env:PESTER_PROVIDER_ID - # force import module - Import-Module $FilePath_psd1 -Force - Connect-JCOnline -JumpCloudApiKey:($env:PESTER_MSP_APIKEY) -JumpCloudOrgId:($env:PESTER_ORGID) -force - # . ("$PSScriptRoot/SetupOrg.ps1") -JumpCloudApiKey:($JumpCloudApiKey) -JumpCloudApiKeyMsp:($JumpCloudApiKeyMsp) -JumpCloudMspOrg:($JumpCloudMspOrg) - } else { - Write-Host ('[status]Setting up org: ' + "$PSScriptRoot/SetupOrg.ps1") - . ("$PSScriptRoot/SetupOrg.ps1") -JumpCloudApiKey:($JumpCloudApiKey) -JumpCloudApiKeyMsp:($JumpCloudApiKeyMsp) - } } # Load private functions Write-Host ('[status]Load private functions: ' + "$PSScriptRoot/../Private/*.ps1") @@ -78,7 +129,7 @@ Write-Host ('[status]Load HelperFunctions: ' + "$PSScriptRoot/HelperFunctions.ps $PesterResultsFileXmldir = "$PSScriptRoot/test_results/" # create the directory if it does not exist: if (-not (Test-Path $PesterResultsFileXmldir)) { - new-item -path $PesterResultsFileXmldir -ItemType Directory + New-Item -Path $PesterResultsFileXmldir -ItemType Directory } @@ -94,9 +145,9 @@ $configuration.Filter.ExcludeTag = $ExcludeTagList $configuration.CodeCoverage.OutputPath = ($PesterResultsFileXmldir + 'coverage.xml') $configuration.testresult.OutputPath = ($PesterResultsFileXmldir + 'results.xml') -Write-Host ("[RUN COMMAND] Invoke-Pester -Path:('$PSScriptRoot') -TagFilter:('$($IncludeTags -join "','")') -ExcludeTagFilter:('$($ExcludeTagList -join "','")') -PassThru") -BackgroundColor:('Black') -ForegroundColor:('Magenta') +Write-Host ("[RUN COMMAND] Invoke-Pester -Path:('$PesterRunPaths') -TagFilter:('$($IncludeTags -join "','")') -ExcludeTagFilter:('$($ExcludeTagList -join "','")') -PassThru") -BackgroundColor:('Black') -ForegroundColor:('Magenta') # Run Pester tests -Invoke-Pester -configuration $configuration +Invoke-Pester -Configuration $configuration $PesterTestResultPath = (Get-ChildItem -Path:("$($PesterResultsFileXmldir)")).FullName | Where-Object { $_ -match "results.xml" } If (Test-Path -Path:($PesterTestResultPath)) { diff --git a/PowerShell/JumpCloud Module/Tests/ModuleValidation/moduleValidation.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/ModuleValidation/moduleValidation.Tests.ps1 index e157cc5b1..287a40da5 100644 --- a/PowerShell/JumpCloud Module/Tests/ModuleValidation/moduleValidation.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/ModuleValidation/moduleValidation.Tests.ps1 @@ -97,6 +97,9 @@ Describe -Tag:('ModuleValidation') 'Module Manifest Tests' { } } $todayDate = Get-Date -UFormat "%B %d, %Y" + if ($todayDate | Select-String -Pattern "0\d,") { + $todayDate = "$(Get-Date -UFormat %B) $($(Get-Date -Uformat %d) -replace '0', ''), $(Get-Date -UFormat %Y)" + } $latestReleaseDate | Should -Be $todayDate } } diff --git a/PowerShell/JumpCloud Module/Tests/Private/HashFunctions/Get-DynamicHash.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Private/HashFunctions/Get-DynamicHash.Tests.ps1 index ab5d2dd95..c77416f34 100644 --- a/PowerShell/JumpCloud Module/Tests/Private/HashFunctions/Get-DynamicHash.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Private/HashFunctions/Get-DynamicHash.Tests.ps1 @@ -2,8 +2,6 @@ Describe -Tag:('DynamicHash') "Get-DynamicHash" { It "User Hash" { $UserHash = Get-DynamicHash -Object User -returnProperties 'created', 'account_locked', 'activated', 'addresses', 'allow_public_key', 'attributes', 'email', 'enable_managed_uid', 'enable_user_portal_multifactor', 'externally_managed', 'firstname', 'lastname', 'ldap_binding_user', 'passwordless_sudo', 'password_expired', 'password_never_expires', 'phoneNumbers', 'samba_service_user', 'ssh_keys', 'sudo', 'suspended', 'totp_enabled', 'unix_guid', 'unix_uid', 'username', 'alternateEmail', 'managedAppleId', 'recoveryEmail' - $UserHash.count | Should -Be (Get-JCUser).count - $UserHash.values.account_locked | Should -Not -Be $null $UserHash.values.activated | Should -Not -Be $null $UserHash.values.addresses | Should -Not -Be $null @@ -35,8 +33,6 @@ Describe -Tag:('DynamicHash') "Get-DynamicHash" { It "System Hash" { $SystemHash = Get-DynamicHash -Object System -returnProperties 'created', 'active', 'agentVersion', 'allowMultiFactorAuthentication', 'allowPublicKeyAuthentication', 'allowSshPasswordAuthentication', 'allowSshRootLogin', 'arch', 'created', 'displayName', 'hostname', 'lastContact', 'modifySSHDConfig', 'organization', 'os', 'remoteIP', 'serialNumber', 'systemTimezone', 'templateName', 'version' - $SystemHash.count | Should -Be (Get-JCSystem).count - $SystemHash.values.created | Should -Not -Be $null $SystemHash.values.active | Should -Not -Be $null $SystemHash.values.agentVersion | Should -Not -Be $null @@ -61,24 +57,18 @@ Describe -Tag:('DynamicHash') "Get-DynamicHash" { It "SystemGroup Hash" { $SystemGroupHash = Get-DynamicHash -Object Group -GroupType System -returnProperties 'name', 'type' - $SystemGroupHash.count | Should -Be (Get-JCGroup -Type System).count - $SystemGroupHash.values.name | Should -Not -Be $null $SystemGroupHash.values.type | Should -Not -Be $null } It "UserGroup Hash" { $UserGroupHash = Get-DynamicHash -Object Group -GroupType User -returnProperties 'name', 'type' - $UserGroupHash.count | Should -Be (Get-JCGroup -Type User).count - $UserGroupHash.values.name | Should -Not -Be $null $UserGroupHash.values.type | Should -Not -Be $null } It "Command Hash" { $CommandHash = Get-DynamicHash -Object Command -returnProperties 'command', 'name', 'launchType', 'commandType', 'trigger', 'scheduleRepeatType' - $CommandHash.count | Should -Be (Get-JCCommand).count - $CommandHash.Values.command | Should -Not -Be $null $CommandHash.Values.name | Should -Not -Be $null $CommandHash.Values.launchType | Should -Not -Be $null diff --git a/PowerShell/JumpCloud Module/Tests/Public/Authentication/Connect-JCOnline-MSP.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Connect-JCOnline-MSP.Tests.ps1 index 511a462db..746350c1b 100644 --- a/PowerShell/JumpCloud Module/Tests/Public/Authentication/Connect-JCOnline-MSP.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Connect-JCOnline-MSP.Tests.ps1 @@ -1,67 +1,73 @@ -Describe -Tag:('JCOnline-MSP') 'Connect-JCOnline Tests' { +Describe -Tag:('MSP') 'Connect-JCOnline Tests' { BeforeAll { - $StartingApiKey = If (-not [System.String]::IsNullOrEmpty($env:JCApiKey)) { $env:JCApiKey } - $StartingOrgId = If (-not [System.String]::IsNullOrEmpty($env:JCOrgId)) { $env:JCOrgId } + $StartingApiKey = If (-not [System.String]::IsNullOrEmpty($env:JCApiKey)) { + $env:JCApiKey + } + $StartingOrgId = If (-not [System.String]::IsNullOrEmpty($env:JCOrgId)) { + $env:JCOrgId + } + $orgs = Get-JCOrganization + $RandomOrgs = $orgs | get-Random -count 2 } Context 'MSP OrgId 1 Tests' { It ('Should connect using the JumpCloudApiKey and JumpCloudOrgId parameters.') { - $Connect = Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKeyMsp) -JumpCloudOrgId:($PesterParams_OrgIDMsp1) -force - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $PesterParams_OrgIDMsp1 | Should -Be $env:JCOrgId + $Connect = Connect-JCOnline -JumpCloudApiKey:($env:JCApiKey) -JumpCloudOrgId:($RandomOrgs[0].OrgID) -force + $env:JCApiKey | Should -Be $env:JCApiKey + $RandomOrgs[0].OrgID | Should -Be $env:JCOrgId # $Connect.JCOrgId | Should -Be $env:JCOrgId - # $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp1 + # $Connect.JCOrgId | Should -Be $RandomOrgs[0].OrgID } It ('Should connect using the JumpCloudApiKey parameter.') { - $Connect = Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKeyMsp) -force - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $PesterParams_OrgIDMsp1 | Should -Be $env:JCOrgId + $Connect = Connect-JCOnline -JumpCloudApiKey:($env:JCApiKey) -force + $env:JCApiKey | Should -Be $env:JCApiKey + $RandomOrgs[0].OrgID | Should -Be $env:JCOrgId # $Connect.JCOrgId | Should -Be $env:JCOrgId - # $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp1 + # $Connect.JCOrgId | Should -Be $RandomOrgs[0].OrgID } It ('Should connect using the JumpCloudOrgId parameter.') { - $Connect = Connect-JCOnline -JumpCloudOrgId:($PesterParams_OrgIDMsp1) -force - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $PesterParams_OrgIDMsp1 | Should -Be $env:JCOrgId + $Connect = Connect-JCOnline -JumpCloudOrgId:($RandomOrgs[0].OrgID) -force + $env:JCApiKey | Should -Be $env:JCApiKey + $RandomOrgs[0].OrgID | Should -Be $env:JCOrgId # $Connect.JCOrgId | Should -Be $env:JCOrgId - # $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp1 + # $Connect.JCOrgId | Should -Be $RandomOrgs[0].OrgID } It('Should connect without parameters using the previously set env:jc* parameters.') { $Connect = Connect-JCOnline -force - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $PesterParams_OrgIDMsp1 | Should -Be $env:JCOrgId + $env:JCApiKey | Should -Be $env:JCApiKey + $RandomOrgs[0].OrgID | Should -Be $env:JCOrgId # $Connect.JCOrgId | Should -Be $env:JCOrgId } } Context 'MSP OrgId 2 Tests' { It ('Should connect using the JumpCloudApiKey and JumpCloudOrgId parameters.') { - $Connect = Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKeyMsp) -JumpCloudOrgId:($PesterParams_OrgIDMsp2) -force - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $PesterParams_OrgIDMsp2 | Should -Be $env:JCOrgId + $Connect = Connect-JCOnline -JumpCloudApiKey:($env:JCApiKey) -JumpCloudOrgId:($RandomOrgs[1].OrgID) -force + $env:JCApiKey | Should -Be $env:JCApiKey + $RandomOrgs[1].OrgID | Should -Be $env:JCOrgId # $Connect.JCOrgId | Should -Be $env:JCOrgId - # $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp2 + # $Connect.JCOrgId | Should -Be $RandomOrgs[1].OrgID } It ('Should connect using the JumpCloudApiKey parameter.') { - $Connect = Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKeyMsp) -force - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $PesterParams_OrgIDMsp2 | Should -Be $env:JCOrgId + $Connect = Connect-JCOnline -JumpCloudApiKey:($env:JCApiKey) -force + $env:JCApiKey | Should -Be $env:JCApiKey + $RandomOrgs[1].OrgID | Should -Be $env:JCOrgId # $Connect.JCOrgId | Should -Be $env:JCOrgId - # $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp2 + # $Connect.JCOrgId | Should -Be $RandomOrgs[1].OrgID } It ('Should connect using the JumpCloudOrgId parameter.') { - $Connect = Connect-JCOnline -JumpCloudOrgId:($PesterParams_OrgIDMsp2) -force - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $PesterParams_OrgIDMsp2 | Should -Be $env:JCOrgId + $Connect = Connect-JCOnline -JumpCloudOrgId:($RandomOrgs[1].OrgID) -force + $env:JCApiKey | Should -Be $env:JCApiKey + $RandomOrgs[1].OrgID | Should -Be $env:JCOrgId # $Connect.JCOrgId | Should -Be $env:JCOrgId - # $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp2 + # $Connect.JCOrgId | Should -Be $RandomOrgs[1].OrgID } It('Should connect without parameters using the previously set env:jc* parameters.') { $Connect = Connect-JCOnline -force - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $PesterParams_OrgIDMsp2 | Should -Be $env:JCOrgId + $env:JCApiKey | Should -Be $env:JCApiKey + $RandomOrgs[1].OrgID | Should -Be $env:JCOrgId # $Connect.JCOrgId | Should -Be $env:JCOrgId } } - AfterAll { - Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKey) -force | Out-Null - } + # AfterAll { + # Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKey) -force | Out-Null + # } } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Authentication/Connect-JCOnline.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Connect-JCOnline.Tests.ps1 index f9e75a4d3..d2d7ed96e 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Authentication/Connect-JCOnline.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Connect-JCOnline.Tests.ps1 @@ -1,7 +1,11 @@ Describe -Tag:('JCOnline') 'Connect-JCOnline Tests' { BeforeAll { - $StartingApiKey = If (-not [System.String]::IsNullOrEmpty($env:JCApiKey)) { $env:JCApiKey } - $StartingOrgId = If (-not [System.String]::IsNullOrEmpty($env:JCOrgId)) { $env:JCOrgId } + $StartingApiKey = If (-not [System.String]::IsNullOrEmpty($env:JCApiKey)) { + $env:JCApiKey + } + $StartingOrgId = If (-not [System.String]::IsNullOrEmpty($env:JCOrgId)) { + $env:JCOrgId + } } Context 'Single Org Tests' { It ('Should connect using the JumpCloudApiKey and JumpCloudOrgId parameters.') { @@ -34,9 +38,14 @@ Describe -Tag:('JCOnline') 'Connect-JCOnline Tests' { } } AfterAll { - If (-not [System.String]::IsNullOrEmpty($StartingApiKey) -and -not [System.String]::IsNullOrEmpty($StartingOrgId)) { Connect-JCOnline -JumpCloudApiKey:($StartingApiKey) -JumpCloudOrgId:($StartingOrgId) -force | Out-Null } - ElseIf (-not [System.String]::IsNullOrEmpty($StartingApiKey) -and [System.String]::IsNullOrEmpty($StartingOrgId)) { Connect-JCOnline -JumpCloudApiKey:($StartingApiKey) -force | Out-Null } - ElseIf ([System.String]::IsNullOrEmpty($StartingApiKey) -and -not [System.String]::IsNullOrEmpty($StartingOrgId)) { Connect-JCOnline -JumpCloudOrgId:($StartingOrgId) -force | Out-Null } - Else { Write-Error ('Unknown scenario encountered') } + If (-not [System.String]::IsNullOrEmpty($StartingApiKey) -and -not [System.String]::IsNullOrEmpty($StartingOrgId)) { + Connect-JCOnline -JumpCloudApiKey:($StartingApiKey) -JumpCloudOrgId:($StartingOrgId) -force | Out-Null + } ElseIf (-not [System.String]::IsNullOrEmpty($StartingApiKey) -and [System.String]::IsNullOrEmpty($StartingOrgId)) { + Connect-JCOnline -JumpCloudApiKey:($StartingApiKey) -force | Out-Null + } ElseIf ([System.String]::IsNullOrEmpty($StartingApiKey) -and -not [System.String]::IsNullOrEmpty($StartingOrgId)) { + Connect-JCOnline -JumpCloudOrgId:($StartingOrgId) -force | Out-Null + } Else { + Write-Error ('Unknown scenario encountered') + } } } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Authentication/Get-JCOrganization.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Get-JCOrganization.Tests.ps1 index 18084de5f..005595cef 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Authentication/Get-JCOrganization.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Get-JCOrganization.Tests.ps1 @@ -1,25 +1,29 @@ -Describe -Tag:('JCOrganization') 'Get-JCOrganization 1.6' { +Describe -Tag:('MSP') 'Get-JCOrganization 1.6' { + BeforeAll { + $orgs = Get-JCOrganization + $RandomOrgs = $orgs | get-Random -count 2 + } It 'Returns JumpCloud Organizations ' { - Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKeyMsp) -JumpCloudOrgId:($PesterParams_OrgIDMsp1) -force + Connect-JCOnline -JumpCloudApiKey:($env:JCApiKey) -JumpCloudOrgId:($RandomOrgs[0].OrgID) -force $Connect | Should -Be $null $Organizations = Get-JCOrganization $OrgVerify = $Organizations | Select-Object OrgID -Unique $OrgVerify.Count | Should -BeGreaterThan 1 } It 'Returns JumpCloud Organizations connected to two different orgs' { - Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKeyMsp) -JumpCloudOrgId:($PesterParams_OrgIDMsp1) -force + Connect-JCOnline -JumpCloudApiKey:($env:JCApiKey) -JumpCloudOrgId:($RandomOrgs[0].OrgID) -force $Connect | Should -Be $null $Organizations = Get-JCOrganization $OrgVerify = $Organizations | Select-Object OrgID -Unique $OrgVerify.Count | Should -BeGreaterThan 1 - Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKeyMsp) -JumpCloudOrgId:($PesterParams_OrgIDMsp2) -force + Connect-JCOnline -JumpCloudApiKey:($env:JCApiKey) -JumpCloudOrgId:($RandomOrgs[1].OrgID) -force $Connect | Should -Be $null $Organizations = Get-JCOrganization $OrgVerify = $Organizations | Select-Object OrgID -Unique $OrgVerify.Count | Should -BeGreaterThan 1 } - AfterAll { - Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKey) -force | Out-Null - } + # AfterAll { + # Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKey) -force | Out-Null + # } } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Authentication/Set-JCOrganization.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Set-JCOrganization.Tests.ps1 index ebea5655b..1639be61f 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Authentication/Set-JCOrganization.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Set-JCOrganization.Tests.ps1 @@ -2,8 +2,12 @@ Describe -Tag:('JCOrganization') 'Set-JCOrganization Tests' { BeforeAll { # Prevent the Update-JCModule from running $env:JcUpdateModule = $false - $StartingApiKey = If (-not [System.String]::IsNullOrEmpty($env:JCApiKey)) { $env:JCApiKey } - $StartingOrgId = If (-not [System.String]::IsNullOrEmpty($env:JCOrgId)) { $env:JCOrgId } + $StartingApiKey = If (-not [System.String]::IsNullOrEmpty($env:JCApiKey)) { + $env:JCApiKey + } + $StartingOrgId = If (-not [System.String]::IsNullOrEmpty($env:JCOrgId)) { + $env:JCOrgId + } } Context 'Single Org Tests' { It ('Should connect using the JumpCloudApiKey and JumpCloudOrgId parameters.') { @@ -31,35 +35,4 @@ Describe -Tag:('JCOrganization') 'Set-JCOrganization Tests' { $Connect.JCOrgId | Should -Be $PesterParams_Org.OrgID } } - Context 'MSP OrgId 1 Tests' { - It ('Should connect using the JumpCloudApiKey and JumpCloudOrgId parameters.') { - $Connect = Set-JCOrganization -JumpCloudApiKey:($PesterParams_ApiKeyMsp) -JumpCloudOrgId:($PesterParams_OrgIDMsp1) - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $Connect.JCOrgId | Should -Be $env:JCOrgId - $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp1 - } - It ('Should connect using the JumpCloudOrgId parameter.') { - $Connect = Set-JCOrganization -JumpCloudOrgId:($PesterParams_OrgIDMsp1) - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $Connect.JCOrgId | Should -Be $env:JCOrgId - $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp1 - } - } - Context 'MSP OrgId 2 Tests' { - It ('Should connect using the JumpCloudApiKey and JumpCloudOrgId parameters.') { - $Connect = Set-JCOrganization -JumpCloudApiKey:($PesterParams_ApiKeyMsp) -JumpCloudOrgId:($PesterParams_OrgIDMsp2) - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $Connect.JCOrgId | Should -Be $env:JCOrgId - $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp2 - } - It ('Should connect using the JumpCloudOrgId parameter.') { - $Connect = Set-JCOrganization -JumpCloudOrgId:($PesterParams_OrgIDMsp2) - $PesterParams_ApiKeyMsp | Should -Be $env:JCApiKey - $Connect.JCOrgId | Should -Be $env:JCOrgId - $Connect.JCOrgId | Should -Be $PesterParams_OrgIDMsp2 - } - } - AfterAll { - Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKey) -force | Out-Null - } } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Authentication/Set-JCOrganizationMSP.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Set-JCOrganizationMSP.Tests.ps1 new file mode 100644 index 000000000..643e67345 --- /dev/null +++ b/PowerShell/JumpCloud Module/Tests/Public/Authentication/Set-JCOrganizationMSP.Tests.ps1 @@ -0,0 +1,45 @@ +Describe -Tag:('MSP') 'Set-JCOrganization Tests' { + BeforeAll { + # Prevent the Update-JCModule from running + $env:JcUpdateModule = $false + $StartingApiKey = If (-not [System.String]::IsNullOrEmpty($env:JCApiKey)) { + $env:JCApiKey + } + $StartingOrgId = If (-not [System.String]::IsNullOrEmpty($env:JCOrgId)) { + $env:JCOrgId + } + $orgs = Get-JCOrganization + $RandomOrgs = $orgs | get-Random -count 2 + } + Context 'MSP OrgId 1 Tests' { + It ('Should connect using the JumpCloudApiKey and JumpCloudOrgId parameters.') { + $Connect = Set-JCOrganization -JumpCloudApiKey:($env:JCApiKey) -JumpCloudOrgId:($RandomOrgs[0].OrgID) + $env:JCApiKey | Should -Be $env:JCApiKey + $Connect.JCOrgId | Should -Be $env:JCOrgId + $Connect.JCOrgId | Should -Be $RandomOrgs[0].OrgID + } + It ('Should connect using the JumpCloudOrgId parameter.') { + $Connect = Set-JCOrganization -JumpCloudOrgId:($RandomOrgs[0].OrgID) + $env:JCApiKey | Should -Be $env:JCApiKey + $Connect.JCOrgId | Should -Be $env:JCOrgId + $Connect.JCOrgId | Should -Be $RandomOrgs[0].OrgID + } + } + Context 'MSP OrgId 2 Tests' { + It ('Should connect using the JumpCloudApiKey and JumpCloudOrgId parameters.') { + $Connect = Set-JCOrganization -JumpCloudApiKey:($env:JCApiKey) -JumpCloudOrgId:($RandomOrgs[1].OrgID) + $env:JCApiKey | Should -Be $env:JCApiKey + $Connect.JCOrgId | Should -Be $env:JCOrgId + $Connect.JCOrgId | Should -Be $RandomOrgs[1].OrgID + } + It ('Should connect using the JumpCloudOrgId parameter.') { + $Connect = Set-JCOrganization -JumpCloudOrgId:($RandomOrgs[1].OrgID) + $env:JCApiKey | Should -Be $env:JCApiKey + $Connect.JCOrgId | Should -Be $env:JCOrgId + $Connect.JCOrgId | Should -Be $RandomOrgs[1].OrgID + } + } + # AfterAll { + # Connect-JCOnline -JumpCloudApiKey:($PesterParams_ApiKey) -force | Out-Null + # } +} diff --git a/PowerShell/JumpCloud Module/Tests/Public/Commands/CommandTargets/Add-JCCommandTarget.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Commands/CommandTargets/Add-JCCommandTarget.Tests.ps1 index c28577523..08e1ede48 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Commands/CommandTargets/Add-JCCommandTarget.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Commands/CommandTargets/Add-JCCommandTarget.Tests.ps1 @@ -4,11 +4,18 @@ Describe -Tag:('JCCommandTarget') 'Add-JCCommandTarget 1.3' { If (-not $PesterParams_Command1) { $PesterParams_Command1 = New-JCCommand @PesterParams_NewCommand1 } - $PesterParams_SystemGroup = Get-JCGroup -Type:('System') | Where-Object { $_.name -eq $PesterParams_SystemGroup.Name } - If (-not $PesterParams_SystemGroup) { - $PesterParams_SystemGroup = New-JCSystemGroup @PesterParams_NewSystemGroup + # System Group Definition: + $CmdTargetSystemGroup = @{ + 'GroupName' = "PesterTest_CmdTargetGroup_$(New-RandomString -NumberOfChars 5)" + }; + $SystemGroupForCmdTarget = Get-JCGroup -Type:('System') | Where-Object { $_.name -match "PesterTest_CmdTargetGroup" } + If (-not $SystemGroupForCmdTarget) { + $SystemGroupForCmdTarget = New-JCSystemGroup @CmdTargetSystemGroup } } + AfterAll { + Remove-JCSystemGroup -GroupName $SystemGroupForCmdTarget.Name -force + } It "Adds a single system to a JumpCloud command" { $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -SystemID $PesterParams_SystemLinux._id @@ -24,26 +31,26 @@ Describe -Tag:('JCCommandTarget') 'Add-JCCommandTarget 1.3' { It "Adds a single system group to a JumpCloud command by GroupName" { - $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $PesterParams_SystemGroup.Name + $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $SystemGroupForCmdTarget.Name - $TargetAdd = Add-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $PesterParams_SystemGroup.Name + $TargetAdd = Add-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $SystemGroupForCmdTarget.Name $TargetAdd.Status | Should -Be 'Added' - $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $PesterParams_SystemGroup.Name + $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $SystemGroupForCmdTarget.Name } It "Adds a single system group to a JumpCloud command by GroupID" { - $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $PesterParams_SystemGroup.Name + $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $SystemGroupForCmdTarget.Name - $TargetAdd = Add-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupID $PesterParams_SystemGroup.Id + $TargetAdd = Add-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupID $SystemGroupForCmdTarget.Id $TargetAdd.Status | Should -Be 'Added' - $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $PesterParams_SystemGroup.Name + $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -GroupName $SystemGroupForCmdTarget.Name } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Commands/CommandTargets/Get-JCCommandTarget.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Commands/CommandTargets/Get-JCCommandTarget.Tests.ps1 index 16e78aa16..6fcb051d4 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Commands/CommandTargets/Get-JCCommandTarget.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Commands/CommandTargets/Get-JCCommandTarget.Tests.ps1 @@ -1,4 +1,11 @@ Describe -Tag:('JCCommandTarget') 'Get-JCCommandTarget 1.3' { + BeforeEach { + # Get Groups + $Groups = Get-JCGroup -Type System + If ("PesterTest_SystemGroup" -notin $groups.name) { + $PesterParams_SystemGroup = New-JCSystemGroup -GroupName $PesterParams_NewSystemGroup.GroupName + } + } It "Returns a JumpCloud commands system targets" { $TargetRemove = Remove-JCCommandTarget -CommandID $PesterParams_Command1.id -SystemID $PesterParams_SystemLinux._id $TargetAdd = Add-JCCommandTarget -CommandID $PesterParams_Command1.id -SystemID $PesterParams_SystemLinux._id diff --git a/PowerShell/JumpCloud Module/Tests/Public/Groups/SystemGroups/Add-JCSystemGroupMember.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Groups/SystemGroups/Add-JCSystemGroupMember.Tests.ps1 index b8d3b9239..633c6ba06 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Groups/SystemGroups/Add-JCSystemGroupMember.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Groups/SystemGroups/Add-JCSystemGroupMember.Tests.ps1 @@ -1,35 +1,48 @@ Describe -Tag:('JCSystemGroupMember') 'Add-JCSystemGroupMember 1.0' { + BeforeAll { + # System Group Definition: + $SystemMemberGroup = @{ + 'GroupName' = "PesterTest_SysMember_$(New-RandomString -NumberOfChars 5)" + }; + $SystemMemberGroupForMemberTests = Get-JCGroup -Type:('System') | Where-Object { $_.name -match "PesterTest_SysMember_" } + If (-not $SystemMemberGroupForMemberTests) { + $SystemMemberGroupForMemberTests = New-JCSystemGroup @SystemMemberGroup + } + } + AfterAll { + Remove-JCSystemGroup -GroupName $SystemMemberGroupForMemberTests.Name -force + } It "Adds a JumpCloud system to a JumpCloud system group by System Groupname and SystemID" { - $SingleSystemGroupRemove = Remove-JCSystemGroupMember -SystemID $PesterParams_SystemLinux._id -GroupName $PesterParams_SystemGroup.Name + $SingleSystemGroupRemove = Remove-JCSystemGroupMember -SystemID $PesterParams_SystemLinux._id -GroupName $SystemMemberGroupForMemberTests.Name - $SingleSystemGroupAdd = Add-JCSystemGroupMember -SystemID $PesterParams_SystemLinux._id -GroupName $PesterParams_SystemGroup.Name + $SingleSystemGroupAdd = Add-JCSystemGroupMember -SystemID $PesterParams_SystemLinux._id -GroupName $SystemMemberGroupForMemberTests.Name $SingleSystemGroupAdd.Status | Should -Be 'Added' } It "Adds a JumpCloud system to a JumpCloud system group by System GroupID and SystemID" { - $SingleSystemGroupRemove = Remove-JCSystemGroupMember -SystemID $PesterParams_SystemLinux._id -GroupID $PesterParams_SystemGroup.Id + $SingleSystemGroupRemove = Remove-JCSystemGroupMember -SystemID $PesterParams_SystemLinux._id -GroupID $SystemMemberGroupForMemberTests.Id - $SingleSystemGroupAdd = Add-JCSystemGroupMember -SystemID $PesterParams_SystemLinux._id -GroupID $PesterParams_SystemGroup.Id + $SingleSystemGroupAdd = Add-JCSystemGroupMember -SystemID $PesterParams_SystemLinux._id -GroupID $SystemMemberGroupForMemberTests.Id $SingleSystemGroupAdd.Status | Should -Be 'Added' } It "Adds two JumpCloud systems to a JumpCloud system group using the pipeline" { - $MultiSystemGroupRemove = Get-JCSystem | Select-Object -Last 2 | Remove-JCSystemGroupMember -GroupName $PesterParams_SystemGroup.Name + $MultiSystemGroupRemove = Get-JCSystem | Select-Object -Last 2 | Remove-JCSystemGroupMember -GroupName $SystemMemberGroupForMemberTests.Name - $MultiSystemGroupAdd = Get-JCSystem | Select-Object -Last 2 | Add-JCSystemGroupMember -GroupName $PesterParams_SystemGroup.Name + $MultiSystemGroupAdd = Get-JCSystem | Select-Object -Last 2 | Add-JCSystemGroupMember -GroupName $SystemMemberGroupForMemberTests.Name $MultiSystemGroupAdd.Status | Select-Object -Unique | Should -Be 'Added' } It "Adds two JumpCloud systems to a JumpCloud system group using the pipeline using -ByID" { - $MultiSystemGroupRemove = Get-JCSystem | Select-Object -Last 2 | Remove-JCSystemGroupMember -GroupName $PesterParams_SystemGroup.Name -ByID + $MultiSystemGroupRemove = Get-JCSystem | Select-Object -Last 2 | Remove-JCSystemGroupMember -GroupName $SystemMemberGroupForMemberTests.Name -ByID - $MultiSystemGroupAdd = Get-JCSystem | Select-Object -Last 2 | Add-JCSystemGroupMember -GroupName $PesterParams_SystemGroup.Name -ByID + $MultiSystemGroupAdd = Get-JCSystem | Select-Object -Last 2 | Add-JCSystemGroupMember -GroupName $SystemMemberGroupForMemberTests.Name -ByID $MultiSystemGroupAdd.Status | Select-Object -Unique | Should -Be 'Added' } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Groups/SystemGroups/Get-JCSystemGroupMember.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Groups/SystemGroups/Get-JCSystemGroupMember.Tests.ps1 index c3790ab36..6e0875edc 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Groups/SystemGroups/Get-JCSystemGroupMember.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Groups/SystemGroups/Get-JCSystemGroupMember.Tests.ps1 @@ -1,20 +1,32 @@ Describe -Tag:('JCSystemGroupMember') 'Get-JCSystemGroupMember 1.0' { - BeforeAll { } + BeforeEach { + $string = "sysGroup_" + $(New-RandomString -NumberOfChars 5) + $pesterTest_NewSysGroup = @{ + GroupName = $string + } + $pesterTest_NewSysGroup = New-JCSystemGroup @pesterTest_NewSysGroup + } + AfterEach { + Remove-JCSystemGroup -GroupName $pesterTest_NewSysGroup.Name -force + } It 'Gets a System Groups membership by Groupname' { - - $MultiSystemGroupAdd = Get-JCSystem | Select-Object -Last 2 | Add-JCSystemGroupMember -GroupName $PesterParams_SystemGroup.Name - - $SystemGroupMembers = Get-JCSystemGroupMember -GroupName $PesterParams_SystemGroup.Name + Write-Host "Adding members to $($PesterTest_NewSysGroup.Name)" + $MultiSystemGroupAdd = Get-JCSystem | Select-Object -Last 2 | Add-JCSystemGroupMember -GroupName $pesterTest_NewSysGroup.Name + $SystemGroupMembers = Get-JCSystemGroupMember -GroupName $pesterTest_NewSysGroup.Name $SystemGroupMembers.SystemID.Count | Should -BeGreaterThan 0 } It 'Gets a System Groups membership -ByID' { - $SystemGroupMembers = Get-JCSystemGroupMember -ByID $PesterParams_SystemGroup.Id + Write-Host "Adding members to $($PesterTest_NewSysGroup.Name)" + $MultiSystemGroupAdd = Get-JCSystem | Select-Object -Last 2 | Add-JCSystemGroupMember -GroupID $pesterTest_NewSysGroup.Id + $SystemGroupMembers = Get-JCSystemGroupMember -ByID $pesterTest_NewSysGroup.Id $SystemGroupMembers.SystemID.Count | Should -BeGreaterThan 0 } It 'Gets all System Group members using Get-JCGroup -type system and the pipeline' { - $AllSystemGroupmembers = Get-JCGroup -Type System | Get-JCSystemGroupMember + Write-Host "Adding members to $($PesterTest_NewSysGroup.Name)" + $MultiSystemGroupAdd = Get-JCSystem | Select-Object -Last 2 | Add-JCSystemGroupMember -GroupID $pesterTest_NewSysGroup.Id + $AllSystemGroupmembers = Get-JCGroup -Type System -Name $pesterTest_NewSysGroup.Name | Get-JCSystemGroupMember $AllSystemGroupmembers.GroupName.Count | Should -BeGreaterThan 1 } diff --git a/PowerShell/JumpCloud Module/Tests/Public/RadiusServer/Set-JCRadiusServer.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/RadiusServer/Set-JCRadiusServer.Tests.ps1 index d7d9365fa..9890c7b7a 100644 --- a/PowerShell/JumpCloud Module/Tests/Public/RadiusServer/Set-JCRadiusServer.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/RadiusServer/Set-JCRadiusServer.Tests.ps1 @@ -2,7 +2,16 @@ Describe -Tag:('JCRadiusServer') 'Set-JCRadiusServer Tests' { BeforeAll { $PesterParams_RadiusServer = Get-JCRadiusServer -Name:($PesterParams_RadiusServer.name) If (-not $PesterParams_RadiusServer) { - $PesterParams_RadiusServer = New-JCRadiusServer @PesterParams_NewRadiusServer + try { + $PesterParams_RadiusServer = New-JCRadiusServer @PesterParams_NewRadiusServer + } catch { + $PesterParams_NewRadiusServer = @{ + networkSourceIp = [IPAddress]::Parse([String](Get-Random)).IPAddressToString + sharedSecret = 'f3TkHSK2GT4JR!W9tugRPp2zQnAVObv' + name = 'PesterTest_RadiusServer' + }; + $PesterParams_RadiusServer = New-JCRadiusServer @PesterParams_NewRadiusServer + } } } Context 'Set-JCRadiusServer' { @@ -39,7 +48,11 @@ Describe -Tag:('JCRadiusServer') 'Set-JCRadiusServer 1.15.3' { try { $PesterParams_RadiusServer = New-JCRadiusServer @PesterParams_NewRadiusServer } catch { - $PesterParams_NewRadiusServer.networkSourceIp = [IPAddress]::Parse([String](Get-Random)).IPAddressToString + $PesterParams_NewRadiusServer = @{ + networkSourceIp = [IPAddress]::Parse([String](Get-Random)).IPAddressToString + sharedSecret = 'f3TkHSK2GT4JR!W9tugRPp2zQnAVObv' + name = 'PesterTest_RadiusServer' + }; $PesterParams_RadiusServer = New-JCRadiusServer @PesterParams_NewRadiusServer } } diff --git a/PowerShell/JumpCloud Module/Tests/Public/SystemUsers/Get-JCSystemUser.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/SystemUsers/Get-JCSystemUser.Tests.ps1 index 22e85e6fc..20015102b 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/SystemUsers/Get-JCSystemUser.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/SystemUsers/Get-JCSystemUser.Tests.ps1 @@ -1,8 +1,12 @@ Describe -Tag:('JCSystemUser') 'Get-JCSystemUser 1.0' { - BeforeAll { } + BeforeAll { + $SystemUsers = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id + if (-Not $SystemUsers) { + Add-JCSystemUser -Username $PesterParams_User1.username -SystemID $PesterParams_SystemLinux._id + } + } It "Gets JumpCloud system users for a system using SystemID" { - - $SystemUsers = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id - $SystemUsers.username.Count | Should -BeGreaterThan 1 + $SystemUsers = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id + $SystemUsers.username.Count | Should -BeGreaterOrEqual 1 } } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Users/Get-JCUser.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Users/Get-JCUser.Tests.ps1 index 2476e09e3..e21beab20 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Users/Get-JCUser.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Users/Get-JCUser.Tests.ps1 @@ -26,7 +26,7 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { It "Searches a JumpCloud user by username" { $Username = New-RandomString -NumberOfChars 8 - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -username $Username + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -username $Username $NewUser = Get-JCUser -Username $Username $NewUser.username | Should -Be $Username Remove-JCUser -UserID $NewUser._id -force @@ -35,7 +35,7 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { It "Searches a JumpCloud user by lastname" { $lastname = New-RandomString -NumberOfChars 8 - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -lastname $lastname + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -lastname $lastname $NewUser = Get-JCUser -lastname $lastname $NewUser.lastname | Should -Be $lastname Remove-JCUser -UserID $NewUser._id -force @@ -43,7 +43,7 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { It "Searches a JumpCloud user by firstname" { $firstname = New-RandomString -NumberOfChars 8 - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -firstname $firstname + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -firstname $firstname $NewUser = Get-JCUser -firstname $firstname $NewUser.firstname | Should -Be $firstname Remove-JCUser -UserID $NewUser._id -force @@ -51,35 +51,35 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { It "Searches a JumpCloud user by email" { $email = "deleteme@$(New-RandomString -NumberOfChars 8).com" - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -email $email + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -email $email $NewUser = Get-JCUser -email $email $NewUser.email | Should -Be $email Remove-JCUser -UserID $NewUser._id -force } It "Searches a JumpCloud user by alternateEmail" -Skip { $alternateEmail = "deleteme@$(New-RandomString -NumberOfChars 8).com" - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -alternateEmail $alternateEmail + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -alternateEmail $alternateEmail $NewUser = Get-JCUser -alternateEmail $alternateEmail $NewUser.alternateEmail | Should -Be $alternateEmail Remove-JCUser -UserID $NewUser._id -force } It "Searches a JumpCloud user by recoveryEmail" { $recoveryEmail = "deleteme@$(New-RandomString -NumberOfChars 8).com" - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -recoveryEmail $recoveryEmail + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -recoveryEmail $recoveryEmail $NewUser = Get-JCUser -recoveryEmail $recoveryEmail $NewUser.recoveryEmail.address | Should -Be $recoveryEmail Remove-JCUser -UserID $NewUser._id -force } It "Searches a JumpCloud user by managedAppleID" { $managedAppleID = "deleteme@$(New-RandomString -NumberOfChars 8).com" - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -managedAppleID $managedAppleID + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -managedAppleID $managedAppleID $NewUser = Get-JCUser -managedAppleID $managedAppleID $NewUser.managedAppleID | Should -Be $managedAppleID Remove-JCUser -UserID $NewUser._id -force } It "Searches a JumpCloud user by managerID" { $manager = $PesterParams_User1.id - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -manager $manager + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -manager $manager $NewUser = Get-JCUser -manager $manager $NewUser.manager | Should -Be $manager Remove-JCUser -UserID $NewUser._id -force @@ -87,7 +87,7 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { It "Searches a JumpCloud user by managerUsername" { $managerUsername = $PesterParams_User1.username $managerId = $PesterParams_User1.id - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -manager $managerUsername + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -manager $managerUsername $NewUser = Get-JCUser -manager $managerUsername $NewUser.manager | Should -Be $managerId Remove-JCUser -UserID $NewUser._id -force @@ -96,7 +96,7 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { # Define two users who's username is contained by another user $newUser1 = New-JCUser -username "jemartin" -firstname "je" -lastname "martin" -email "jemartin@$(get-random -Minimum 100 -Maximum 999)-deleteme.com" $newUser2 = New-JCUser -username "emartin" -firstname "e" -lastname "martin" -email "emartin@$(get-random -Minimum 100 -Maximum 999)-deleteme.come" - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -manager $newUser2.username + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -manager $newUser2.username $NewUser = Get-JCUser -manager $newUser2.username $NewUser = Get-JCUser -manager $newUser2.email $NewUser.manager | Should -Be $newUser2.Id @@ -109,7 +109,7 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { It "Searches a JumpCloud user by managerUsername (Case Insensitive)" { $managerUsername = $PesterParams_User1.username $managerId = $PesterParams_User1.id - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -manager $managerUsername + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -manager $managerUsername $NewUser = Get-JCUser -manager $($managerUsername.ToUpper()) $NewUser.manager | Should -Be $managerId Remove-JCUser -UserID $NewUser._id -force @@ -117,7 +117,7 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { It "Searches a JumpCloud user by managerEmail" { $managerEmail = $PesterParams_User1.email $managerId = $PesterParams_User1.id - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -manager $managerEmail + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -manager $managerEmail $NewUser = Get-JCUser -manager $managerEmail $NewUser.manager | Should -Be $managerId Remove-JCUser -UserID $NewUser._id -force @@ -125,13 +125,13 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { It "Searches a JumpCloud user by managerEmail (Case Insensitive)" { $managerEmail = $PesterParams_User1.email $managerId = $PesterParams_User1.id - $NewUser = New-RandomUser -Domain DeleteMe | New-JCUser -manager $managerEmail + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -manager $managerEmail $NewUser = Get-JCUser -manager $($managerEmail.ToUpper()) $NewUser.manager | Should -Be $managerId Remove-JCUser -UserID $NewUser._id -force } It "Searches a JumpCloud user by state SUSPENDED" { - $NewUser = New-RandomUser -Domain DeleteMe | New-JcUser -state "SUSPENDED" + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JcUser -state "SUSPENDED" $SearchUser = Get-JCUser -state "SUSPENDED" | Select-Object -First 1 $SearchUserLower = Get-JCUser -state "suspended" | Select-Object -First 1 $SearchUserMixed = Get-JCUser -state "Suspended" | Select-Object -First 1 @@ -141,7 +141,7 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { Remove-JCUser -UserId $NewUser._id -force } It "Searches a JumpCloud user by state STAGED" { - $NewUser = New-RandomUser -Domain DeleteMe | New-JcUser -state "STAGED" + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JcUser -state "STAGED" $SearchUser = Get-JCUser -state "STAGED" | Select-Object -First 1 $SearchUserLower = Get-JCUser -state "staged" | Select-Object -First 1 $SearchUserMixed = Get-JCUser -state "Staged" | Select-Object -First 1 @@ -151,7 +151,7 @@ Describe -Tag:('JCUser') 'Get-JCUser 1.1' { Remove-JCUser -UserId $NewUser._id -force } It "Searches a JumpCloud user by state ACTIVATED" { - $NewUser = New-RandomUser -Domain DeleteMe | New-JcUser -state "ACTIVATED" + $NewUser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JcUser -state "ACTIVATED" $SearchUser = Get-JCUser -state "ACTIVATED" | Select-Object -First 1 $SearchUserLower = Get-JCUser -state "activated" | Select-Object -First 1 $SearchUserMixed = Get-JCUser -state "Activated" | Select-Object -First 1 @@ -409,7 +409,7 @@ Describe -Tag:('JCUser') "Get-JCUser 1.12" { It "Searches for a user by external_source_type" { - $Newuser = New-RandomUser -domain "deleteme" | New-JCUser + $Newuser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $Random1 = "$(Get-Random)\+?|{[()^$.#" $Random2 = "$(Get-Random)\+?|{[()^$.#" $SetUser = Set-JCUser -Username $Newuser.username -external_source_type "$Random1" -external_dn "$Random2" @@ -422,7 +422,7 @@ Describe -Tag:('JCUser') "Get-JCUser 1.12" { It "Searches for a user by external_dn" { - $Newuser = New-RandomUser -domain "deleteme" | New-JCUser + $Newuser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $Random1 = Get-Random $Random2 = Get-Random $SetUser = Set-JCUser -Username $Newuser.username -external_source_type "$Random1" -external_dn "$Random2" @@ -434,7 +434,7 @@ Describe -Tag:('JCUser') "Get-JCUser 1.12" { It "Searches for a user by external_dn and external_source_type" { - $Newuser = New-RandomUser -domain "deleteme" | New-JCUser + $Newuser = New-RandomUser -Domain "delGetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $Random1 = Get-Random $Random2 = Get-Random $SetUser = Set-JCUser -Username $Newuser.username -external_source_type "$Random1" -external_dn "$Random2" @@ -450,7 +450,8 @@ Describe -Tag:('JCUser') "Case Insensitivity Tests" { $commandParameters = (GCM Get-JCUser).Parameters $gmr = Get-JCUser -Username $PesterParams_User1.username | GM # Get parameters that are not ID, ORGID and have a string following the param name - $parameters = $gmr | Where-Object { ($_.Definition -notmatch "organization") -And ($_.Definition -notmatch "id") -And ($_.Name -In $commandParameters.Keys) -And ($_.Definition -notmatch "bool") -and ($_.Definition -notmatch "manager") -and ($_.Definition -notmatch "external_dn") -and ($_.Definition -notmatch "external_source_type") } + $parameters = $gmr | Where-Object { + ($_.Definition -notmatch "organization") -And ($_.Definition -notmatch "id") -And ($_.Name -In $commandParameters.Keys) -And ($_.Definition -notmatch "bool") -And ($_.Definition -notmatch "manager") -And ($_.Definition -notmatch "external_dn") -And ($_.Definition -notmatch "activated") -And ($_.Definition -notmatch "external_source_type") } foreach ($param in $parameters.Name) { $string = "" $searchPester = "" @@ -496,7 +497,7 @@ Describe -Tag:('JCUser') "Case Insensitivity Tests" { } } - It "Searches params after setting values to include special characters like \|{[()^$.#" { + It "Searches params after setting values to include special characters like \ | { [()^$.#" { $commandParameters = (GCM Get-JCUser).Parameters $gmr = Get-JCUser -Username $PesterParams_User1.username | GM # Get parameters that are not ID, ORGID and have a string following the param name @@ -505,11 +506,11 @@ Describe -Tag:('JCUser') "Case Insensitivity Tests" { foreach ($param in $parameters.Name) { if (($param -ne "email") -and ($param -ne "username") -and ($param -ne "state") -and ($param -ne "recoveryEmail")) { # Test for special characters - $paramInput = "$(New-RandomString -NumberOfChars 8)\|{[()^$.#" + $paramInput = "$(New-RandomString -NumberOfChars 8)\| { [()^$.#" $splat.Add($param, $paramInput) } } - $NewUser = "New-RandomUser -Domain DeleteMe | New-JCUser @splat" + $NewUser = "New-RandomUser -Domain `"delGetUser.$(New-RandomString -NumberOfChars 5)`" | New-JCUser @splat" $splat.add('username', (New-RandomString -numberofchars 8)) $NewUserInvoke = Invoke-Expression -Command:($NewUser) foreach ($param in $splat.keys) { @@ -519,4 +520,7 @@ Describe -Tag:('JCUser') "Case Insensitivity Tests" { } Remove-JCUser -username $NewUserInvoke.username -force } +} +AfterAll { + Get-JCUser | Where-Object Email -like *delGetUser* | Remove-JCUser -force } \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Public/Users/New-JCUser.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Users/New-JCUser.Tests.ps1 index f2ba968a9..1ac6630cd 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Users/New-JCUser.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Users/New-JCUser.Tests.ps1 @@ -1,155 +1,155 @@ Describe -Tag:('JCUser') 'New-JCUser 1.0' { BeforeAll { } It "Creates a new user" { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $NewUser._id.count | Should -Be 1 Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User allow_public_key -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -allow_public_key $true + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -allow_public_key $true $NewUser.allow_public_key | Should -Be True Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User allow_public_key -eq False " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -allow_public_key $false + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -allow_public_key $false $NewUser.allow_public_key | Should -Be False Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sudo -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -sudo $true + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -sudo $true $NewUser.sudo | Should -Be True Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sudo -eq False " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -sudo $false + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -sudo $false $NewUser.sudo | Should -Be False Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User enable_managed_uid -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -enable_managed_uid $true -unix_uid 1 -unix_guid 1 + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_managed_uid $true -unix_uid 1 -unix_guid 1 $NewUser.enable_managed_uid | Should -Be True Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User enable_managed_uid -eq False " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -enable_managed_uid $false + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_managed_uid $false $NewUser.enable_managed_uid | Should -Be False Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User passwordless_sudo -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -passwordless_sudo $true + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -passwordless_sudo $true $NewUser.passwordless_sudo | Should -Be True Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User passwordless_sudo -eq False " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -passwordless_sudo $false + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -passwordless_sudo $false $NewUser.passwordless_sudo | Should -Be False Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User ldap_binding_user -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -ldap_binding_user $true + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -ldap_binding_user $true $NewUser.ldap_binding_user | Should -Be True Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User ldap_binding_user -eq False " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -ldap_binding_user $false + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -ldap_binding_user $false $NewUser.ldap_binding_user | Should -Be False Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User enable_user_portal_multifactor -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -enable_user_portal_multifactor $true + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $true $NewUser.enable_user_portal_multifactor | Should -Be True Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User enable_user_portal_multifactor -eq False " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -enable_user_portal_multifactor $false + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $false $NewUser.enable_user_portal_multifactor | Should -Be False Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sets unix_uid" { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -unix_uid 100 + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -unix_uid 100 $NewUser.unix_uid | Should -Be 100 Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sets unix_guid" { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -unix_guid 100 + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -unix_guid 100 $NewUser.unix_guid | Should -Be 100 Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sets manager" { $managerID = $PesterParams_User1.id - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -manager $managerID + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -manager $managerID $NewUser.manager | Should -Be $managerID Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sets managerUsername" { $managerUsername = $PesterParams_User1.username $managerID = $PesterParams_User1.id - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -manager $managerUsername + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -manager $managerUsername $NewUser.manager | Should -Be $managerID Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sets managerEmail" { $managerEmail = $PesterParams_User1.email $managerID = $PesterParams_User1.id - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -manager $managerEmail + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -manager $managerEmail $NewUser.manager | Should -Be $managerID Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sets alternateEmail" { $alternateEmail = "$((New-RandomString -NumberOfChars 6))ae@DeleteMe.com" - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -alternateEmail $alternateEmail + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -alternateEmail $alternateEmail $NewUser.alternateEmail | Should -Be $alternateEmail Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sets recoveryEmail" { $recoveryEmail = "$((New-RandomString -NumberOfChars 6))re@DeleteMe.com" - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -recoveryEmail $recoveryEmail + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -recoveryEmail $recoveryEmail $NewUser.recoveryEmail.address | Should -Be $recoveryEmail Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User sets managedAppleID" { $managedAppleID = "$((New-RandomString -NumberOfChars 6))maid@DeleteMe.com" - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -managedAppleID $managedAppleID + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -managedAppleID $managedAppleID $NewUser.managedAppleID | Should -Be $managedAppleID Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User with 1 custom attributes" { - $NewUser = New-RandomUser -Attributes -Domain DeleteMe | New-JCUser -NumberOfCustomAttributes 1 + $NewUser = New-RandomUser -Attributes -Domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -NumberOfCustomAttributes 1 $NewUser.attributes._id.Count | Should -Be 1 Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User with 3 custom attributes" { - $NewUser = New-RandomUser -Attributes -Domain DeleteMe | New-JCUser -NumberOfCustomAttributes 3 + $NewUser = New-RandomUser -Attributes -Domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -NumberOfCustomAttributes 3 $NewUser.attributes._id.Count | Should -Be 3 Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User with state SUSPENDED" { - $NewUser = New-RandomUser -Attributes -Domain DeleteMe | New-JCUser -state "SUSPENDED" + $NewUser = New-RandomUser -Attributes -Domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -state "SUSPENDED" $NewUser.suspended | Should -Be True $NewUser.state | Should -Be "SUSPENDED" Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Creates a new User with state STAGED" { - $NewUser = New-RandomUser -Attributes -Domain DeleteMe | New-JCUser -state "STAGED" + $NewUser = New-RandomUser -Attributes -Domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -state "STAGED" $NewUser.state | Should -Be "STAGED" Remove-JCUser -UserID $NewUser._id -ByID -Force } @@ -160,7 +160,7 @@ Describe -Tag:('JCUser') 'Add-JCUser 1.3.0' { #Linux UID, GUID It "Adds a JumpCloud user with a high UID and GUID" { - $NewUser = New-RandomUser -domain pleasedelete | New-JCUser -unix_uid 1000000 -unix_guid 1000000 + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -unix_uid 1000000 -unix_guid 1000000 $NewUser.unix_uid | Should -Be '1000000' $NewUser.unix_guid | Should -Be '1000000' @@ -171,7 +171,7 @@ Describe -Tag:('JCUser') 'Add-JCUser 1.3.0' { It "Adds a JumpCloud user with password_never_expires false " { - $ExpFalse = New-RandomUser -domain pleasedelete | New-JCUser -password_never_expires $false + $ExpFalse = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -password_never_expires $false $ExpFalse.password_never_expires | Should -Be $false @@ -181,7 +181,7 @@ Describe -Tag:('JCUser') 'Add-JCUser 1.3.0' { It "Adds a JumpCloud user with password_never_expires true " { - $ExpTrue = New-RandomUser -domain pleasedelete | New-JCUser -password_never_expires $true + $ExpTrue = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -password_never_expires $true $ExpTrue.password_never_expires | Should -Be $true @@ -340,7 +340,7 @@ Describe -Tag:('JCUser') "New-JCUser MFA with enrollment periods 1.10" { It "Creates a new user with enable_user_portal_multifactor -eq True" { - $Newuser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $true + $Newuser = New-RandomUser -Domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $true $Newuser.mfa.exclusion | Should -Be $true @@ -352,7 +352,7 @@ Describe -Tag:('JCUser') "New-JCUser MFA with enrollment periods 1.10" { $EnrollmentDays = 30 - $Newuser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays + $Newuser = New-RandomUser -Domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays $Newuser.mfa.exclusion | Should -Be $true @@ -364,7 +364,7 @@ Describe -Tag:('JCUser') "New-JCUser MFA with enrollment periods 1.10" { $EnrollmentDays = 365 - $Newuser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays + $Newuser = New-RandomUser -Domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays $Newuser.mfa.exclusion | Should -Be $true @@ -375,7 +375,7 @@ Describe -Tag:('JCUser') "New-JCUser MFA with enrollment periods 1.10" { It "Creates a new user with enable_user_portal_multifactor -eq True with Attributes" { - $NewUser = New-RandomUser -domain "deleteme"-Attributes | New-JCUser -NumberOfCustomAttributes 2 -enable_user_portal_multifactor $True + $NewUser = New-RandomUser -Domain "delNewUser.$(New-RandomString -NumberOfChars 5)"-Attributes | New-JCUser -NumberOfCustomAttributes 2 -enable_user_portal_multifactor $True $Newuser.mfa.exclusion | Should -Be $true @@ -387,7 +387,7 @@ Describe -Tag:('JCUser') "New-JCUser MFA with enrollment periods 1.10" { $EnrollmentDays = 30 - $NewUser = New-RandomUser -domain "deleteme"-Attributes | New-JCUser -NumberOfCustomAttributes 2 -enable_user_portal_multifactor $True -EnrollmentDays $EnrollmentDays + $NewUser = New-RandomUser -Domain "delNewUser.$(New-RandomString -NumberOfChars 5)"-Attributes | New-JCUser -NumberOfCustomAttributes 2 -enable_user_portal_multifactor $True -EnrollmentDays $EnrollmentDays $Newuser.mfa.exclusion | Should -Be $true @@ -425,7 +425,7 @@ Describe -Tag:('JCUser') "New-JCUser MFA with enrollment periods 1.10" { Describe -Tag:('JCUser') "New-JCUser with suspend param 1.15" { It "Creates a new User suspended -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -suspended $true + $NewUser = New-RandomUser -domain "delNewUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -suspended $true $NewUser.suspended | Should -Be True Remove-JCUser -UserID $NewUser._id -ByID -Force } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Users/Remove-JCUser.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Users/Remove-JCUser.Tests.ps1 index 21585bc66..2715b7d36 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Users/Remove-JCUser.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Users/Remove-JCUser.Tests.ps1 @@ -9,7 +9,7 @@ Describe -Tag:('JCUser') "Remove-JCUser 1.10" { It "Removes JumpCloud User by Username and -force" { - $NewUser = New-RandomUser -domain "pleasedelete" | New-JCUser + $NewUser = New-RandomUser -Domain "delUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $RemoveUser = Remove-JCUser -Username $NewUser.username -force @@ -19,7 +19,7 @@ Describe -Tag:('JCUser') "Remove-JCUser 1.10" { It "Removes JumpCloud User by UserID and -force" { - $NewUser = New-RandomUser -domain "pleasedelete" | New-JCUser + $NewUser = New-RandomUser -Domain "delUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $RemoveUser = Remove-JCUser -UserID $NewUser._id -force diff --git a/PowerShell/JumpCloud Module/Tests/Public/Users/Set-JCUser.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Users/Set-JCUser.Tests.ps1 index b245a923c..5ccdc9272 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Users/Set-JCUser.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Users/Set-JCUser.Tests.ps1 @@ -348,38 +348,41 @@ Describe -Tag:('JCUser') 'Set-JCUser 1.0' { } Describe -Tag:('JCUser') "Set-JCUser - CustomAttributes 1.0" { It "Updates a custom attribute on a User" { - $NewUser = New-RandomUserCustom -Attributes -Domain DeleteMe | New-JCUser -NumberOfCustomAttributes 3 + $NewUser = New-RandomUserCustom -Attributes -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -NumberOfCustomAttributes 3 $UpdatedUser = Set-JCUser $NewUser.username -NumberOfCustomAttributes 1 -Attribute1_name 'Department' -Attribute1_value 'IT' [string]$NewUserAttr = $NewUser.attributes.name | Sort-Object [string]$UpdatedUserAttr = $UpdatedUser.attributes.name | Sort-Object - $match = if ($NewUserAttr -eq $UpdatedUserAttr) { $true } - else { + $match = if ($NewUserAttr -eq $UpdatedUserAttr) { + $true + } else { $false } $match | Should -Be $true Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Adds a custom attribute to a User" { - $NewUser = New-RandomUserCustom -Attributes -Domain DeleteMe | New-JCUser -NumberOfCustomAttributes 3 + $NewUser = New-RandomUserCustom -Attributes -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -NumberOfCustomAttributes 3 $UpdatedUser = Set-JCUser $NewUser.username -NumberOfCustomAttributes 1 -Attribute1_name 'NewAttribute' -Attribute1_value 'IT' [int]$NewUserAttr = $NewUser.attributes.name.count [int]$UpdatedUserAttr = $UpdatedUser.attributes.name.count $NewUserAttr ++ - $match = if ($NewUserAttr -eq $UpdatedUserAttr) { $true } - else { + $match = if ($NewUserAttr -eq $UpdatedUserAttr) { + $true + } else { $false } $match | Should -Be $true Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Removes a custom attribute from a User" { - $NewUser = New-RandomUserCustom -Attributes -Domain DeleteMe | New-JCUser -NumberOfCustomAttributes 3 + $NewUser = New-RandomUserCustom -Attributes -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -NumberOfCustomAttributes 3 $UpdatedUser = Set-JCUser $NewUser.username -RemoveAttribute 'Department' [int]$NewUserAttr = $NewUser.attributes.name.count [int]$UpdatedUserAttr = $UpdatedUser.attributes.name.count $UpdatedUserAttr++ - $match = if ($NewUserAttr -eq $UpdatedUserAttr) { $true } - else { + $match = if ($NewUserAttr -eq $UpdatedUserAttr) { + $true + } else { $false } $match | Should -Be $true @@ -1246,73 +1249,73 @@ Describe -Tag:('JCUser') "Set-JCuser users phoneNumbers and attributes 1.8.0" { } Describe -Tag:('JCUser') "Set-JCUser MFA Enrollment periods 1.10" { It "Updates an existing user with enable_user_portal_multifactor -eq False to enable_user_portal_multifactor -eq True " { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $false + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $false $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Updates an existing user with enable_user_portal_multifactor -eq False to enable_user_portal_multifactor -eq True and a 7 days specified for EnrollmentDays" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $false + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $false $EnrollmentDays = 7 $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Updates an existing user with enable_user_portal_multifactor -eq True and a 365 days specified for EnrollmentDays" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $false + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $false $EnrollmentDays = 365 $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Updates an existing user with enable_user_portal_multifactor -eq False to enable_user_portal_multifactor -eq True -ByID" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $false + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $false $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true -ByID $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Updates an existing user with enable_user_portal_multifactor -eq False to enable_user_portal_multifactor -eq True and a 7 days specified for EnrollmentDays -ByID" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $false + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $false $EnrollmentDays = 7 $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays -ByID $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Updates an existing user with enable_user_portal_multifactor -eq True and a 365 days specified for EnrollmentDays -ByID" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $false + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $false $EnrollmentDays = 365 $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays -ByID $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Updates an existing user with enable_user_portal_multifactor -eq True with Attributes" { - $CreateUser = New-RandomUser -domain "deleteme" -Attributes | New-JCUser -NumberOfCustomAttributes 2 -enable_user_portal_multifactor $True + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" -Attributes | New-JCUser -NumberOfCustomAttributes 2 -enable_user_portal_multifactor $True $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true -NumberOfCustomAttributes 1 -Attribute1_name 'attr1' -Attribute1_value 'attr1v' $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Updates an existing user with enable_user_portal_multifactor -eq True and a 7 days specified for EnrollmentDays with Attributes" { $EnrollmentDays = 7 - $CreateUser = New-RandomUser -domain "deleteme" -Attributes | New-JCUser -NumberOfCustomAttributes 2 -enable_user_portal_multifactor $True + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" -Attributes | New-JCUser -NumberOfCustomAttributes 2 -enable_user_portal_multifactor $True $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays -NumberOfCustomAttributes 1 -Attribute1_name 'attr1' -Attribute1_value 'attr1v' $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Updates an existing user with enable_user_portal_multifactor -eq True with removeAttributes" { - $CreateUser = New-RandomUser -domain "deleteme" -Attributes | New-JCUser -NumberOfCustomAttributes 2 + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" -Attributes | New-JCUser -NumberOfCustomAttributes 2 $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true -RemoveAttribute 'Department', 'Lang' $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Updates an existing user with enable_user_portal_multifactor -eq True and a 7 days specified for EnrollmentDays with removeAttributes" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $true + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $true $EnrollmentDays = 7 $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $true -EnrollmentDays $EnrollmentDays $Newuser.mfa.exclusion | Should -Be $true $Newuser | Remove-JCUser -ByID -force } It "Disabled MFA enrollment by setting enable_user_portal_multifactor to False" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -enable_user_portal_multifactor $true + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -enable_user_portal_multifactor $true $NewUser = $CreateUser | Set-JCUser -enable_user_portal_multifactor $false $Newuser.mfa.exclusion | Should -Be $false $Newuser.mfa.exclusionUntil | Should -BeNullOrEmpty @@ -1320,7 +1323,7 @@ Describe -Tag:('JCUser') "Set-JCUser MFA Enrollment periods 1.10" { } Describe -Tag:('JCUser') "Set-JCUser bug fix 1.10.2" { It "Updates a users home poBox" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -home_poBox "myhome" + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -home_poBox "myhome" $NewUser = $CreateUser | Set-JCUser -home_poBox "yourHome" $NewUser.addresses | Where-Object type -EQ home | Select-Object -ExpandProperty poBox | Should -Be "yourHome" #$NullCheck = Get-JCUser $CreateUser.username | ConvertTo-Json -Depth 5 | Select-String null @@ -1328,7 +1331,7 @@ Describe -Tag:('JCUser') "Set-JCUser bug fix 1.10.2" { $Newuser | Remove-JCUser -ByID -force } It "Updates a users work poBox" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -work_poBox "mywork" + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -work_poBox "mywork" $NewUser = $CreateUser | Set-JCUser -work_poBox "yourwork" $NewUser.addresses | Where-Object type -EQ work | Select-Object -ExpandProperty poBox | Should -Be "yourwork" #$NullCheck = Get-JCUser $CreateUser.username | ConvertTo-Json -Depth 5 | Select-String null @@ -1336,7 +1339,7 @@ Describe -Tag:('JCUser') "Set-JCUser bug fix 1.10.2" { $Newuser | Remove-JCUser -ByID -force } It "Updates a mobile_number" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -mobile_number "mobile1" + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -mobile_number "mobile1" $NewUser = $CreateUser | Set-JCUser -mobile_number "mobile2" $NewUser.phoneNumbers | Where-Object type -EQ mobile | Select-Object -ExpandProperty number | Should -Be "mobile2" #$NullCheck = Get-JCUser $CreateUser.username | ConvertTo-Json -Depth 5 | Select-String null @@ -1344,7 +1347,7 @@ Describe -Tag:('JCUser') "Set-JCUser bug fix 1.10.2" { $Newuser | Remove-JCUser -ByID -force } It "Updates a users home poBox and work poBox" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -home_poBox "myhome" + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -home_poBox "myhome" $NewUser = $CreateUser | Set-JCUser -home_poBox "yourHome" $NewUser.addresses | Where-Object type -EQ home | Select-Object -ExpandProperty poBox | Should -Be "yourHome" $NewUser = $CreateUser | Set-JCUser -work_poBox "yourwork" @@ -1354,7 +1357,7 @@ Describe -Tag:('JCUser') "Set-JCUser bug fix 1.10.2" { $Newuser | Remove-JCUser -ByID -force } It "Updates a mobile_number and work_number" { - $CreateUser = New-RandomUser -domain "deleteme" | New-JCUser -mobile_number "mobile1" + $CreateUser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -mobile_number "mobile1" $NewUser = $CreateUser | Set-JCUser -mobile_number "mobile2" $NewUser.phoneNumbers | Where-Object type -EQ mobile | Select-Object -ExpandProperty number | Should -Be "mobile2" $NewUser = $CreateUser | Set-JCUser -work_number "work2" @@ -1366,7 +1369,7 @@ Describe -Tag:('JCUser') "Set-JCUser bug fix 1.10.2" { } Describe -Tag:('JCUser') "Set-JCUser 1.12" { It "Sets a users external_source_type" { - $Newuser = New-RandomUser -domain "deleteme" | New-JCUser + $Newuser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $Random1 = $(Get-Random) $Random2 = $(Get-Random) $SetUser = Set-JCUser -Username $Newuser.username -external_source_type "$Random1" -external_dn "$Random2" @@ -1375,7 +1378,7 @@ Describe -Tag:('JCUser') "Set-JCUser 1.12" { $SearchUser.external_source_type | Should -Be $SetUser.external_source_type } It "Sets a users external_dn" { - $Newuser = New-RandomUser -domain "deleteme" | New-JCUser + $Newuser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $Random1 = $(Get-Random) $Random2 = $(Get-Random) $SetUser = Set-JCUser -Username $Newuser.username -external_source_type "$Random1" -external_dn "$Random2" @@ -1384,7 +1387,7 @@ Describe -Tag:('JCUser') "Set-JCUser 1.12" { $SearchUser.external_dn | Should -Be $SetUser.external_dn } It "Sets a users external_dn and external_source_type" { - $Newuser = New-RandomUser -domain "deleteme" | New-JCUser + $Newuser = New-RandomUser -Domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $Random1 = $(Get-Random) $Random2 = $(Get-Random) $SetUser = Set-JCUser -Username $Newuser.username -external_source_type "$Random1" -external_dn "$Random2" @@ -1396,19 +1399,19 @@ Describe -Tag:('JCUser') "Set-JCUser 1.12" { } Describe -Tag:('JCUser') "Set-JCUser with Suspend param 1.15 via pipeline" { It "Updates a user suspended -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser # This is a conflicting and unsupport state/ suspended pairing { $NewUser | Set-JCUser -suspended $True } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Updates a user suspended -eq false " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -suspended $true + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -suspended $true # This is a conflicting and unsupport state/ suspended pairing { $NewUser | Set-JCUser -suspended $false } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from SUSPENDED to ACTIVATED with suspended true should error' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -suspended $true + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -suspended $true { $NewUser | Set-JCUser -state "ACTIVATED" -suspended $true } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } @@ -1416,19 +1419,19 @@ Describe -Tag:('JCUser') "Set-JCUser with Suspend param 1.15 via pipeline" { Describe -Tag:('JCUser') "Set-JCUser with Suspend param via Username" { It "Updates a user suspended -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $UpdatedUser = Set-JCUser -Username $NewUser.username -suspended $True $UpdatedUser.suspended | Should -Be True Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Updates a user suspended -eq false " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -suspended $true + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -suspended $true $UpdatedUser = Set-JCUser -Username $NewUser.username -suspended $false $UpdatedUser.suspended | Should -Be False Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from SUSPENDED to ACTIVATED with suspended true should error' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -suspended $true + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -suspended $true { Set-JCUser -Username $NewUser.username -state "ACTIVATED" -suspended $true } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } @@ -1436,19 +1439,19 @@ Describe -Tag:('JCUser') "Set-JCUser with Suspend param via Username" { Describe -Tag:('JCUser') "Set-JCUser with Suspend param via UserID" { It "Updates a user suspended -eq True " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $UpdatedUser = Set-JCUser -UserID $NewUser.id -suspended $True $UpdatedUser.suspended | Should -Be True Remove-JCUser -UserID $NewUser._id -ByID -Force } It "Updates a user suspended -eq false " { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -suspended $true + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -suspended $true $UpdatedUser = Set-JCUser -UserID $NewUser.id -suspended $false $UpdatedUser.suspended | Should -Be False Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from SUSPENDED to ACTIVATED with suspended true should error' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -suspended $true + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -suspended $true { Set-JCUser -UserID $NewUser.id -state "ACTIVATED" -suspended $true } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } @@ -1456,26 +1459,26 @@ Describe -Tag:('JCUser') "Set-JCUser with Suspend param via UserID" { Describe -Tag:('JCUser') 'Set-JCUser with State param via pipeline' { It 'Updates a user state from ACTIVATED to SUSPENDED' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $UpdatedUser = $NewUser | Set-JCUser -state "SUSPENDED" $UpdatedUser.suspended | Should -Be True $UpdatedUser.state | Should -Be "SUSPENDED" Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from SUSPENDED to ACTIVATED' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -state "SUSPENDED" + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -state "SUSPENDED" $UpdatedUser = $NewUser | Set-JCUser -state "ACTIVATED" $UpdatedUser.suspended | Should -Be False $UpdatedUser.state | Should -Be "ACTIVATED" Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from ACTIVATED to SUSPENDED with suspended false should error' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser { $NewUser | Set-JCUser -state "SUSPENDED" -suspended $false } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from SUSPENDED to ACTIVATED with suspended true should error' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -state "SUSPENDED" + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -state "SUSPENDED" { $NewUser | Set-JCUser -state "ACTIVATED" -suspended $true } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } @@ -1483,26 +1486,26 @@ Describe -Tag:('JCUser') 'Set-JCUser with State param via pipeline' { Describe -Tag:('JCUser') 'Set-JCUser with State param via Username' { It 'Updates a user state from ACTIVATED to SUSPENDED' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $UpdatedUser = Set-JCUser -Username $NewUser.username -state "SUSPENDED" $UpdatedUser.suspended | Should -Be True $UpdatedUser.state | Should -Be "SUSPENDED" Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from SUSPENDED to ACTIVATED' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -state "SUSPENDED" + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -state "SUSPENDED" $UpdatedUser = Set-JCUser -Username $NewUser.username -state "ACTIVATED" $UpdatedUser.suspended | Should -Be False $UpdatedUser.state | Should -Be "ACTIVATED" Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from ACTIVATED to SUSPENDED with suspended false should error' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser { Set-JCUser -Username $NewUser.username -state "SUSPENDED" -suspended $false } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from SUSPENDED to ACTIVATED with suspended true should error' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -state "SUSPENDED" + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -state "SUSPENDED" { Set-JCUser -Username $NewUser.username -state "ACTIVATED" -suspended $true } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } @@ -1510,27 +1513,30 @@ Describe -Tag:('JCUser') 'Set-JCUser with State param via Username' { Describe -Tag:('JCUser') 'Set-JCUser with State param via UserID' { It 'Updates a user state from ACTIVATED to SUSPENDED' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $UpdatedUser = Set-JCUser -UserID $NewUser.id -state "SUSPENDED" $UpdatedUser.suspended | Should -Be True $UpdatedUser.state | Should -Be "SUSPENDED" Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from SUSPENDED to ACTIVATED' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -state "SUSPENDED" + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -state "SUSPENDED" $UpdatedUser = Set-JCUser -UserID $NewUser.id -state "ACTIVATED" $UpdatedUser.suspended | Should -Be False $UpdatedUser.state | Should -Be "ACTIVATED" Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from ACTIVATED to SUSPENDED with suspended false should error' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser { Set-JCUser -UserID $NewUser.id -state "SUSPENDED" -suspended $false } | Should -Throw Remove-JCUser -UserID $NewUser._id -ByID -Force } It 'Updates a user state from SUSPENDED to ACTIVATED with suspended true should error' { - $NewUser = New-RandomUser -domain pleasedelete"PesterTest$(Get-Date -Format MM-dd-yyyy)" | New-JCUser -state "SUSPENDED" + $NewUser = New-RandomUser -domain "delSetUser.$(New-RandomString -NumberOfChars 5)" | New-JCUser -state "SUSPENDED" { Set-JCUser -UserID $NewUser.id -state "ACTIVATED" -suspended $true | Should -Throw } Remove-JCUser -UserID $NewUser._id -ByID -Force } +} +AfterAll { + Get-JCUser | Where-Object Email -like *delSetUser* | Remove-JCUser -force } \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Import-JCMspFromCSV.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Import-JCMspFromCSV.Tests.ps1 index a0ebf1f71..ff1ac9ccb 100644 --- a/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Import-JCMspFromCSV.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Import-JCMspFromCSV.Tests.ps1 @@ -1,12 +1,12 @@ Describe -Tag:('MSP') 'Import-JCMSPFromCSV' { BeforeAll { - BeforeAll { Connect-JCOnline -JumpCloudApiKey:($env:PESTER_MSP_APIKEY) -JumpCloudOrgId:($env:PESTER_ORGID) -force | Out-Null } + BeforeAll { Connect-JCOnline -JumpCloudApiKey:($env:JCAPIKEY) -JumpCloudOrgId:($env:JCOrgId) -force | Out-Null } # Validate MSP Test org is set to default: - $org = Get-JCSdkOrganization -id $env:PESTER_ORGID + $org = Get-JCSdkOrganization -id $env:JCOrgId if (($org.Settings.Name -ne "PesterMSP") -And ($org.Settings.Name -ne "Updated PesterMSP")) { - Set-JcSdkOrganization -Id $env:PESTER_ORGID -Settings @{Name = "PesterMSP" } + Set-JcSdkOrganization -Id $env:JCOrgId -Settings @{Name = "PesterMSP" } } } Context 'Organization Import' { diff --git a/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Import-JCUsersFromCSV.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Import-JCUsersFromCSV.Tests.ps1 index 93370f70c..df3d7b10d 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Import-JCUsersFromCSV.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Import-JCUsersFromCSV.Tests.ps1 @@ -1,350 +1,22 @@ -Describe -Tag:('JCUsersFromCSV') 'Import-JCUserFromCSV 1.1' -skip { - #TODO: rework tests, dynamically populate groups/ system, else these tests fail - BeforeAll { } - It "Removes users Where-Object Email -like *pleasedelete* " { - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force - } - It "Imports users from the ImportExample_Pester_Test using -Force" { - $UserImport = Import-JCUsersFromCSV -CSVFilePath $PesterParams_Import_JCUsersFromCSV_1_1_Tests -force - } - - It "Verifies a.user user" { - - $User = Get-JCUser -Username 'a.user' | Where-Object Username -EQ 'a.user' - - $User.activated | Should -Be true - - } - - It "Verifies ia.user user" { - - $User = Get-JCUser -Username 'ia.user' | Where-Object Username -EQ 'ia.user' - - - $User.activated | Should -Be false - } - - It "Verifies " { - - $User = Get-JCUser -Username 'a.bound.std' | Where-Object Username -EQ 'a.bound.std' - - $User.activated | Should -Be true - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'a.bound.std' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be false - - } - - It "Verifies a.bound.true1 user" { - - $User = Get-JCUser -Username 'a.bound.true1' | Where-Object username -EQ 'a.bound.true1' - - $User.activated | Should -Be true - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'a.bound.true1' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be true - - } - - It "Verifies a.bound.false1 user" { - - $User = Get-JCUser -Username 'a.bound.false1' | Where-Object username -EQ 'a.bound.false1' - - $User.activated | Should -Be true - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'a.bound.false1' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be false - - } - - It "Verifies a.bound.true2 user" { - - $User = Get-JCUser -Username 'a.bound.true2' | Where-Object username -EQ 'a.bound.true2' - - $User.activated | Should -Be true - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'a.bound.true2' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be true - - } - - It "Verifies a.bound.false2 user" { - - $User = Get-JCUser -Username 'a.bound.false2' | Where-Object username -EQ 'a.bound.false2' - - $User.activated | Should -Be true - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'a.bound.false2' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be false - - } - - It "Verifies ia.bound.std user" { - - $User = Get-JCUser -Username 'ia.bound.std' | Where-Object username -EQ 'ia.bound.std' - - $User.activated | Should -Be false - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'ia.bound.std' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be false - - } - - It "Verifies ia.bound.true1 user" { - - $User = Get-JCUser -Username 'ia.bound.true1' | Where-Object username -EQ 'ia.bound.true1' - - $User.activated | Should -Be false - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'ia.bound.true1' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be true - - } - - It "Verifies ia.bound.false1 user" { - - $User = Get-JCUser -Username 'ia.bound.false1' | Where-Object username -EQ 'ia.bound.false1' - - $User.activated | Should -Be false - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'ia.bound.false1' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be false - - } - - It "Verifies ia.bound.true2 user" { - - $User = Get-JCUser -Username 'ia.bound.true2' - - $User.activated | Should -Be false - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'ia.bound.true2' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be true - - } - - It "Verifies ia.bound.false2 user" { - - $User = Get-JCUser -Username 'ia.bound.false2' | Where-Object username -EQ 'ia.bound.false2' - - $User.activated | Should -Be false - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'ia.bound.false2' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be false - - } - - It "Verifies a.1group user" { - - $User = Get-JCUser -Username 'a.1group' | Where-Object username -EQ 'a.1group' - - $User.activated | Should -Be true - - $Groups = Get-JCAssociation -Type:('user') -Id:($User.id) -TargetType:('user_group') - - $Groups.count | Should -Be - - } - - It "Verifies ia.1group user" { - - $User = Get-JCUser -Username 'ia.1group' | Where-Object username -EQ 'ia.1group' - - $User.activated | Should -Be false - - $Groups = Get-JCAssociation -Type:('user') -Id:($User.id) -TargetType:('user_group') - - $Groups.count | Should -Be - - } - - It "Verifies a.2group user" { - - $User = Get-JCUser -Username 'a.2group' | Where-Object Username -EQ 'a.2group' - - $User.activated | Should -Be true - - $Groups = Get-JCAssociation -Type:('user') -Id:($User.id) -TargetType:('user_group') - - $Groups.count | Should -Be - - } - - It "Verifies ia.2group user" { - - $User = Get-JCUser -Username 'ia.2group' | Where-Object username -EQ 'ia.2group' - - $User.activated | Should -Be false - - $Groups = Get-JCAssociation -Type:('user') -Id:($User.id) -TargetType:('user_group') - - $Groups.count | Should -Be - - } - - It "Verifies a.5group user" { - - $User = Get-JCUser -Username 'a.5group' | Where-Object username -EQ 'a.5group' - - $User.activated | Should -Be true - - $Groups = Get-JCAssociation -Type:('user') -Id:($User.id) -TargetType:('user_group') - - $Groups.count | Should -Be - - } - - It "Verifies ia.5group user" { - - $User = Get-JCUser -Username 'ia.5group' | Where-Object Username -EQ 'ia.5group' - - $User.activated | Should -Be false - - $Groups = Get-JCAssociation -Type:('user') -Id:($User.id) -TargetType:('user_group') - - $Groups.count | Should -Be - - } - - It "Verifies a.1attr user" { - - $User = Get-JCUser -Username 'a.1attr' - - $User.activated | Should -Be true - - $User.attributes.count | Should -Be - - } - - It "Verifies ia.1attr user" { - - $User = Get-JCUser -Username 'ia.1attr' - - $User.activated | Should -Be false - - $User.attributes.count | Should -Be - - } - - It "Verifies a.2attr user" { - - $User = Get-JCUser -Username 'a.2attr' | Where-Object username -EQ 'a.2attr' - - $User.activated | Should -Be true - - $User.attributes.count | Should -Be - - } - - It "Verifies ia.2attr user" { - - $User = Get-JCUser -Username 'ia.2attr' | Where-Object username -EQ 'ia.2attr' - - $User.activated | Should -Be false - - - $User.attributes.count | Should -Be - - } - - It "Verifies a.5attr user" { - - $User = Get-JCUser -Username 'a.5attr' | Where-Object username -EQ 'a.5attr' - - $User.activated | Should -Be true - - $User.attributes.count | Should -Be - - } - - It "Verifies ia.5attr user" { - - $User = Get-JCUser -Username 'ia.5attr' | Where-Object username -EQ 'ia.5attr' - - $User.activated | Should -Be false - - - $User.attributes.count | Should -Be - - } - - It "Verifies a.all" { - - $User = Get-JCUser -Username 'a.all' | Where-Object username -EQ 'a.all' - - $User.activated | Should -Be true - - $User.attributes.count | Should -Be - - $Groups = Get-JCAssociation -Type:('user') -Id:($User.id) -TargetType:('user_group') - - $Groups.count | Should -Be - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'a.all' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be true - - } - - It "Verifies ia.all" { - - $User = Get-JCUser -Username 'ia.all' | Where-Object username -EQ 'ia.all' - - $User.activated | Should -Be false - - $User.attributes.count | Should -Be - - $Groups = Get-JCAssociation -Type:('user') -Id:($User.id) -TargetType:('user_group') - - $Groups.count | Should -Be - - # $Bound = Get-JCSystemUser -SystemID $PesterParams_SystemLinux._id | Where-Object username -EQ 'ia.all' - - $Bound.DirectBind | Should -Be true - - $Bound.Administrator | Should -Be true - - - } - It "Removes users Where-Object Email -like *pleasedelete* " { - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force - } -} Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 1.8.0" { It "Imports users from a CSV populated with telephony attributes" { + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @( + @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testimportcsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "mobile_number" = "$($user1RandomString)" + "home_number" = "$($user1RandomString)" + "work_number" = "$($user1RandomString)" + "work_mobile_number" = "$($user1RandomString)" + "work_fax_number" = "$($user1RandomString)" + } + ) + $CSVDATA | Export-Csv "$PesterParams_ImportPath/ImportExample_telephonyAttributes.csv" -Force $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_telephonyAttributes.csv" -force $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_telephonyAttributes.csv" @@ -361,13 +33,32 @@ Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 1.8.0" { } } - It "Removes users Where-Object Email -like *pleasedelete* " { - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force - } - It "Imports users from a CSV populated with information attributes" { - + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @( + @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testimportcsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user1RandomString)" + "preferredName" = "$($user1RandomString)" + "jobTitle" = "$($user1RandomString)" + "employeeIdentifier" = "eid$($user1RandomString)" + "alternateEmail" = "deleteme$($user1RandomString)ae@testimportcsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user1RandomString)maid@testimportcsvuser.com" + "department" = "$($user1RandomString)" + "costCenter" = "$($user1RandomString)" + "company" = "$($user1RandomString)" + "employeeType" = "$($user1RandomString)" + "description" = "$($user1RandomString)" + "location" = "$($user1RandomString)" + } + ) + $CSVDATA | Export-Csv "$PesterParams_ImportPath/ImportExample_userInformationAttributes.csv" -Force $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_userInformationAttributes.csv" -force $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_userInformationAttributes.csv" @@ -387,13 +78,32 @@ Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 1.8.0" { $ImportCheck.location | Should -Be $NewUserInfo.location } - - - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force - } It "Imports users from a CSV populated with user location attributes" { + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @( + @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testimportcsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "home_streetAddress" = "$($user1RandomString)" + "home_poBox" = "$($user1RandomString)" + "home_city" = "$($user1RandomString)" + "home_state" = "$($user1RandomString)" + "home_postalCode" = "$($user1RandomString)" + "home_country" = "$($user1RandomString)" + "work_streetAddress" = "$($user1RandomString)" + "work_poBox" = "$($user1RandomString)" + "work_city" = "$($user1RandomString)" + "work_state" = "$($user1RandomString)" + "work_postalCode" = "$($user1RandomString)" + "work_country" = "$($user1RandomString)" + } + ) + $CSVDATA | Export-Csv "$PesterParams_ImportPath/ImportExample_userLocationAttributes.csv" -Force $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_userLocationAttributes.csv" -force $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_userLocationAttributes.csv" @@ -416,11 +126,22 @@ Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 1.8.0" { $ImportCheck.work_country | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty country) } - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force } It "Imports users from a CSV populated with uid/ gid attributes" { - $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_uid_guid.csv" -force - $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_uid_guid.csv" + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testimportcsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "unix_guid" = "9837" + "unix_uid" = "9837" + } + $CSVDATA | Export-Csv "$PesterParams_ImportPath/ImportExample_uid_guid_import.csv" -Force + + $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_uid_guid_import.csv" -force + $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_uid_guid_import.csv" foreach ($User in $UserCSVImport) { $NewUserInfo = Get-JCUser -username $User.username @@ -429,10 +150,88 @@ Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 1.8.0" { $ImportCheck.unix_uid | Should -Be $($NewUserInfo.unix_uid) $ImportCheck.unix_guid | Should -Be $($NewUserInfo.unix_guid) } - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force } It "Imports users from a CSV populated with telephony, location, and user information attributes" { + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $user2RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @( + @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testimportcsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user1RandomString)" + "preferredName" = "$($user1RandomString)" + "jobTitle" = "$($user1RandomString)" + "employeeIdentifier" = "eid$($user1RandomString)" + "alternateEmail" = "deleteme$($user1RandomString)ae@testimportcsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user1RandomString)maid@testimportcsvuser.com" + "department" = "$($user1RandomString)" + "costCenter" = "$($user1RandomString)" + "company" = "$($user1RandomString)" + "employeeType" = "$($user1RandomString)" + "description" = "$($user1RandomString)" + "location" = "$($user1RandomString)" + "home_streetAddress" = "$($user1RandomString)" + "home_poBox" = "$($user1RandomString)" + "home_city" = "$($user1RandomString)" + "home_state" = "$($user1RandomString)" + "home_postalCode" = "$($user1RandomString)" + "home_country" = "$($user1RandomString)" + "work_streetAddress" = "$($user1RandomString)" + "work_poBox" = "$($user1RandomString)" + "work_city" = "$($user1RandomString)" + "work_state" = "$($user1RandomString)" + "work_postalCode" = "$($user1RandomString)" + "work_country" = "$($user1RandomString)" + "mobile_number" = "$($user1RandomString)" + "home_number" = "$($user1RandomString)" + "work_number" = "$($user1RandomString)" + "work_mobile_number" = "$($user1RandomString)" + "work_fax_number" = "$($user1RandomString)" + }, + @{ + "FirstName" = "delete$($user2RandomString)" + "LastName" = "me$($user2RandomString)" + "Username" = "delete.me$($user2RandomString)" + "Email" = "deleteme$($user2RandomString)@testimportcsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user2RandomString)" + "preferredName" = "$($user2RandomString)" + "jobTitle" = "$($user2RandomString)" + "employeeIdentifier" = "eid$($user2RandomString)" + "alternateEmail" = "deleteme$($user2RandomString)ae@testimportcsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user2RandomString)maid@testimportcsvuser.com" + "department" = "$($user2RandomString)" + "costCenter" = "$($user2RandomString)" + "company" = "$($user2RandomString)" + "employeeType" = "$($user2RandomString)" + "description" = "$($user2RandomString)" + "location" = "$($user2RandomString)" + "home_streetAddress" = "$($user2RandomString)" + "home_poBox" = "$($user2RandomString)" + "home_city" = "$($user2RandomString)" + "home_state" = "$($user2RandomString)" + "home_postalCode" = "$($user2RandomString)" + "home_country" = "$($user2RandomString)" + "work_streetAddress" = "$($user2RandomString)" + "work_poBox" = "$($user2RandomString)" + "work_city" = "$($user2RandomString)" + "work_state" = "$($user2RandomString)" + "work_postalCode" = "$($user2RandomString)" + "work_country" = "$($user2RandomString)" + "mobile_number" = "$($user2RandomString)" + "home_number" = "$($user2RandomString)" + "work_number" = "$($user2RandomString)" + "work_mobile_number" = "$($user2RandomString)" + "work_fax_number" = "$($user2RandomString)" + } + ) + $CSVDATA | Export-Csv "$PesterParams_ImportPath/ImportExample_allNewAttributes.csv" -Force $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_allNewAttributes.csv" -force $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_allNewAttributes.csv" @@ -473,14 +272,109 @@ Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 1.8.0" { $ImportCheck.work_country | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty country) } - - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force } It "Imports users from a CSV populated with telephony, location, user information attributes, group additions, system binding, and custom attributes" { + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $user2RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @( + @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testimportcsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user1RandomString)" + "preferredName" = "$($user1RandomString)" + "jobTitle" = "$($user1RandomString)" + "employeeIdentifier" = "eid$($user1RandomString)" + "alternateEmail" = "deleteme$($user1RandomString)ae@testimportcsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user1RandomString)maid@testimportcsvuser.com" + "department" = "$($user1RandomString)" + "costCenter" = "$($user1RandomString)" + "company" = "$($user1RandomString)" + "employeeType" = "$($user1RandomString)" + "description" = "$($user1RandomString)" + "location" = "$($user1RandomString)" + "home_streetAddress" = "$($user1RandomString)" + "home_poBox" = "$($user1RandomString)" + "home_city" = "$($user1RandomString)" + "home_state" = "$($user1RandomString)" + "home_postalCode" = "$($user1RandomString)" + "home_country" = "$($user1RandomString)" + "work_streetAddress" = "$($user1RandomString)" + "work_poBox" = "$($user1RandomString)" + "work_city" = "$($user1RandomString)" + "work_state" = "$($user1RandomString)" + "work_postalCode" = "$($user1RandomString)" + "work_country" = "$($user1RandomString)" + "mobile_number" = "$($user1RandomString)" + "home_number" = "$($user1RandomString)" + "work_number" = "$($user1RandomString)" + "work_mobile_number" = "$($user1RandomString)" + "work_fax_number" = "$($user1RandomString)" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "attr1" + "Attribute1_value" = "one" + "Attribute2_name" = "attr2" + "Attribute2_value" = "two" + }, + @{ + "FirstName" = "delete$($user2RandomString)" + "LastName" = "me$($user2RandomString)" + "Username" = "delete.me$($user2RandomString)" + "Email" = "deleteme$($user2RandomString)@testimportcsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user2RandomString)" + "preferredName" = "$($user2RandomString)" + "jobTitle" = "$($user2RandomString)" + "employeeIdentifier" = "eid$($user2RandomString)" + "alternateEmail" = "deleteme$($user2RandomString)ae@testimportcsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user2RandomString)maid@testimportcsvuser.com" + "department" = "$($user2RandomString)" + "costCenter" = "$($user2RandomString)" + "company" = "$($user2RandomString)" + "employeeType" = "$($user2RandomString)" + "description" = "$($user2RandomString)" + "location" = "$($user2RandomString)" + "home_streetAddress" = "$($user2RandomString)" + "home_poBox" = "$($user2RandomString)" + "home_city" = "$($user2RandomString)" + "home_state" = "$($user2RandomString)" + "home_postalCode" = "$($user2RandomString)" + "home_country" = "$($user2RandomString)" + "work_streetAddress" = "$($user2RandomString)" + "work_poBox" = "$($user2RandomString)" + "work_city" = "$($user2RandomString)" + "work_state" = "$($user2RandomString)" + "work_postalCode" = "$($user2RandomString)" + "work_country" = "$($user2RandomString)" + "mobile_number" = "$($user2RandomString)" + "home_number" = "$($user2RandomString)" + "work_number" = "$($user2RandomString)" + "work_mobile_number" = "$($user2RandomString)" + "work_fax_number" = "$($user2RandomString)" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "attr1" + "Attribute1_value" = "one" + "Attribute2_name" = "attr2" + "Attribute2_value" = "two" + } + ) + $CSVDATA | Export-Csv "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom_import.csv" -Force - $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom.csv" - $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom.csv" -force + $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom_import.csv" + $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom_import.csv" -force foreach ($User in $UserCSVImport) { $NewUserInfo = Get-JCUser -username $User.username @@ -525,23 +419,30 @@ Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 1.8.0" { # $UserCSVImport | Where-Object Username -eq "$($User.username)" | Select-Object -ExpandProperty systemAdd | Should -Be "Added" # $UserCSVImport | Where-Object Username -eq "$($User.username)" | Select-Object -ExpandProperty GroupsAdd | Select-Object Status -Unique | Select-Object -ExpandProperty Status | Should -Be "Added" } - - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force - } It "Imports a new user from a CSV with a null custom attribute should throw" { + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testimportcsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "Attribute1_name" = "9837" + "Attribute1_value" = "" + } + $CSVDATA | Export-Csv "$PesterParams_ImportPath/ImportExample_missingAttribute.csv" -Force + $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_missingAttribute.csv" { Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_missingAttribute.csv" -force } | Should -Throw - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force - } } Describe -Tag:('JCUsersFromCSV') 'MFA Import Tests' { It "New User Created with MFA Required" { # Setup Test - $user = New-RandomUser -Domain pleasedelete + $user = New-RandomUser -Domain "ImportCSVUser.$(New-RandomString -NumberOfChars 5)" $CSVDATA = @{ Username = $user.username LastName = $user.LastName @@ -560,7 +461,7 @@ Describe -Tag:('JCUsersFromCSV') 'MFA Import Tests' { } It "New User Created with MFA Required and Enrollment Period Specified" { # Setup Test - $user = New-RandomUser -Domain pleasedelete + $user = New-RandomUser -Domain "ImportCSVUser.$(New-RandomString -NumberOfChars 5)" $today = Get-Date $EnrollmentDays = 14 $CSVDATA = @{ @@ -584,7 +485,7 @@ Describe -Tag:('JCUsersFromCSV') 'MFA Import Tests' { $MFAUser.mfa.configured | Should -Be $false } It "Throw error if user create with invalid enrollment days" { - $user = New-RandomUser -Domain pleasedelete + $user = New-RandomUser -Domain "ImportCSVUser.$(New-RandomString -NumberOfChars 5)" $CSVDATA = @{ Username = $user.username LastName = $user.LastName @@ -599,13 +500,13 @@ Describe -Tag:('JCUsersFromCSV') 'MFA Import Tests' { $ImportStatus.Status | Should -Match "Cannot bind parameter" } AfterAll { - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force + Get-JCUser | Where-Object Email -like *ImportCSVUser.* | Remove-JCUser -force } } Describe -Tag:('JCUsersFromCSV') 'LDAP Import Tests' { It "New User Created and bound to LDAP server" { $ldapServer = Get-JcSdkLdapServer - $user = New-RandomUser -Domain pleasedelete + $user = New-RandomUser -Domain "ImportCSVUser.$(New-RandomString -NumberOfChars 5)" $CSVDATA = @{ Username = $user.username LastName = $user.LastName @@ -624,7 +525,7 @@ Describe -Tag:('JCUsersFromCSV') 'LDAP Import Tests' { } It "New User created, bound to LDAP server and set as an Ldap Binding User" { $ldapServer = Get-JcSdkLdapServer - $user = New-RandomUser -Domain pleasedelete + $user = New-RandomUser -Domain "ImportCSVUser.$(New-RandomString -NumberOfChars 5)" $CSVDATA = @{ Username = $user.username LastName = $user.LastName @@ -643,7 +544,7 @@ Describe -Tag:('JCUsersFromCSV') 'LDAP Import Tests' { } It "throw error with invalid params on ldap import" { $ldapServer = Get-JcSdkLdapServer - $user = New-RandomUser -Domain pleasedelete + $user = New-RandomUser -Domain "ImportCSVUser.$(New-RandomString -NumberOfChars 5)" $CSVDATA = @{ Username = $user.username LastName = $user.LastName @@ -666,7 +567,7 @@ Describe -Tag:('JCUsersFromCSV') 'LDAP Import Tests' { Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 2.5.1" { Context "Custom Attribute API error should be returned" { It "When a custom attribute name has a space in the field, the API should return an error message in the status field" { - $user = New-RandomUser -Domain pleasedelete + $user = New-RandomUser -Domain "ImportCSVUser.$(New-RandomString -NumberOfChars 5)" $today = Get-Date $EnrollmentDays = 14 $CSVDATA = @{ @@ -682,7 +583,7 @@ Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 2.5.1" { $importResults[0].AdditionalInfo | Should -Match "Attribute names may not contain spaces" } It "When a custom attribute name has a non-alphanumeric in the field, the API should return an error message in the status field" { - $user = New-RandomUser -Domain pleasedelete + $user = New-RandomUser -Domain "ImportCSVUser.$(New-RandomString -NumberOfChars 5)" $today = Get-Date $EnrollmentDays = 14 $CSVDATA = @{ @@ -701,5 +602,5 @@ Describe -Tag:('JCUsersFromCSV') "Import-JCUsersFromCSV 2.5.1" { } AfterAll { - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force + Get-JCUser | Where-Object Email -like *testimportcsvuser* | Remove-JCUser -force } \ No newline at end of file diff --git a/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Update-JCMSPFromCSV.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Update-JCMSPFromCSV.Tests.ps1 index d40ef04b0..dfda30620 100644 --- a/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Update-JCMSPFromCSV.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Update-JCMSPFromCSV.Tests.ps1 @@ -4,9 +4,9 @@ Describe -Tag:('MSP') 'Update-JCMSPFromCSV' { # Validate MSP Test org is set to default: $updatedOrgName = 'Updated PesterMSP' $defaultOrgName = 'PesterMSP' - $org = Get-JCSdkOrganization -id $env:PESTER_ORGID + $org = Get-JCSdkOrganization -id $env:JCOrgId if (($org.Settings.Name -ne $defaultOrgName) -And ($org.Settings.Name -eq $updatedOrgName)) { - Set-JcSdkOrganization -Id $env:PESTER_ORGID -Settings @{Name = $defaultOrgName } + Set-JcSdkOrganization -Id $env:JCOrgId -Settings @{Name = $defaultOrgName } Write-Host "resetting org name" } } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Update-JCUsersFromCSV.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Update-JCUsersFromCSV.Tests.ps1 index fdb484caa..b7c68f44e 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Update-JCUsersFromCSV.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Utilities/CSV_Import/Update-JCUsersFromCSV.Tests.ps1 @@ -1,135 +1,170 @@ Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 1.8.0" { BeforeAll { } - It "Updates users from a CSV populated with telephony attributes" { - - $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_telephonyAttributes.csv" -force - $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_telephonyAttributes.csv" - - foreach ($User in $UserCSVImport) { - $NewUserInfo = Get-JCUser -username $User.username - $ImportCheck = $UserImportInfo | Where-Object Username -EQ "$($User.username)" - - $ImportCheck.mobile_number | Should -Be $($NewUserInfo.phoneNumbers | Where-Object type -eq mobile | Select-Object -ExpandProperty number) - $ImportCheck.home_number | Should -Be $($NewUserInfo.phoneNumbers | Where-Object type -eq home | Select-Object -ExpandProperty number) - $ImportCheck.work_number | Should -Be $($NewUserInfo.phoneNumbers | Where-Object type -eq work | Select-Object -ExpandProperty number) - $ImportCheck.work_mobile_number | Should -Be $($NewUserInfo.phoneNumbers | Where-Object type -eq work_mobile | Select-Object -ExpandProperty number) - $ImportCheck.work_fax_number | Should -Be $($NewUserInfo.phoneNumbers | Where-Object type -eq work_fax | Select-Object -ExpandProperty number) - } - - $UserUpdateCSVImport = Update-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateExample_telephonyAttributes.csv" -force - $UserUpdateInfo = Import-Csv "$PesterParams_UpdatePath/UpdateExample_telephonyAttributes.csv" - - foreach ($UpdateUser in $UserUpdateCSVImport) { - $UpdateUserInfo = Get-JCUser -username $UpdateUser.username - $UpdateCheck = $UserUpdateInfo | Where-Object Username -EQ "$($UpdateUser.username)" - - $UpdateCheck.mobile_number | Should -Be $($UpdateUserInfo.phoneNumbers | Where-Object type -eq mobile | Select-Object -ExpandProperty number) - $UpdateCheck.home_number | Should -Be $($UpdateUserInfo.phoneNumbers | Where-Object type -eq home | Select-Object -ExpandProperty number) - $UpdateCheck.work_number | Should -Be $($UpdateUserInfo.phoneNumbers | Where-Object type -eq work | Select-Object -ExpandProperty number) - $UpdateCheck.work_mobile_number | Should -Be $($UpdateUserInfo.phoneNumbers | Where-Object type -eq work_mobile | Select-Object -ExpandProperty number) - $UpdateCheck.work_fax_number | Should -Be $($UpdateUserInfo.phoneNumbers | Where-Object type -eq work_fax | Select-Object -ExpandProperty number) - } - } - - - It "Updates users from a CSV populated with information attributes" { - - $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_userInformationAttributes.csv" -force - $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_userInformationAttributes.csv" - - foreach ($User in $UserCSVImport) { - $NewUserInfo = Get-JCUser -username $User.username - $ImportCheck = $UserImportInfo | Where-Object Username -EQ "$($User.username)" - - $ImportCheck.MiddleName | Should -Be $NewUserInfo.middleName - $ImportCheck.preferredName | Should -Be $NewUserInfo.displayname - $ImportCheck.jobTitle | Should -Be $NewUserInfo.jobTitle - $ImportCheck.employeeIdentifier | Should -Be $NewUserInfo.employeeIdentifier - $ImportCheck.department | Should -Be $NewUserInfo.department - $ImportCheck.costCenter | Should -Be $NewUserInfo.costCenter - $ImportCheck.company | Should -Be $NewUserInfo.company - $ImportCheck.employeeType | Should -Be $NewUserInfo.employeeType - $ImportCheck.decription | Should -Be $NewUserInfo.decription - $ImportCheck.location | Should -Be $NewUserInfo.location - - } - - $UserUpdateCSVImport = Update-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateExample_userInformationAttributes.csv" -force - $UserUpdateInfo = Import-Csv "$PesterParams_UpdatePath/UpdateExample_userInformationAttributes.csv" - - foreach ($UpdateUser in $UserUpdateCSVImport) { - $UpdateUserInfo = Get-JCUser -username $UpdateUser.username - $UpdateCheck = $UserUpdateInfo | Where-Object Username -EQ "$($UpdateUser.username)" - - $UpdateCheck.MiddleName | Should -Be $UpdateUserInfo.middleName - $UpdateCheck.preferredName | Should -Be $UpdateUserInfo.displayname - $UpdateCheck.jobTitle | Should -Be $UpdateUserInfo.jobTitle - $UpdateCheck.employeeIdentifier | Should -Be $UpdateUserInfo.employeeIdentifier - $UpdateCheck.department | Should -Be $UpdateUserInfo.department - $UpdateCheck.costCenter | Should -Be $UpdateUserInfo.costCenter - $UpdateCheck.company | Should -Be $UpdateUserInfo.company - $UpdateCheck.employeeType | Should -Be $UpdateUserInfo.employeeType - $UpdateCheck.decription | Should -Be $UpdateUserInfo.decription - $UpdateCheck.location | Should -Be $UpdateUserInfo.location - - } - } - - - It "Updates users from a CSV populated with user location attributes" { - $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_userLocationAttributes.csv" -force - $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_userLocationAttributes.csv" - - foreach ($User in $UserCSVImport) { - $NewUserInfo = Get-JCUser -username $User.username - $ImportCheck = $UserImportInfo | Where-Object Username -EQ "$($User.username)" - - $ImportCheck.home_streetAddress | Should -Be $($NewUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty streetAddress) - $ImportCheck.home_poBox | Should -Be $($NewUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty poBox) - $ImportCheck.home_city | Should -Be $($NewUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty locality) - $ImportCheck.home_state | Should -Be $($NewUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty region) - $ImportCheck.home_postalCode | Should -Be $($NewUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty postalCode) - $ImportCheck.home_country | Should -Be $($NewUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty country) - - $ImportCheck.work_streetAddress | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty streetAddress) - $ImportCheck.work_poBox | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty poBox) - $ImportCheck.work_city | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty locality) - $ImportCheck.work_state | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty region) - $ImportCheck.work_postalCode | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty postalCode) - $ImportCheck.work_country | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty country) - - } - - $UserUpdateCSVImport = Update-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateExample_userLocationAttributes.csv" -force - $UserUpdateInfo = Import-Csv "$PesterParams_UpdatePath/UpdateExample_userLocationAttributes.csv" - - foreach ($UpdateUser in $UserCSVUpdate) { - $UpdateUserInfo = Get-JCUser -username $UpdateUser.username - $UpdateCheck = $UserUpdateInfo | Where-Object Username -EQ "$($UpdateUser.username)" - - $UpdateCheck.home_streetAddress | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty streetAddress) - $UpdateCheck.home_poBox | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty poBox) - $UpdateCheck.home_city | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty locality) - $UpdateCheck.home_state | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty region) - $UpdateCheck.home_postalCode | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty postalCode) - $UpdateCheck.home_country | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq home | Select-Object -ExpandProperty country) - - $UpdateCheck.work_streetAddress | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty streetAddress) - $UpdateCheck.work_poBox | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty poBox) - $UpdateCheck.work_city | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty locality) - $UpdateCheck.work_state | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty region) - $UpdateCheck.work_postalCode | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty postalCode) - $UpdateCheck.work_country | Should -Be $($UpdateUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty country) - - } - - } - - It "Updates users from a CSV populated with user telephony, information, and location attributes" { - - $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_allNewAttributes.csv" -force - $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_allNewAttributes.csv" + It "Updates users from a CSV populated with all information" { + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $user2RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @( + @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user1RandomString)" + "preferredName" = "$($user1RandomString)" + "jobTitle" = "$($user1RandomString)" + "employeeIdentifier" = "eid$($user1RandomString)" + "alternateEmail" = "deleteme$($user1RandomString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user1RandomString)maid@testupdatecsvuser.com" + "department" = "$($user1RandomString)" + "costCenter" = "$($user1RandomString)" + "company" = "$($user1RandomString)" + "employeeType" = "$($user1RandomString)" + "description" = "$($user1RandomString)" + "location" = "$($user1RandomString)" + "home_streetAddress" = "$($user1RandomString)" + "home_poBox" = "$($user1RandomString)" + "home_city" = "$($user1RandomString)" + "home_state" = "$($user1RandomString)" + "home_postalCode" = "$($user1RandomString)" + "home_country" = "$($user1RandomString)" + "work_streetAddress" = "$($user1RandomString)" + "work_poBox" = "$($user1RandomString)" + "work_city" = "$($user1RandomString)" + "work_state" = "$($user1RandomString)" + "work_postalCode" = "$($user1RandomString)" + "work_country" = "$($user1RandomString)" + "mobile_number" = "$($user1RandomString)" + "home_number" = "$($user1RandomString)" + "work_number" = "$($user1RandomString)" + "work_mobile_number" = "$($user1RandomString)" + "work_fax_number" = "$($user1RandomString)" + }, + @{ + "FirstName" = "delete$($user2RandomString)" + "LastName" = "me$($user2RandomString)" + "Username" = "delete.me$($user2RandomString)" + "Email" = "deleteme$($user2RandomString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user2RandomString)" + "preferredName" = "$($user2RandomString)" + "jobTitle" = "$($user2RandomString)" + "employeeIdentifier" = "eid$($user2RandomString)" + "alternateEmail" = "deleteme$($user2RandomString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user2RandomString)maid@testupdatecsvuser.com" + "department" = "$($user2RandomString)" + "costCenter" = "$($user2RandomString)" + "company" = "$($user2RandomString)" + "employeeType" = "$($user2RandomString)" + "description" = "$($user2RandomString)" + "location" = "$($user2RandomString)" + "home_streetAddress" = "$($user2RandomString)" + "home_poBox" = "$($user2RandomString)" + "home_city" = "$($user2RandomString)" + "home_state" = "$($user2RandomString)" + "home_postalCode" = "$($user2RandomString)" + "home_country" = "$($user2RandomString)" + "work_streetAddress" = "$($user2RandomString)" + "work_poBox" = "$($user2RandomString)" + "work_city" = "$($user2RandomString)" + "work_state" = "$($user2RandomString)" + "work_postalCode" = "$($user2RandomString)" + "work_country" = "$($user2RandomString)" + "mobile_number" = "$($user2RandomString)" + "home_number" = "$($user2RandomString)" + "work_number" = "$($user2RandomString)" + "work_mobile_number" = "$($user2RandomString)" + "work_fax_number" = "$($user2RandomString)" + } + ) + $user1RandomUpdateString = $(New-RandomString -NumberOfChars 5) + $user2RandomUpdateString = $(New-RandomString -NumberOfChars 5) + $CSVUpdateData = @( + @{ + "FirstName" = "delete$($user1RandomUpdateString)" + "LastName" = "me$($user1RandomUpdateString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomUpdateString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user1RandomUpdateString)" + "preferredName" = "$($user1RandomUpdateString)" + "jobTitle" = "$($user1RandomUpdateString)" + "employeeIdentifier" = "eid$($user1RandomUpdateString)" + "alternateEmail" = "deleteme$($user1RandomUpdateString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user1RandomUpdateString)maid@testupdatecsvuser.com" + "department" = "$($user1RandomUpdateString)" + "costCenter" = "$($user1RandomUpdateString)" + "company" = "$($user1RandomUpdateString)" + "employeeType" = "$($user1RandomUpdateString)" + "description" = "$($user1RandomUpdateString)" + "location" = "$($user1RandomUpdateString)" + "home_streetAddress" = "$($user1RandomUpdateString)" + "home_poBox" = "$($user1RandomUpdateString)" + "home_city" = "$($user1RandomUpdateString)" + "home_state" = "$($user1RandomUpdateString)" + "home_postalCode" = "$($user1RandomUpdateString)" + "home_country" = "$($user1RandomUpdateString)" + "work_streetAddress" = "$($user1RandomUpdateString)" + "work_poBox" = "$($user1RandomUpdateString)" + "work_city" = "$($user1RandomUpdateString)" + "work_state" = "$($user1RandomUpdateString)" + "work_postalCode" = "$($user1RandomUpdateString)" + "work_country" = "$($user1RandomUpdateString)" + "mobile_number" = "$($user1RandomUpdateString)" + "home_number" = "$($user1RandomUpdateString)" + "work_number" = "$($user1RandomUpdateString)" + "work_mobile_number" = "$($user1RandomUpdateString)" + "work_fax_number" = "$($user1RandomUpdateString)" + }, + @{ + "FirstName" = "delete$($user2RandomUpdateString)" + "LastName" = "me$($user2RandomUpdateString)" + "Username" = "delete.me$($user2RandomString)" + "Email" = "deleteme$($user2RandomUpdateString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user2RandomUpdateString)" + "preferredName" = "$($user2RandomUpdateString)" + "jobTitle" = "$($user2RandomUpdateString)" + "employeeIdentifier" = "eid$($user2RandomUpdateString)" + "alternateEmail" = "deleteme$($user2RandomUpdateString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user2RandomUpdateString)maid@testupdatecsvuser.com" + "department" = "$($user2RandomUpdateString)" + "costCenter" = "$($user2RandomUpdateString)" + "company" = "$($user2RandomUpdateString)" + "employeeType" = "$($user2RandomUpdateString)" + "description" = "$($user2RandomUpdateString)" + "location" = "$($user2RandomUpdateString)" + "home_streetAddress" = "$($user2RandomUpdateString)" + "home_poBox" = "$($user2RandomUpdateString)" + "home_city" = "$($user2RandomUpdateString)" + "home_state" = "$($user2RandomUpdateString)" + "home_postalCode" = "$($user2RandomUpdateString)" + "home_country" = "$($user2RandomUpdateString)" + "work_streetAddress" = "$($user2RandomUpdateString)" + "work_poBox" = "$($user2RandomUpdateString)" + "work_city" = "$($user2RandomUpdateString)" + "work_state" = "$($user2RandomUpdateString)" + "work_postalCode" = "$($user2RandomUpdateString)" + "work_country" = "$($user2RandomUpdateString)" + "mobile_number" = "$($user2RandomUpdateString)" + "home_number" = "$($user2RandomUpdateString)" + "work_number" = "$($user2RandomUpdateString)" + "work_mobile_number" = "$($user2RandomUpdateString)" + "work_fax_number" = "$($user2RandomUpdateString)" + } + ) + # export the files + $CSVDATA | Export-Csv "$PesterParams_ImportPath/UpdateWithInfoNoAttributeTest.csv" -Force + $CSVUpdateData | Export-Csv "$PesterParams_UpdatePath/UpdateWithInfoNoAttributeNewTest.csv" -Force + # import the users + $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/UpdateWithInfoNoAttributeTest.csv" -force + $UserImportInfo = Import-Csv "$PesterParams_ImportPath/UpdateWithInfoNoAttributeTest.csv" + # test import foreach ($User in $UserCSVImport) { $NewUserInfo = Get-JCUser -username $User.username $ImportCheck = $UserImportInfo | Where-Object Username -EQ "$($User.username)" @@ -166,10 +201,10 @@ Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 1.8.0" { $ImportCheck.work_country | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty country) } - - $UserUpdateCSVImport = Update-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateExample_AllNewAttributes.csv" -force - $UserUpdateInfo = Import-Csv "$PesterParams_UpdatePath/UpdateExample_AllNewAttributes.csv" - + # update the users + $UserUpdateCSVImport = Update-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateWithInfoNoAttributeNewTest.csv" -force + $UserUpdateInfo = Import-Csv "$PesterParams_UpdatePath/UpdateWithInfoNoAttributeNewTest.csv" + # test the upadate foreach ($UpdateUser in $UserUpdateCSVImport) { $UpdateUserInfo = Get-JCUser -username $UpdateUser.username @@ -209,7 +244,200 @@ Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 1.8.0" { } It "Updates users from a CSV populated with user telephony, information, and location attributes and custom attributes" { - + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $user2RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @( + @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user1RandomString)" + "preferredName" = "$($user1RandomString)" + "jobTitle" = "$($user1RandomString)" + "employeeIdentifier" = "eid$($user1RandomString)" + "alternateEmail" = "deleteme$($user1RandomString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user1RandomString)maid@testupdatecsvuser.com" + "department" = "$($user1RandomString)" + "costCenter" = "$($user1RandomString)" + "company" = "$($user1RandomString)" + "employeeType" = "$($user1RandomString)" + "description" = "$($user1RandomString)" + "location" = "$($user1RandomString)" + "home_streetAddress" = "$($user1RandomString)" + "home_poBox" = "$($user1RandomString)" + "home_city" = "$($user1RandomString)" + "home_state" = "$($user1RandomString)" + "home_postalCode" = "$($user1RandomString)" + "home_country" = "$($user1RandomString)" + "work_streetAddress" = "$($user1RandomString)" + "work_poBox" = "$($user1RandomString)" + "work_city" = "$($user1RandomString)" + "work_state" = "$($user1RandomString)" + "work_postalCode" = "$($user1RandomString)" + "work_country" = "$($user1RandomString)" + "mobile_number" = "$($user1RandomString)" + "home_number" = "$($user1RandomString)" + "work_number" = "$($user1RandomString)" + "work_mobile_number" = "$($user1RandomString)" + "work_fax_number" = "$($user1RandomString)" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "attr1" + "Attribute1_value" = "one" + "Attribute2_name" = "attr2" + "Attribute2_value" = "two" + }, + @{ + "FirstName" = "delete$($user2RandomString)" + "LastName" = "me$($user2RandomString)" + "Username" = "delete.me$($user2RandomString)" + "Email" = "deleteme$($user2RandomString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user2RandomString)" + "preferredName" = "$($user2RandomString)" + "jobTitle" = "$($user2RandomString)" + "employeeIdentifier" = "eid$($user2RandomString)" + "alternateEmail" = "deleteme$($user2RandomString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user2RandomString)maid@testupdatecsvuser.com" + "department" = "$($user2RandomString)" + "costCenter" = "$($user2RandomString)" + "company" = "$($user2RandomString)" + "employeeType" = "$($user2RandomString)" + "description" = "$($user2RandomString)" + "location" = "$($user2RandomString)" + "home_streetAddress" = "$($user2RandomString)" + "home_poBox" = "$($user2RandomString)" + "home_city" = "$($user2RandomString)" + "home_state" = "$($user2RandomString)" + "home_postalCode" = "$($user2RandomString)" + "home_country" = "$($user2RandomString)" + "work_streetAddress" = "$($user2RandomString)" + "work_poBox" = "$($user2RandomString)" + "work_city" = "$($user2RandomString)" + "work_state" = "$($user2RandomString)" + "work_postalCode" = "$($user2RandomString)" + "work_country" = "$($user2RandomString)" + "mobile_number" = "$($user2RandomString)" + "home_number" = "$($user2RandomString)" + "work_number" = "$($user2RandomString)" + "work_mobile_number" = "$($user2RandomString)" + "work_fax_number" = "$($user2RandomString)" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "attr1" + "Attribute1_value" = "one" + "Attribute2_name" = "attr2" + "Attribute2_value" = "two" + } + ) + $user1RandomUpdateString = $(New-RandomString -NumberOfChars 5) + $user2RandomUpdateString = $(New-RandomString -NumberOfChars 5) + $CSVDataNoInfo = @( + @{ + "FirstName" = "delete$($user1RandomUpdateString)" + "LastName" = "me$($user1RandomUpdateString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomUpdateString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user1RandomUpdateString)" + "preferredName" = "$($user1RandomUpdateString)" + "jobTitle" = "$($user1RandomUpdateString)" + "employeeIdentifier" = "eid$($user1RandomUpdateString)" + "alternateEmail" = "deleteme$($user1RandomUpdateString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user1RandomUpdateString)maid@testupdatecsvuser.com" + "department" = "$($user1RandomUpdateString)" + "costCenter" = "$($user1RandomUpdateString)" + "company" = "$($user1RandomUpdateString)" + "employeeType" = "$($user1RandomUpdateString)" + "description" = "$($user1RandomUpdateString)" + "location" = "$($user1RandomUpdateString)" + "home_streetAddress" = "$($user1RandomUpdateString)" + "home_poBox" = "$($user1RandomUpdateString)" + "home_city" = "$($user1RandomUpdateString)" + "home_state" = "$($user1RandomUpdateString)" + "home_postalCode" = "$($user1RandomUpdateString)" + "home_country" = "$($user1RandomUpdateString)" + "work_streetAddress" = "$($user1RandomUpdateString)" + "work_poBox" = "$($user1RandomUpdateString)" + "work_city" = "$($user1RandomUpdateString)" + "work_state" = "$($user1RandomUpdateString)" + "work_postalCode" = "$($user1RandomUpdateString)" + "work_country" = "$($user1RandomUpdateString)" + "mobile_number" = "$($user1RandomUpdateString)" + "home_number" = "$($user1RandomUpdateString)" + "work_number" = "$($user1RandomUpdateString)" + "work_mobile_number" = "$($user1RandomUpdateString)" + "work_fax_number" = "$($user1RandomUpdateString)" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "attr1" + "Attribute1_value" = "newAttr1" + "Attribute2_name" = "attr2" + "Attribute2_value" = "newAttr2" + }, + @{ + "FirstName" = "delete$($user2RandomString)" + "LastName" = "me$($user2RandomString)" + "Username" = "delete.me$($user2RandomString)" + "Email" = "deleteme$($user2RandomString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user2RandomString)" + "preferredName" = "$($user2RandomString)" + "jobTitle" = "$($user2RandomString)" + "employeeIdentifier" = "eid$($user2RandomString)" + "alternateEmail" = "deleteme$($user2RandomString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user2RandomString)maid@testupdatecsvuser.com" + "department" = "$($user2RandomString)" + "costCenter" = "$($user2RandomString)" + "company" = "$($user2RandomString)" + "employeeType" = "$($user2RandomString)" + "description" = "$($user2RandomString)" + "location" = "$($user2RandomString)" + "home_streetAddress" = "$($user2RandomString)" + "home_poBox" = "$($user2RandomString)" + "home_city" = "$($user2RandomString)" + "home_state" = "$($user2RandomString)" + "home_postalCode" = "$($user2RandomString)" + "home_country" = "$($user2RandomString)" + "work_streetAddress" = "$($user2RandomString)" + "work_poBox" = "$($user2RandomString)" + "work_city" = "$($user2RandomString)" + "work_state" = "$($user2RandomString)" + "work_postalCode" = "$($user2RandomString)" + "work_country" = "$($user2RandomString)" + "mobile_number" = "$($user2RandomString)" + "home_number" = "$($user2RandomString)" + "work_number" = "$($user2RandomString)" + "work_mobile_number" = "$($user2RandomString)" + "work_fax_number" = "$($user2RandomString)" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "attr1" + "Attribute1_value" = "brandNew1" + "Attribute2_name" = "attr2" + "Attribute2_value" = "brandNew2" + } + ) + $CSVFILE = $CSVDATA | Export-Csv "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom.csv" -Force + $CSVDataNoInfo | Export-Csv "$PesterParams_UpdatePath/UpdateExample_AllNewAttributesAndAllCustom.csv" -Force $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom.csv" -force $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom.csv" @@ -302,10 +530,30 @@ Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 1.8.0" { } } - It "Removes users Where-Object Email -like *pleasedelete* " { - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force - } It "Updates users from a CSV populated with uid/ gid attributes" { + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $user2RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "unix_guid" = "9837" + "unix_uid" = "9837" + } + $CSVUpdateData = @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "unix_guid" = "9911" + "unix_uid" = "9911" + } + $CSVDATA | Export-Csv "$PesterParams_ImportPath/ImportExample_uid_guid.csv" -Force + $CSVUpdateData | Export-Csv "$PesterParams_UpdatePath/UpdateExample_uid_guid.csv" -Force + $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_uid_guid.csv" -force $UserCSVUpdate = Update-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateExample_uid_guid.csv" -force $UserImportInfo = Import-Csv "$PesterParams_UpdatePath/UpdateExample_uid_guid.csv" @@ -317,13 +565,204 @@ Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 1.8.0" { $ImportCheck.unix_uid | Should -Be $($NewUserInfo.unix_uid) $ImportCheck.unix_guid | Should -Be $($NewUserInfo.unix_guid) } - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force + Get-JCUser | Where-Object Email -like *UpdateCSVUser* | Remove-JCUser -force } It "Updates users from a CSV populated with no information" { - - $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom.csv" -force - $UserImportInfo = Import-Csv "$PesterParams_ImportPath/ImportExample_allNewAttributesAndAllCustom.csv" + $user1RandomString = $(New-RandomString -NumberOfChars 5) + $user2RandomString = $(New-RandomString -NumberOfChars 5) + $CSVData = @( + @{ + "FirstName" = "delete$($user1RandomString)" + "LastName" = "me$($user1RandomString)" + "Username" = "delete.me$($user1RandomString)" + "Email" = "deleteme$($user1RandomString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user1RandomString)" + "preferredName" = "$($user1RandomString)" + "jobTitle" = "$($user1RandomString)" + "employeeIdentifier" = "eid$($user1RandomString)" + "alternateEmail" = "deleteme$($user1RandomString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user1RandomString)maid@testupdatecsvuser.com" + "department" = "$($user1RandomString)" + "costCenter" = "$($user1RandomString)" + "company" = "$($user1RandomString)" + "employeeType" = "$($user1RandomString)" + "description" = "$($user1RandomString)" + "location" = "$($user1RandomString)" + "home_streetAddress" = "$($user1RandomString)" + "home_poBox" = "$($user1RandomString)" + "home_city" = "$($user1RandomString)" + "home_state" = "$($user1RandomString)" + "home_postalCode" = "$($user1RandomString)" + "home_country" = "$($user1RandomString)" + "work_streetAddress" = "$($user1RandomString)" + "work_poBox" = "$($user1RandomString)" + "work_city" = "$($user1RandomString)" + "work_state" = "$($user1RandomString)" + "work_postalCode" = "$($user1RandomString)" + "work_country" = "$($user1RandomString)" + "mobile_number" = "$($user1RandomString)" + "home_number" = "$($user1RandomString)" + "work_number" = "$($user1RandomString)" + "work_mobile_number" = "$($user1RandomString)" + "work_fax_number" = "$($user1RandomString)" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "attr1" + "Attribute1_value" = "one" + "Attribute2_name" = "attr2" + "Attribute2_value" = "two" + }, + @{ + "FirstName" = "delete$($user2RandomString)" + "LastName" = "me$($user2RandomString)" + "Username" = "delete.me$($user2RandomString)" + "Email" = "deleteme$($user2RandomString)@testupdatecsvuser.com" + "Password" = "$(New-RandomString -NumberOfChars 8)@#7Ah" + "MiddleName" = "$($user2RandomString)" + "preferredName" = "$($user2RandomString)" + "jobTitle" = "$($user2RandomString)" + "employeeIdentifier" = "eid$($user2RandomString)" + "alternateEmail" = "deleteme$($user2RandomString)ae@testupdatecsvuser.com" + "manager" = "" + "managedAppleID" = "deleteme$($user2RandomString)maid@testupdatecsvuser.com" + "department" = "$($user2RandomString)" + "costCenter" = "$($user2RandomString)" + "company" = "$($user2RandomString)" + "employeeType" = "$($user2RandomString)" + "description" = "$($user2RandomString)" + "location" = "$($user2RandomString)" + "home_streetAddress" = "$($user2RandomString)" + "home_poBox" = "$($user2RandomString)" + "home_city" = "$($user2RandomString)" + "home_state" = "$($user2RandomString)" + "home_postalCode" = "$($user2RandomString)" + "home_country" = "$($user2RandomString)" + "work_streetAddress" = "$($user2RandomString)" + "work_poBox" = "$($user2RandomString)" + "work_city" = "$($user2RandomString)" + "work_state" = "$($user2RandomString)" + "work_postalCode" = "$($user2RandomString)" + "work_country" = "$($user2RandomString)" + "mobile_number" = "$($user2RandomString)" + "home_number" = "$($user2RandomString)" + "work_number" = "$($user2RandomString)" + "work_mobile_number" = "$($user2RandomString)" + "work_fax_number" = "$($user2RandomString)" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "attr1" + "Attribute1_value" = "one" + "Attribute2_name" = "attr2" + "Attribute2_value" = "two" + } + ) + $CSVDataNoInfo = @( + @{ + "FirstName" = "" + "LastName" = "" + "Username" = "delete.me$($user1RandomString)" + "Email" = "" + "Password" = "" + "MiddleName" = "" + "preferredName" = "" + "jobTitle" = "" + "employeeIdentifier" = "" + "alternateEmail" = "" + "manager" = "" + "managedAppleID" = "" + "department" = "" + "costCenter" = "" + "company" = "" + "employeeType" = "" + "description" = "" + "location" = "" + "home_streetAddress" = "" + "home_poBox" = "" + "home_city" = "" + "home_state" = "" + "home_postalCode" = "" + "home_country" = "" + "work_streetAddress" = "" + "work_poBox" = "" + "work_city" = "" + "work_state" = "" + "work_postalCode" = "" + "work_country" = "" + "mobile_number" = "" + "home_number" = "" + "work_number" = "" + "work_mobile_number" = "" + "work_fax_number" = "" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "" + "Attribute1_value" = "" + "Attribute2_name" = "" + "Attribute2_value" = "" + }, + @{ + "FirstName" = "" + "LastName" = "" + "Username" = "delete.me$($user2RandomString)" + "Email" = "" + "Password" = "" + "MiddleName" = "" + "preferredName" = "" + "jobTitle" = "" + "employeeIdentifier" = "" + "alternateEmail" = "" + "manager" = "" + "managedAppleID" = "" + "department" = "" + "costCenter" = "" + "company" = "" + "employeeType" = "" + "description" = "" + "location" = "" + "home_streetAddress" = "" + "home_poBox" = "" + "home_city" = "" + "home_state" = "" + "home_postalCode" = "" + "home_country" = "" + "work_streetAddress" = "" + "work_poBox" = "" + "work_city" = "" + "work_state" = "" + "work_postalCode" = "" + "work_country" = "" + "mobile_number" = "" + "home_number" = "" + "work_number" = "" + "work_mobile_number" = "" + "work_fax_number" = "" + "SystemID" = "" + "Administrator" = "" + "Group1" = "" + "Group2" = "" + "Group3" = "" + "Attribute1_name" = "" + "Attribute1_value" = "" + "Attribute2_name" = "" + "Attribute2_value" = "" + } + ) + $CSVFILE = $CSVDATA | Export-Csv "$PesterParams_UpdatePath/UpdateWithInfoTest.csv" -Force + $CSVDataNoInfo | Export-Csv "$PesterParams_UpdatePath/UpdateWithNoInfoTest.csv" -Force + $UserCSVImport = Import-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateWithInfoTest.csv" -force + $UserImportInfo = Import-Csv "$PesterParams_UpdatePath/UpdateWithInfoTest.csv" foreach ($User in $UserCSVImport) { $NewUserInfo = Get-JCUser -username $User.username @@ -364,7 +803,7 @@ Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 1.8.0" { $ImportCheck.work_country | Should -Be $($NewUserInfo.addresses | Where-Object type -eq work | Select-Object -ExpandProperty country) } - $UserUpdateCSVImport = Update-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateExample_NoChanges.csv" -force + $UserUpdateCSVImport = Update-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateWithNoInfoTest.csv" -force foreach ($User in $UserCSVImport) { $NewUserInfo = Get-JCUser -username $User.username @@ -414,14 +853,11 @@ Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 1.8.0" { $CSVFILE = $CSVDATA | Export-Csv "$PesterParams_UpdatePath/UpdateExample_missingAttribute.csv" { Update-JCUsersFromCSV -CSVFilePath "$PesterParams_UpdatePath/UpdateExample_missingAttribute.csv" -force } | Should -Throw } - It "Removes users Where-Object Email -like *pleasedelete* " { - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force - } } Describe -Tag:('JCUsersFromCSV') 'MFA Update Tests' { It "User Created/ Updated with Update-JCUserFromCSV with MFA Required" { # Setup Test - $user = New-RandomUser -Domain pleasedelete | New-JCUser + $user = New-RandomUser -Domain "testupdatecsvuser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $CSVDATA = @{ Username = $user.username enable_user_portal_multifactor = $true @@ -440,7 +876,7 @@ Describe -Tag:('JCUsersFromCSV') 'MFA Update Tests' { } It "New User Created with MFA Required and Enrollment Period Specified" { # Setup Test - $user = New-RandomUser -Domain pleasedelete | New-JCUser + $user = New-RandomUser -Domain "testupdatecsvuser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $today = Get-Date $EnrollmentDays = 14 $CSVDATA = @{ @@ -464,7 +900,7 @@ Describe -Tag:('JCUsersFromCSV') 'MFA Update Tests' { $MFAUser.mfa.configured | Should -Be $false } It "Throw error if user updated with invalid enrollment days" { - $user = New-RandomUser -Domain pleasedelete | New-JCUser + $user = New-RandomUser -Domain "testupdatecsvuser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $CSVDATA = @{ Username = $user.username enable_user_portal_multifactor = $true @@ -476,13 +912,13 @@ Describe -Tag:('JCUsersFromCSV') 'MFA Update Tests' { $ImportStatus.Status | Should -Match "Cannot bind parameter" } AfterAll { - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force + Get-JCUser | Where-Object Email -like *UpdateCSVUser* | Remove-JCUser -force } } Describe -Tag:('JCUsersFromCSV') 'LDAP Update Tests' { It "New User updated and bound to LDAP server" { $ldapServer = Get-JcSdkLdapServer - $user = New-RandomUser -Domain pleasedelete | New-JCUser + $user = New-RandomUser -Domain "testupdatecsvuser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $CSVDATA = @{ Username = $user.username ldapserver_id = $ldapServer.id @@ -498,7 +934,7 @@ Describe -Tag:('JCUsersFromCSV') 'LDAP Update Tests' { } It "New User Updated, bound to LDAP server and set as an Ldap Binding User" { $ldapServer = Get-JcSdkLdapServer - $user = New-RandomUser -Domain pleasedelete | New-JCUser + $user = New-RandomUser -Domain "testupdatecsvuser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $CSVDATA = @{ Username = $user.username ldapserver_id = $ldapServer.id @@ -514,7 +950,7 @@ Describe -Tag:('JCUsersFromCSV') 'LDAP Update Tests' { } It "throw error with invalid params on ldap import" { $ldapServer = Get-JcSdkLdapServer - $user = New-RandomUser -Domain pleasedelete | New-JCUser + $user = New-RandomUser -Domain "testupdatecsvuser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $CSVDATA = @{ Username = $user.username ldapserver_id = "$($ldapServer.id)" @@ -534,7 +970,7 @@ Describe -Tag:('JCUsersFromCSV') 'LDAP Update Tests' { Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 2.5.1" { Context "Custom Attribute API error should be returned" { It "When a custom attribute name has a space in the field, the API should return an error message in the status field" { - $user = New-RandomUser -Domain pleasedelete | New-JCUser + $user = New-RandomUser -Domain "testupdatecsvuser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $CSVDATA = @{ Username = $user.username Attribute1_name = "bad value" @@ -547,7 +983,7 @@ Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 2.5.1" { $UpdateStatus[0].status | Should -Not -Match "User does not exist" } It "When a custom attribute name has a non-alphanumeric in the field, the API should return an error message in the status field" { - $user = New-RandomUser -Domain pleasedelete | New-JCUser + $user = New-RandomUser -Domain "testupdatecsvuser.$(New-RandomString -NumberOfChars 5)" | New-JCUser $CSVDATA = @{ Username = $user.username Attribute1_name = "bad.value" @@ -562,5 +998,5 @@ Describe -Tag:('JCUsersFromCSV') "Update-JCUsersFromCSV 2.5.1" { } } AfterAll { - Get-JCUser | Where-Object Email -like *pleasedelete* | Remove-JCUser -force + Get-JCUser | Where-Object Email -like *testupdatecsvuser* | Remove-JCUser -force } diff --git a/PowerShell/JumpCloud Module/Tests/Public/Utilities/Get-JCBackup.Tests.ps1 b/PowerShell/JumpCloud Module/Tests/Public/Utilities/Get-JCBackup.Tests.ps1 index ba12e6100..6f0eb5da6 100755 --- a/PowerShell/JumpCloud Module/Tests/Public/Utilities/Get-JCBackup.Tests.ps1 +++ b/PowerShell/JumpCloud Module/Tests/Public/Utilities/Get-JCBackup.Tests.ps1 @@ -4,8 +4,17 @@ Describe -Tag:('JCBackup') "Get-JCBackup 1.5.0" { If (-not (Get-JCAssociation -Type:('user') -Name:($PesterParams_User1.username) -TargetType:('system') -IncludeNames | Where-Object { $_.TargetName -eq $PesterParams_SystemLinux.displayName })) { Add-JCAssociation -Type:('user') -Name:($PesterParams_User1.username) -TargetType:('system') -TargetName:($PesterParams_SystemLinux.displayName) -Force } - Add-JCUserGroupMember -GroupName $PesterParams_UserGroup.Name -username $PesterParams_User1.Username - Add-JCSystemGroupMember -GroupName $PesterParams_SystemGroup.Name -SystemID $PesterParams_SystemLinux._id + # Create new user and system group + + $BackupTestsUserGroup = New-JCUserGroup -GroupName "backup_usr_$(New-RandomString -NumberOfChars 5)" + $BackupTestsSystemGroup = New-JCSystemGroup -GroupName "backup_sys_$(New-RandomString -NumberOfChars 5)" + Add-JCUserGroupMember -GroupName $BackupTestsUserGroup.Name -username $PesterParams_User1.Username + Add-JCSystemGroupMember -GroupName $BackupTestsSystemGroup.Name -SystemID $PesterParams_SystemLinux._id + } + AfterAll { + # Remove user and system groups + Remove-JCUserGroup -GroupName $BackupTestsUserGroup.Name -force + Remove-JCSystemGroup -GroupName $BackupTestsSystemGroup.Name -force } It "Backs up JumpCloud users" { Get-JCBackup -All diff --git a/PowerShell/JumpCloud Module/Tests/SetupOrg.ps1 b/PowerShell/JumpCloud Module/Tests/SetupOrg.ps1 index ee34322b2..5e72a3aab 100644 --- a/PowerShell/JumpCloud Module/Tests/SetupOrg.ps1 +++ b/PowerShell/JumpCloud Module/Tests/SetupOrg.ps1 @@ -4,6 +4,8 @@ Param( , [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 1)][ValidateNotNullOrEmpty()][System.String]$JumpCloudMspOrg ) Try { + Write-Host "[Status] Run Define Environment" + $envVars = . "$PSScriptRoot/DefineEnvironment.ps1" -JumpCloudApiKey:($JumpCloudApiKey) -JumpCloudApiKeyMsp:($JumpCloudApiKeyMsp) -RequiredModulesRepo:('PSGallery') Write-Host "[Status] Begin SetupOrg" $stopwatch = [system.diagnostics.stopwatch]::StartNew() # Import JC Module @@ -39,12 +41,12 @@ Try { $ExternallyManagedUsersToRemove = Get-JCUser | Where-Object { ($_.Email -like '*delete*' -or $_.Email -like '*pester*') -and $_.externally_managed } $UpdateExternallyManagedUsersToRemove = $ExternallyManagedUsersToRemove | Set-JCUser -externally_managed $false $RemoveExternallyManagedUsers = $ExternallyManagedUsersToRemove | Remove-JCUser -force - write-host "[status] Removed users: $($stopwatch.Elapsed)" + Write-Host "[status] Removed users: $($stopwatch.Elapsed)" } # Remove all systems from an org If ($Systems) { $null = Get-JCSystem | Remove-JCSystem -force - write-host "[status] Removed systems: $($stopwatch.Elapsed)" + Write-Host "[status] Removed systems: $($stopwatch.Elapsed)" } # Remove all groups from an org If ($Groups) { @@ -58,25 +60,25 @@ Try { Remove-JcSdkUserGroup -Id $_.id -ErrorAction Ignore } } - write-host "[status] Removed groups: $($stopwatch.Elapsed)" + Write-Host "[status] Removed groups: $($stopwatch.Elapsed)" } # Remove all Commands from an org If ($Commands) { $null = Get-JCCommand | Remove-JCCommand -force $null = Get-JCCommandResult | Remove-JCCommandResult -force - write-host "[status] Removed commands: $($stopwatch.Elapsed)" + Write-Host "[status] Removed commands: $($stopwatch.Elapsed)" } # Remove all RadiusServers from an org If ($RadiusServers) { $null = Get-JCRadiusServer | Remove-JCRadiusServer -Force - write-host "[status] Removed Radius Servers: $($stopwatch.Elapsed)" + Write-Host "[status] Removed Radius Servers: $($stopwatch.Elapsed)" } if ($Policies) { $allPolicies = Get-JCPolicy foreach ($policy in $allPolicies.id) { $null = Remove-JcSdkPolicy -Id $policy } - write-host "[status] Removed Policies: $($stopwatch.Elapsed)" + Write-Host "[status] Removed Policies: $($stopwatch.Elapsed)" } } Remove-Org -Users -Groups -Commands -RadiusServers -Policies @@ -85,7 +87,7 @@ Try { # Generate required policies foreach ( $policyName in $PesterParamsHash_Common.MultiplePolicyList ) { If (-not (Get-JCPolicy -Name $policyName)) { - New-JCpolicy -templateName linux_Disable_USB_Storage -Name $policyName + New-JCPolicy -TemplateName linux_Disable_USB_Storage -Name $policyName } } Write-Host "[Status] Finished Generating Policies: $($stopwatch.Elapsed)" @@ -119,7 +121,7 @@ Try { $PesterParamsHash_Associations = @{ PolicySystemGroupMembership = $PesterParamsHash_BuildOrg.MultiplePolicy | ForEach-Object { If (-not (Get-JcSdkPolicyAssociation -PolicyId:($_.id) -Targets:('system_group') | Where-Object { $_.id -eq $PesterParamsHash_BuildOrg.SystemGroup.id })) { - Set-JcSdkPolicyAssociation -Op:("add") -PolicyId:($_.id) -Type:('system_group') -id:($PesterParamsHash_BuildOrg.SystemGroup.id); + Set-JcSdkPolicyAssociation -Op:("add") -PolicyId:($_.id) -Type:('system_group') -Id:($PesterParamsHash_BuildOrg.SystemGroup.id); }; }; UserGroupMembership = If (-not (Get-JcSdkUserGroupMember -GroupId:($PesterParamsHash_BuildOrg.UserGroup.id) | Where-Object { $_.id -eq $PesterParamsHash_BuildOrg.User1.id })) { @@ -145,7 +147,7 @@ Try { # Generate command results if they dont exist If ([System.String]::IsNullOrEmpty($PesterParamsHash_BuildOrg.CommandResults) -or $PesterParamsHash_BuildOrg.CommandResults.Count -lt $PesterParams_CommandResultCount) { - If (-not (Get-JCSdkCommandAssociation -CommandId:($PesterParamsHash_BuildOrg.Command1._id) -Targets:('system') | Where-Object { $_.targetId -eq $PesterParamsHash_BuildOrg.SystemLinux._id })) { + If (-not (Get-JcSdkCommandAssociation -CommandId:($PesterParamsHash_BuildOrg.Command1._id) -Targets:('system') | Where-Object { $_.targetId -eq $PesterParamsHash_BuildOrg.SystemLinux._id })) { Set-JcSdkCommandAssociation -Op:("add") -CommandId:($PesterParamsHash_BuildOrg.Command1._id) -Type:('system') -Id:($PesterParamsHash_BuildOrg.SystemLinux._id) }; For ($i = 1; $i -le $PesterParams_CommandResultCount; $i++) { @@ -154,17 +156,24 @@ Try { While ((Get-JCCommandResult | Where-Object { $_.Name -eq $PesterParamsHash_BuildOrg.Command1.name }).Count -ge $PesterParams_CommandResultCount) { Start-Sleep -Milliseconds:(200) } - If ((Get-JCSdkCommandAssociation -CommandId:($PesterParamsHash_BuildOrg.Command1._id) -Targets:('system') | Where-Object { $_.targetId -eq $PesterParamsHash_BuildOrg.SystemLinux._id })) { + If ((Get-JcSdkCommandAssociation -CommandId:($PesterParamsHash_BuildOrg.Command1._id) -Targets:('system') | Where-Object { $_.targetId -eq $PesterParamsHash_BuildOrg.SystemLinux._id })) { Set-JcSdkCommandAssociation -Op:("remove") -CommandId:($PesterParamsHash_BuildOrg.Command1._id) -Type:('system') -Id:($PesterParamsHash_BuildOrg.SystemLinux._id) }; } Write-Host "[Status] Finished Generating Command Results: $($stopwatch.Elapsed)" + $variableArray = New-Object System.Collections.Generic.List[PSCustomObject] + # Combine all hash tables into one list and foreach of their values create a new global parameter (Get-Variable -Scope:('Script') -Name:("$($PesterParamsHash_VariableName.VariableNamePrefixHash)*")).Value | ForEach-Object { $_.GetEnumerator() | ForEach-Object { Set-Variable -Name:("$($PesterParamsHash_VariableName.VariableNamePrefix)$($_.Name)") -Value:($_.Value) -Scope:('Global') + $variableObject = [PSCustomObject]@{ + Name = "$($PesterParamsHash_VariableName.VariableNamePrefix)$($_.Name)" + Value = $_.Value + } + $variableArray.Add($variableObject) } } $stopwatch.Stop() @@ -176,3 +185,20 @@ Try { Write-Error ($_.TargetObject) Write-Error ($_.PSMessageDetails) } + +# $envVars | foreach-Object { +# $variableObject = [PSCustomObject]@{ +# Name = "$($_.Name)" +# Value = $_.Value +# } +# $variableArray.Add($variableObject) + +# } +# Clean up unnecessary Radius Server Attributes to Export: +$r1 = $variableArray | Where-Object { $_.name -eq 'PesterParams_RadiusAzureServer' } +$r2 = $variableArray | Where-Object { $_.name -eq 'PesterParams_RadiusServer' } +$r1.value | % { $_.psobject.properties.remove('httpMetaData') } +$r2.value | % { $_.psobject.properties.remove('httpMetaData') } + +write-Host "[Status] Exporting $($variableArray.count) variables from setupOrg" +Return $variableArray \ No newline at end of file diff --git a/PowerShell/ModuleChangelog.md b/PowerShell/ModuleChangelog.md index b3f44a391..b4ede7fed 100644 --- a/PowerShell/ModuleChangelog.md +++ b/PowerShell/ModuleChangelog.md @@ -1,3 +1,17 @@ +## 2.8.2 + +Release Date: November 2, 2023 + +#### RELEASE NOTES + +``` +Addressed the issue with Get-JCPolicyTargetGroup indexing error. Update several module tests to run in parallel. +``` + +### BUG FIXES: + +- Fixed an issue with Get-JCPolicyTargetGroup index error when a policy group is not bound to a device group + ## 2.8.1 Release Date: October 19, 2023