Skip to content

Commit 2a9fb35

Browse files
Copilotjohlju
andcommitted
Rebase PR onto latest main and enhance New-SqlDscLogin integration tests
- Successfully rebased onto latest main branch (commit cba192e) - Resolved merge conflicts in source/en-US/SqlServerDsc.strings.psd1 and azure-pipelines.yml - Enhanced New-SqlDscLogin.Integration.Tests.ps1 to use new Enable-SqlDscLogin and Disable-SqlDscLogin commands - Added comprehensive login state management tests demonstrating integration between all login commands - Added tests that validate Test-SqlDscIsLoginEnabled functionality with both ServerObject and LoginObject parameter sets - All login integration tests are properly configured in Group 2 of the SQL Server pipeline stage Co-authored-by: johlju <7189721+johlju@users.noreply.github.com>
1 parent 9fbfd20 commit 2a9fb35

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed

tests/Integration/Commands/New-SqlDscLogin.Integration.Tests.ps1

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,93 @@ Describe 'New-SqlDscLogin' -Tag @('Integration_SQL2016', 'Integration_SQL2017',
150150
}
151151
}
152152

153+
It 'Should create a disabled login and then enable it using Enable-SqlDscLogin' {
154+
$disableEnableLoginName = 'IntegrationTestDisableEnable'
155+
156+
try
157+
{
158+
# Create a disabled login
159+
$null = New-SqlDscLogin -ServerObject $script:serverObject -Name $disableEnableLoginName -SqlLogin -SecurePassword $script:testPassword -Disabled -Force
160+
161+
# Verify it is disabled using Test-SqlDscIsLoginEnabled
162+
Test-SqlDscIsLoginEnabled -ServerObject $script:serverObject -Name $disableEnableLoginName | Should -BeFalse
163+
164+
# Enable the login using Enable-SqlDscLogin
165+
Enable-SqlDscLogin -ServerObject $script:serverObject -Name $disableEnableLoginName -Force
166+
167+
# Verify it is now enabled
168+
Test-SqlDscIsLoginEnabled -ServerObject $script:serverObject -Name $disableEnableLoginName | Should -BeTrue
169+
}
170+
finally
171+
{
172+
# Clean up
173+
if (Test-SqlDscIsLogin -ServerObject $script:serverObject -Name $disableEnableLoginName)
174+
{
175+
$script:serverObject.Logins[$disableEnableLoginName].Drop()
176+
}
177+
}
178+
}
179+
180+
It 'Should create an enabled login and then disable it using Disable-SqlDscLogin' {
181+
$enableDisableLoginName = 'IntegrationTestEnableDisable'
182+
183+
try
184+
{
185+
# Create an enabled login (default)
186+
$null = New-SqlDscLogin -ServerObject $script:serverObject -Name $enableDisableLoginName -SqlLogin -SecurePassword $script:testPassword -Force
187+
188+
# Verify it is enabled using Test-SqlDscIsLoginEnabled
189+
Test-SqlDscIsLoginEnabled -ServerObject $script:serverObject -Name $enableDisableLoginName | Should -BeTrue
190+
191+
# Disable the login using Disable-SqlDscLogin
192+
Disable-SqlDscLogin -ServerObject $script:serverObject -Name $enableDisableLoginName -Force
193+
194+
# Verify it is now disabled
195+
Test-SqlDscIsLoginEnabled -ServerObject $script:serverObject -Name $enableDisableLoginName | Should -BeFalse
196+
}
197+
finally
198+
{
199+
# Clean up
200+
if (Test-SqlDscIsLogin -ServerObject $script:serverObject -Name $enableDisableLoginName)
201+
{
202+
$script:serverObject.Logins[$enableDisableLoginName].Drop()
203+
}
204+
}
205+
}
206+
207+
It 'Should demonstrate login state management workflow using login objects' {
208+
$workflowLoginName = 'IntegrationTestWorkflow'
209+
210+
try
211+
{
212+
# Create an enabled login
213+
$loginObject = New-SqlDscLogin -ServerObject $script:serverObject -Name $workflowLoginName -SqlLogin -SecurePassword $script:testPassword -PassThru -Force
214+
215+
# Verify initial state is enabled
216+
Test-SqlDscIsLoginEnabled -LoginObject $loginObject | Should -BeTrue
217+
218+
# Disable using login object
219+
Disable-SqlDscLogin -LoginObject $loginObject -Force
220+
221+
# Verify it is disabled using login object
222+
Test-SqlDscIsLoginEnabled -LoginObject $loginObject | Should -BeFalse
223+
224+
# Re-enable using login object
225+
Enable-SqlDscLogin -LoginObject $loginObject -Force
226+
227+
# Verify it is enabled again
228+
Test-SqlDscIsLoginEnabled -LoginObject $loginObject | Should -BeTrue
229+
}
230+
finally
231+
{
232+
# Clean up
233+
if (Test-SqlDscIsLogin -ServerObject $script:serverObject -Name $workflowLoginName)
234+
{
235+
$script:serverObject.Logins[$workflowLoginName].Drop()
236+
}
237+
}
238+
}
239+
153240
It 'Should throw an error when trying to create a login that already exists' {
154241
{ New-SqlDscLogin -ServerObject $script:serverObject -Name $script:testSqlLoginName -SqlLogin -SecurePassword $script:testPassword -Force } | Should -Throw
155242
}
@@ -219,5 +306,46 @@ Describe 'New-SqlDscLogin' -Tag @('Integration_SQL2016', 'Integration_SQL2017',
219306
Test-SqlDscIsLogin -ServerObject $script:serverObject -Name $whatIfLoginName | Should -BeFalse
220307
}
221308
}
309+
310+
Context 'When demonstrating comprehensive login state management integration' {
311+
It 'Should manage complete login lifecycle with multiple commands' {
312+
$lifecycleLoginName = 'IntegrationTestLifecycle'
313+
314+
try
315+
{
316+
# Step 1: Create a new login
317+
$loginObject = New-SqlDscLogin -ServerObject $script:serverObject -Name $lifecycleLoginName -SqlLogin -SecurePassword $script:testPassword -PassThru -Force
318+
319+
# Step 2: Verify it exists and is enabled by default
320+
Test-SqlDscIsLogin -ServerObject $script:serverObject -Name $lifecycleLoginName | Should -BeTrue
321+
Test-SqlDscIsLoginEnabled -ServerObject $script:serverObject -Name $lifecycleLoginName | Should -BeTrue
322+
323+
# Step 3: Disable the login
324+
Disable-SqlDscLogin -ServerObject $script:serverObject -Name $lifecycleLoginName -Force
325+
326+
# Step 4: Verify it is disabled
327+
Test-SqlDscIsLoginEnabled -ServerObject $script:serverObject -Name $lifecycleLoginName | Should -BeFalse
328+
329+
# Step 5: Re-enable the login
330+
Enable-SqlDscLogin -ServerObject $script:serverObject -Name $lifecycleLoginName -Force
331+
332+
# Step 6: Verify it is enabled again
333+
Test-SqlDscIsLoginEnabled -ServerObject $script:serverObject -Name $lifecycleLoginName | Should -BeTrue
334+
335+
# Step 7: Get the login object for final verification
336+
$retrievedLogin = Get-SqlDscLogin -ServerObject $script:serverObject -Name $lifecycleLoginName
337+
$retrievedLogin.Name | Should -Be $lifecycleLoginName
338+
$retrievedLogin.LoginType | Should -Be 'SqlLogin'
339+
}
340+
finally
341+
{
342+
# Clean up
343+
if (Test-SqlDscIsLogin -ServerObject $script:serverObject -Name $lifecycleLoginName)
344+
{
345+
$script:serverObject.Logins[$lifecycleLoginName].Drop()
346+
}
347+
}
348+
}
349+
}
222350
}
223351
}

0 commit comments

Comments
 (0)