#Import the psd1 $ModuleName = 'PoshCore' $ModuleManifestName = "$ModuleName.psd1" $ModuleManifestPath = "$PSScriptRoot\..\$ModuleManifestName" Import-Module $ModuleManifestPath -Force -ErrorAction Stop <# Integration/Acceptance Testing for PoshCore-Account.ps1 Invoke-Pester –Script @{'Path' = 'C:\Githubdata\poshcore\Tests\PoshCore-Account.Tests.ps1';} Description: Run through all variations of attribute groups and confirm data from core is as expected #> #################### Data to Compare with Output - BEGIN #################### #region <# Integration tests - reference data from Core. If these account details change, update this file using the code in the comments below to pull the latest data Review the changes before updating this file! This uses the same code as the code under test, so if you change this data, be sure that the actual data in core has changed, or you'll just have matching bugs in the reference and the test code! #> $Attributes = ( 'AccountTeam', 'Default', 'Has', 'Is' ) #Code to pull fresh data #Find-CoreAccount 1103359 -Attributes $Attributes | ConvertTo-Json -Depth 10 | clip $Account1 = @' { "internal_id": 68462, "collections_specialist": [ { "employee_number": "6702", "employee_userid": "terensia.zarook", "first_name": "Terensia", "id": "616587", "imaway": "", "is_employee": "True", "last_active": "2017-08-31 05:38:12", "last_name": "Zarook", "login_time": "2017-08-31 02:10:53", "name": "Terensia Zarook", "primary_email": "Terensia.zarook@rackspace.co.uk" } ], "cloud_accounts": [ 10034324, 10044200 ], "is_internal": true, "number": "1103359", "has_mom": false, "has_basic_pop_monitoring": false, "has_computers": true, "segment_name": "Intensive", "primary_contact": [ { "employee_number": "", "employee_userid": "", "first_name": "Stephen", "id": "598214", "imaway": "", "is_employee": "False", "last_active": "", "last_name": "Waller", "login_time": "", "name": "Stephen Waller", "primary_email": "stephen.waller@rackspace.co.uk" } ], "cross_platform_lead_techs": "", "is_high_profile": false, "has_critical_sites_reporting": false, "primary_lead_tech": [ { "employee_number": "4569", "employee_userid": "santosh.yadav", "first_name": "Santosh", "id": "408000", "imaway": "", "is_employee": "True", "last_active": "", "last_name": "Yadav", "login_time": "", "name": "Santosh Yadav", "primary_email": "santosh.yadav@rackspace.co.uk" } ], "has_dnas_devices": false, "has_managed_exchange": false, "has_disaster_recovery": false, "has_advanced_pop_monitoring": false, "is_devseries": null, "has_ad_instructions": true, "status": "Active", "has_dsan_devices": false, "is_uk": false, "am_queue_name": "Account Management - Intensive", "has_patching_instructions": true, "is_us": true, "has_account_level_domains_permissions": true, "account_coordinator": [ ], "opt_out": false, "has_virtual_cluster": true, "is_dev_series": null, "has_sharepoint": false, "name": "International Enterprise Support Test Account", "has_activation_button": false, "has_rpa_devices": false, "has_active_products": true, "business_development": [ { "employee_number": "21363", "employee_userid": "Online-Sales-User", "first_name": "Online-Sales-User", "id": "1383061", "imaway": "", "is_employee": "True", "last_active": "", "last_name": "service account", "login_time": "", "name": "Online-Sales-User service account", "primary_email": "Online-Sales-User@rackspace.local" } ], "has_rackspace_email": false, "account_exec": [ { "employee_number": "4753", "employee_userid": "maria.gero", "first_name": "Maria", "id": "422002", "imaway": "", "is_employee": "True", "last_active": "", "last_name": "Gero", "login_time": "", "name": "Maria Gero", "primary_email": "maria.gero@rackspace.com" } ] } '@ | ConvertFrom-Json #Code to pull fresh data #Find-CoreAccount 858885 -Attributes $Attributes | ConvertTo-Json -Depth 10 | clip $Account2 = @' { "internal_id": 50282, "collections_specialist": [ { "employee_number": "2533", "employee_userid": "diana.felix", "first_name": "Diana", "id": "240440", "imaway": "", "is_employee": "True", "last_active": "", "last_name": "Felix", "login_time": "", "name": "Diana Felix" } ], "cloud_accounts": [ 10027032 ], "is_internal": false, "number": "858885", "has_mom": false, "has_basic_pop_monitoring": false, "has_computers": true, "segment_name": "Intensive", "primary_contact": [ { "employee_number": "", "employee_userid": "", "first_name": "Gary", "id": "776802", "imaway": "", "is_employee": "False", "last_active": "", "last_name": "Buxton", "login_time": "", "name": "Gary Buxton" } ], "cross_platform_lead_techs": "", "is_high_profile": false, "has_critical_sites_reporting": false, "primary_lead_tech": [ { "employee_number": "15025", "employee_userid": "davi3459", "first_name": "David", "id": "1219972", "imaway": "", "is_employee": "True", "last_active": "2017-07-27 05:48:39", "last_name": "King", "login_time": "2017-07-27 03:05:31", "name": "David King" } ], "has_dnas_devices": false, "has_managed_exchange": false, "has_disaster_recovery": false, "has_advanced_pop_monitoring": false, "is_devseries": null, "has_ad_instructions": true, "status": "Active", "has_dsan_devices": false, "is_uk": true, "am_queue_name": "Account Management - Intensive", "has_patching_instructions": true, "is_us": false, "has_account_level_domains_permissions": true, "account_coordinator": [ { "employee_number": "5822", "employee_userid": "alan.kent", "first_name": "Alan", "id": "551795", "imaway": "", "is_employee": "True", "last_active": "2017-07-27 05:33:06", "last_name": "Kent", "login_time": "2017-07-27 03:06:55", "name": "Alan Kent" } ], "opt_out": false, "has_virtual_cluster": true, "is_dev_series": null, "has_sharepoint": false, "name": "Experian Limited", "has_activation_button": false, "has_rpa_devices": false, "has_active_products": true, "business_development": [ { "employee_number": "21259", "employee_userid": "pete0722", "first_name": "Peter", "id": "1378886", "imaway": "", "is_employee": "True", "last_active": "", "last_name": "Gurry", "login_time": "", "name": "Peter Gurry" } ], "has_rackspace_email": false, "account_exec": [ { "employee_number": "12501", "employee_userid": "jame6931", "first_name": "James", "id": "1139240", "imaway": "", "is_employee": "True", "last_active": "2017-07-27 05:01:56", "last_name": "Reid", "login_time": "2017-07-27 03:25:32", "name": "James Reid" } ] } '@ | ConvertFrom-Json #endregion ##################### Data to Compare with Output - END ##################### #################### Pester Tests - BEGIN #################### #region #added to this test as this is the first thats runs when you run invoke-pester Describe "TLS checks" { It 'Checks TLS 1.2 is set on import' { $Test1 =[Net.ServicePointManager]::SecurityProtocol $Test1 | Should -BeLike "*Tls12*" } } Describe "Find-CoreAccount" { #Basic tests It 'Returns a single account from core' { $Test = Find-CoreAccount -Accounts $Account1.number $Test.number | Should Be $Account1.number } It 'Returns multiple accounts from core' { $Test = Find-CoreAccount -Accounts $Account1.number, $Account2.number $Test.Count | Should Be 2 $TestAccNums = $Test | select -ExpandProperty number $TestAccNums -contains $Account1.number | Should Be $true $TestAccNums -contains $Account2.number | Should Be $true } It 'Returns custom attributes' { $Test = Find-CoreAccount -Accounts $Account1.number -CustomAttributes @{ "active_mbu_devices" = "active_mbu_devices" } $Test.psobject.Properties["active_mbu_devices"] | Should Not Be $null } #Attribute tests - this enforces the contract for any code that calls ours #Generating attribute test syntax: #$Account1 | Get-Member -MemberType NoteProperty | select -ExpandProperty Name | foreach {"`$Test.$_ | Should Be `$Account1.$_"} | clip $Test = Find-CoreAccount -Accounts $Account1.number -Attributes $Attributes It "Returns Default attributes" { $Test.cloud_accounts | Should Be $Account1.cloud_accounts $Test.internal_id | Should Be $Account1.internal_id $Test.name | Should Be $Account1.name $Test.number | Should Be $Account1.number $Test.opt_out | Should Be $Account1.opt_out $Test.status | Should Be $Account1.status } It "Returns Account Team attributes" { $Test.segment_name | Should Be $Account1.segment_name $Test.am_queue_name | Should Be $Account1.am_queue_name $Test.account_coordinator.name | Should Be $Account1.account_coordinator.name $Test.account_exec.name | Should Be $Account1.account_exec.name $Test.business_development.name | Should Be $Account1.business_development.name $Test.collections_specialist.name | Should Be $Account1.collections_specialist.name $Test.cross_platform_lead_techs.name | Should Be $Account1.cross_platform_lead_techs.name $Test.primary_contact.name | Should Be $Account1.primary_contact.name $Test.primary_lead_tech.name | Should Be $Account1.primary_lead_tech.name } It "Returns Is attributes" { $Test.is_high_profile | Should Be $Account1.is_high_profile $Test.is_internal | Should Be $Account1.is_internal $Test.is_uk | Should Be $Account1.is_uk $Test.is_us | Should Be $Account1.is_us } It "Returns Has attributes" { $Test.has_account_level_domains_permissions | Should Be $Account1.has_account_level_domains_permissions $Test.has_activation_button | Should Be $Account1.has_activation_button $Test.has_active_products | Should Be $Account1.has_active_products $Test.has_advanced_pop_monitoring | Should Be $Account1.has_advanced_pop_monitoring $Test.has_ad_instructions | Should Be $Account1.has_ad_instructions $Test.has_basic_pop_monitoring | Should Be $Account1.has_basic_pop_monitoring $Test.has_computers | Should Be $Account1.has_computers $Test.has_critical_sites_reporting | Should Be $Account1.has_critical_sites_reporting $Test.has_disaster_recovery | Should Be $Account1.has_disaster_recovery $Test.has_dnas_devices | Should Be $Account1.has_dnas_devices $Test.has_dsan_devices | Should Be $Account1.has_dsan_devices $Test.has_managed_exchange | Should Be $Account1.has_managed_exchange $Test.has_mom | Should Be $Account1.has_mom $Test.has_patching_instructions | Should Be $Account1.has_patching_instructions $Test.has_rackspace_email | Should Be $Account1.has_rackspace_email $Test.has_rpa_devices | Should Be $Account1.has_rpa_devices $Test.has_sharepoint | Should Be $Account1.has_sharepoint $Test.has_virtual_cluster | Should Be $Account1.has_virtual_cluster } } #endregion ##################### Pester Tests - END ##################### #Log to appstats Try { Set-LogtoAppstats -FunctionID "PoshCore-Contact-Tests" -AppID "PoshCore" } Catch { Write-Warning "Failed to Log to Appstats, Error message: $($_.exception.message))" }