#Open in ISE and run. cd C:\GithubData\poshcore Import-Module .\PoshCore.psd1 -Force -ErrorAction Stop $Global:Results = @() function Update-TestResult { [CmdletBinding()] Param ( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [String]$TestName, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [String]$Result ) $Global:Results += New-Object PSObject -Property @{ Test = $TestName; Result = $Result; } } <# Run through all variations of attribute groups and confirm data from core is as expected if anything changes with attributes this will break these tests Tests are saved into the global $Global:Results and at the end a summary of pass/fail is given the idea would be to build this into a pester test to run this for us #> #################### Ticket attribute testing - BEGIN #################### #region ############################ #Ticket attribute testing ############################ #Test data $ErrorActionPreference = "Stop" $ticketnumber = "161125-03022" Try { $DefaultTix = Find-CoreTicket -Tickets $ticketnumber $Account = Find-CoreTicket -Tickets $ticketnumber -Attributes Account $Category = Find-CoreTicket -Tickets $ticketnumber -Attributes Category $Has = Find-CoreTicket -Tickets $ticketnumber -Attributes Has $IsTix = Find-CoreTicket -Tickets $ticketnumber -Attributes Is $MiscTix = Find-CoreTicket -Tickets $ticketnumber -Attributes Misc $Time = Find-CoreTicket -Tickets $ticketnumber -Attributes Time $Computers = Find-CoreTicket -Tickets $ticketnumber -Attributes Computers $Messages = Find-CoreTicket -Tickets $ticketnumber -Attributes Messages $Subtickets = Find-CoreTicket -Tickets "170113-09038" -Attributes Subtickets $AllTix = Find-CoreTicket -Tickets $ticketnumber -Attributes Account,Category,Has,Is,Misc,Time,Computers,Messages,Subtickets $CustomTix = Find-CoreTicket -Tickets $ticketnumber -CustomAttributes @{"admin_access" = "admin_access"} $AllCustomTix = Find-CoreTicket -Tickets $ticketnumber -Attributes Account,Category,Has,Is,Misc,Time,Computers,Messages,Subtickets -CustomAttributes @{"admin_access" = "admin_access"} } Catch { Update-TestResult -TestName "Find-CoreTicket query" -Result $false } #results Update-TestResult -TestName "Find-CoreTicket query" -Result $true Update-TestResult -TestName "Default ticket attributes" -Result $($DefaultTix.Result.subject -eq "Test ticket" -and $DefaultTix.Result.queue_name -eq "INTL Windows") Update-TestResult -TestName "Account ticket attributes" -Result $($Account.Result.account_number -eq "1103359") Update-TestResult -TestName "Category ticket attributes" -Result $($Category.Result.classification_name -eq "NONE" -and $Category.Result.severity_name -eq "Standard") Update-TestResult -TestName "Has ticket attributes" -Result $($Has.Result.has_windows_servers -eq $true -and $Has.Result.has_open_subtickets -eq $false) Update-TestResult -TestName "Is ticket attributes" -Result $($IsTix.Result.is_superticket -eq $false -and $IsTix.Result.is_subticket -eq $false) Update-TestResult -TestName "Misc ticket attributes" -Result $($MiscTix.Result.source_name -eq "CORE Automated" -and $MiscTix.Result.support_level -eq "Fanatical Support") Update-TestResult -TestName "Time ticket attributes" -Result $($Time.Result.last_public_response_date -eq "2016-11-25 06:09:29") Update-TestResult -TestName "Computers ticket attributes" -Result $($Computers.result.Computers[0].name -eq "560559-DB1.rackspace.com" -and $Computers.result.Computers[2].account_id -eq "1103359") Update-TestResult -TestName "Messages ticket attributes" -Result $($Messages.result.Messages[0].contact -eq "Martin Howlett" -and $Messages.result.Messages[3].source -eq "CORE Automated") Update-TestResult -TestName "Subtickets ticket attributes" -Result $($Subtickets.result.subtickets[0].number -eq "170119-10355" -and $Subtickets.result.subtickets[1].submitter -eq "Ben Thompson (US)") Update-TestResult -TestName "All ticket attributes" -Result $($AllTix.Result.has_public_comment -eq $true -and $AllTix.result.Computers[2].datacenter_symbol -eq "LON3" -and $AllTix.result.messages[0].contact -eq "Martin Howlett") Update-TestResult -TestName "Custom ticket attributes" -Result $($CustomTix.Result.admin_access -eq $false) Update-TestResult -TestName "Custom and all ticket attributes" -Result $($AllCustomTix.Result.admin_access -eq $false -and $AllTix.result.Computers[1].datacenter_symbol -eq "LON3" -and $AllTix.result.messages[0].contact -eq "Martin Howlett") #endregion ##################### Ticket attribute testing - END ##################### #################### Computer attribute testing - BEGIN #################### #region ############################ #Computer attribute testing ############################ #test data $Computer = 560559 Try { $Default = Find-CoreComputer -Computers @($Computer) $Attached = Find-CoreComputer -Computers @($Computer) -Attributes Attached $Backup = Find-CoreComputer -Computers @(839653) -Attributes Backup #AIR server $Bandwidth = Find-CoreComputer -Computers @(839653) -Attributes Bandwidth #AIR server $Domain = Find-CoreComputer -Computers @($Computer) -Attributes Domain $Drac = Find-CoreComputer -Computers @($Computer) -Attributes Drac $Implementation = Find-CoreComputer -Computers @($Computer) -Attributes Implementation $Is = Find-CoreComputer -Computers @($Computer) -Attributes Is $Misc = Find-CoreComputer -Computers @($Computer) -Attributes Misc $Network = Find-CoreComputer -Computers @($Computer) -Attributes Network $Os = Find-CoreComputer -Computers @($Computer) -Attributes Os $Password = Find-CoreComputer -Computers @($Computer) -Attributes Password $Storage = Find-CoreComputer -Computers @($Computer) -Attributes Storage $Skus = Find-CoreComputer -Computers @($Computer) -Attributes Skus $All = Find-CoreComputer -Computers @($Computer) -Attributes Attached,Backup,Bandwidth,Domain,Drac,Implementation,Is,Misc,Network,Os,Password,Storage,Skus $Custom = Find-CoreComputer -Computers @($Computer) -CustomAttributes @{"tickets" = "tickets.number"} $CustomAll = Find-CoreComputer -Computers @($Computer) -Attributes Attached,Backup,Bandwidth,Domain,Drac,Implementation,Is,Misc,Network,Os,Password,Storage,Skus -CustomAttributes @{"tickets" = "tickets.number"} $MultiComputer = Find-CoreComputer -Computers @($Computer,560570) -Attributes Attached,Backup,Bandwidth,Domain,Drac,Implementation,Is,Misc,Network,Os,Password,Storage,Skus -CustomAttributes @{"tickets" = "tickets.number"} } Catch { Update-TestResult -TestName "Find-CoreComputer query" -Result $false } #test results Update-TestResult -TestName "Find-CoreComputer query" -Result $True Update-TestResult -TestName "Default computer attributes" -Result $($Default.Result.Name -eq "560559-DB1.rackspace.com") Update-TestResult -TestName "Attached computer attributes" -Result $($Attached.Result.attached_devices -and $Attached.Result.attached_firewalls -and $Attached.Result.attached_san_or_das) Update-TestResult -TestName "Bandwidth computer attributes" -Result $($Bandwidth.Result.bw_subscription -eq "2000" -AND $Bandwidth.Result.bw_poller -eq "bw1.ord1.core.rackspace.com") Update-TestResult -TestName "Domain computer attributes" -Result $($Domain.Result.is_workgroup -eq $false -AND $Domain.Result.domain_name -eq "lon.intensive.int") Update-TestResult -TestName "Drac computer attributes" -Result $($Drac.Result.has_drac -eq $true -AND $Drac.Result.drac_usernames -eq "root") Update-TestResult -TestName "Implementation computer attributes" -Result $($Implementation.Result.is_ice_complete -eq $true -AND $Implementation.Result.contract -eq "87732") Update-TestResult -TestName "Is computer attributes" -Result $($Is.Result.is_cluster -eq $false -AND $Is.Result.is_behind_net_device -eq $true) Update-TestResult -TestName "Misc computer attributes" -Result $($Misc.Result.segment_queue -eq "Intensive (All Teams)" -AND $Misc.Result.location -eq "XB7-1E[5] (AggExNet)") Update-TestResult -TestName "Network computer attributes" -Result $($Network.Result.exnet_zone -eq "ExNet-331" -AND $Network.Result.primary_ip -eq "162.13.38.113") Update-TestResult -TestName "Os computer attributes" -Result $($Os.Result.usage_type -eq "Test" -AND $Os.Result.os_name -eq "Windows 2012 R2 Standard - 64 bit") Update-TestResult -TestName "Password computer attributes" -Result $($Password.Result.primary_userid -eq "swaller" -AND $Password.Result.rba_login_method -eq "Password Auth") Update-TestResult -TestName "Skus computer attributes" -Result $(if($skus.Result.skus){$true}else{$false}) Update-TestResult -TestName "All computer attributes" -Result $($All.Result.skus -and $All.Result.datacenter_symbol -eq "LON3" -and $All.Result.is_windows) Update-TestResult -TestName "Custom computer attributes" -Result $($Custom.Result.tickets[-1] -eq "150526-12926") Update-TestResult -TestName "CustomAll computer attributes" -Result $($CustomAll.Result.tickets[-1] -eq "150526-12926" -and $CustomAll.Result.is_uk_account -and $CustomAll.Result.platform_name -eq "DELL PowerEdge R720 Windows") Update-TestResult -TestName "MultiComputer computer attributes" -Result $($MultiComputer.result[1].name -eq "560570-DB2.rackspace.com" -and $CustomAll.Result[0].is_uk_account -and $MultiComputer.result[1].platform_name -eq "DELL PowerEdge R720 Windows") #endregion #################### Computer attribute testing - END ##################### #################### Contact attribute testing - BEGIN #################### #region ############################ #Contact attribute testing ############################ $ContactDefault = Find-CoreContact -Ssos "mart6141" $ContactIs = Find-CoreContact -Ssos "mart6141" -Attributes IS $ContactCustom = Find-CoreContact -Ssos "mart6141" -CustomAttribute @{"reverse_name"="reverse_name"} Update-TestResult -TestName "Default contact attributes" -Result ($ContactDefault.result.first_name -eq "Martin") Update-TestResult -TestName "Is contact attributes" -Result ($ContactIs.result.is_suspended -eq $False) Update-TestResult -TestName "Custom contact attributes" -Result ($ContactCustom.result.reverse_name -eq "Howlett, Martin") #endregion ##################### Contact attribute testing - END ##################### #################### ticket creation testing - BEGIN #################### #region #Create a test ticket using all params $TicketText = "Automation ticket for testing - please ignore" $TicketTextUpdate = "Integration test update" $subject = "PoshCore integration test" $Params = @{ AccountId = 1103359 Subject = $subject Text = $TicketText QueueName = "INTL Windows" SubcategoryName = "Windows - Other" Source = [String]"Rackspace Employee" Severity = "Emergency" Priority = "Low" Classification = 'Request for Change' Computers = @(560559,560570) AssigneeSsoName = "mart6141" PrivateTicket = $true } $TicketNumber = New-CoreTicket @Params $NewTicketAll = Find-CoreTicket -Tickets $TicketNumber -Attributes Account,Category,Has,Is,Misc,Time,Computers,Messages,Subtickets #Standard params $CoreTicketResult = ($NewTicketAll.result.account_number -eq "1103359") -and ($NewTicketAll.result.Subject -eq $subject) -and ($NewTicketAll.result.messages[0].text -eq $TicketText) -and ($NewTicketAll.result.queue_name -eq "INTL Windows") -and ($NewTicketAll.result.subcategory_name -eq "Windows - Other") Update-TestResult -TestName "New-CoreTicket default params" -Result $CoreTicketResult Update-TestResult -TestName "New-CoreTicket Source" -Result ($NewTicketAll.result.source_name -eq "Rackspace Employee") Update-TestResult -TestName "New-CoreTicket Severity" -Result ($NewTicketAll.result.severity_name -eq "Emergency") Update-TestResult -TestName "New-CoreTicket Priority" -Result ($NewTicketAll.result.priority -eq "Low") Update-TestResult -TestName "New-CoreTicket Classification" -Result ($NewTicketAll.result.Classification_name -eq "Request for Change") Update-TestResult -TestName "New-CoreTicket Assignee" -Result ($NewTicketAll.result.assignee_name -eq "Martin Howlett") Update-TestResult -TestName "New-CoreTicket Private" -Result ($NewTicketAll.result.private -eq 1) Update-TestResult -TestName "New-CoreTicket Computers" -Result ($NewTicketAll.result.computers[0].Number -eq 560559) #endregion ##################### ticket creation testing - END ##################### #################### ticket update testing - BEGIN #################### #region $TicketupdateText = "This is a default ticket update" Add-CoreTicketUpdate -TicketNumber "$TicketNumber" -Text $TicketupdateText $TicketupdateAllText = "This is a ticket update with all params" Add-CoreTicketUpdate -TicketNumber "$TicketNumber" -Text $TicketupdateAllText -Source "Other" -PrivateUpdate $TicketUpdate = Find-CoreTicket -Tickets $TicketNumber -Attributes Messages Update-TestResult -TestName "Add-CoreTicketUpdate default params" -Result (($TicketUpdate.result.messages[1].text -eq $TicketupdateText) -and ($TicketUpdate.result.messages[1].source -eq "Rackspace Employee")) Update-TestResult -TestName "Add-CoreTicketUpdate all params" -Result (($TicketUpdate.result.messages[2].text -eq $TicketupdateAllText) -and ($TicketUpdate.result.messages[2].source -eq "Other")) #endregion ##################### ticket update testing - END ##################### ##################### Find-CoreTicketQueueCategory - START ##################### #region $Find1 = Find-CoreAttributeValues -Class "QueueView" -SubClass "QvQueueView" -SearchName "INTL Windows" Update-TestResult -TestName "Find-CoreAttributeValues find name" -Result ($Find1.Name -eq "INTL Windows") $Find2 = Find-CoreTicketQueueCategory -QueueId 683 -SearchID 35352 Update-TestResult -TestName "Find-CoreAttributeValues find id" -Result ($Find2.SubcategoryName -eq "Windows - Performance Analysis") $Find3 = Find-CoreTicketQueueCategory -QueueId 683 -ReturnAll Update-TestResult -TestName "Find-CoreAttributeValues return all values" -Result ($Find3.count -eq 203) #endregion ##################### Find-CoreTicketQueueCategory - END ##################### #Parse results $failure = $null foreach ($test in $Global:Results) { if (-not $test.Result) { Write-host "Test $($test.name) failed" -ForegroundColor Red $failure = $true } } if(-not $failure) { Write-host "All tests passed" -ForegroundColor Green }