Skip to content

Commit abf56fc

Browse files
Get-DbaCmObject - Fix missing CIM timeout initialization in Test-DbaCmConnection (review of #10252)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent dbdd892 commit abf56fc

3 files changed

Lines changed: 42 additions & 2 deletions

File tree

docs/trackers/features/commit-bug-review-TRACKER.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ Find real bugs (logic errors, null refs, incorrect behavior) and fix them. Skip
7676
| 4f1e56ce4 | New-DbaDbMailAccount, Set-DbaDbMailAccount - Add Port, SSL, and authentication parameters (#10257) | DONE | Added validation to reject conflicting SMTP authentication modes and incomplete credential pairs; added unit regression tests. |
7777
| 8218d327e | Restore-DbaDatabase, Invoke-DbaAdvancedRestore - Add ErrorBrokerConversations parameter (#10253) | DONE | Fixed missing ExecuteAs script prefix and added NoRecovery/Standby validation; added regression tests. |
7878
| 9a4e4bacb | Connect-DbaInstance - Set NonPooledConnection on ServerConnection (#10260) | DONE | Fixed AccessToken regression by skipping a redundant NonPooledConnection assignment on SqlConnection-backed contexts; added unit regression test. |
79-
| a0ab78a66 | Get-DbaCmObject - Apply CimOperationTimeout to all CIM connections (#10252) | PENDING | |
79+
| a0ab78a66 | Get-DbaCmObject - Apply CimOperationTimeout to all CIM connections (#10252) | DONE | Fixed missing timeout initialization in Test-DbaCmConnection and added a unit regression test. |
8080
| fbdb47053 | Import-DbaXESessionTemplate - Add event_file target when TargetFilePath specified (#10250) | PENDING | |
8181
| 3d6fa113f | Connect-DbaInstance - Trust server certificate for localhost DAC connections (#10263) | PENDING | |
8282
| 0c0629d25 | Restore-DbaDatabase - Add examples for filtering partial backup files (#10242) | PENDING | |

public/Test-DbaCmConnection.ps1

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,14 @@ function Test-DbaCmConnection {
254254

255255
#region Setup connection object
256256
$con = $ConnectionObject.Connection
257+
258+
# Ensure CIM session options are initialized with the configured operation timeout
259+
if ($null -eq $con.CimWinRMOptions) {
260+
$con.CimWinRMOptions = New-DbaCimSessionOptionWithTimeout -Protocol Default
261+
}
262+
if ($null -eq $con.CimDCOMOptions) {
263+
$con.CimDCOMOptions = New-DbaCimSessionOptionWithTimeout -Protocol Dcom
264+
}
257265
#endregion Setup connection object
258266

259267
#region Handle credentials

tests/Test-DbaCmConnection.Tests.ps1

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#Requires -Module @{ ModuleName="Pester"; ModuleVersion="5.0" }
22
param(
3-
$ModuleName = "dbatools",
3+
$ModuleName = "dbatools",
44
$CommandName = "Test-DbaCmConnection",
55
$PSDefaultParameterValues = $TestConfig.Defaults
66
)
@@ -22,6 +22,38 @@ Describe $CommandName -Tag UnitTests {
2222
}
2323
}
2424

25+
Describe $CommandName -Tag UnitTests {
26+
InModuleScope dbatools {
27+
Context "Timeout option initialization" {
28+
It "Initializes CIM session options when they are missing" {
29+
Mock Get-WmiObject {
30+
[PSCustomObject]@{
31+
Name = "mocked"
32+
}
33+
}
34+
35+
Mock New-DbaCimSessionOptionWithTimeout {
36+
if ($Protocol -eq "Default") {
37+
New-CimSessionOption -Protocol Default
38+
} else {
39+
New-CimSessionOption -Protocol Dcom
40+
}
41+
}
42+
43+
$connection = New-Object -TypeName Dataplat.Dbatools.Connection.ManagementConnection -ArgumentList "localhost"
44+
$inputObject = New-Object -TypeName Dataplat.Dbatools.Parameter.DbaCmConnectionParameter -ArgumentList $connection
45+
46+
$result = Test-DbaCmConnection -ComputerName $inputObject -Type Wmi
47+
48+
$result.CimWinRMOptions | Should -Not -BeNullOrEmpty
49+
$result.CimDCOMOptions | Should -Not -BeNullOrEmpty
50+
Assert-MockCalled New-DbaCimSessionOptionWithTimeout -Exactly 1 -Scope It -ParameterFilter { $Protocol -eq "Default" }
51+
Assert-MockCalled New-DbaCimSessionOptionWithTimeout -Exactly 1 -Scope It -ParameterFilter { $Protocol -eq "Dcom" }
52+
}
53+
}
54+
}
55+
}
56+
2557
Describe $CommandName -Tag IntegrationTests {
2658
It "returns some valid info" {
2759
$results = Test-DbaCmConnection -Type Wmi

0 commit comments

Comments
 (0)