@@ -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