Tests/Integration/MSFT_SqlServerLogin.config.ps1
#region HEADER # Integration Test Config Template Version: 1.2.0 #endregion $configFile = [System.IO.Path]::ChangeExtension($MyInvocation.MyCommand.Path, 'json') if (Test-Path -Path $configFile) { <# Allows reading the configuration data from a JSON file, for real testing scenarios outside of the CI. #> $ConfigurationData = Get-Content -Path $configFile | ConvertFrom-Json } else { $ConfigurationData = @{ AllNodes = @( @{ NodeName = 'localhost' Admin_UserName = "$env:COMPUTERNAME\SqlAdmin" Admin_Password = 'P@ssw0rd1' ServerName = $env:COMPUTERNAME InstanceName = 'DSCSQLTEST' DscUser1Name = ('{0}\{1}' -f $env:COMPUTERNAME, 'DscUser1') DscUser1Type = 'WindowsUser' DscUser2Name = ('{0}\{1}' -f $env:COMPUTERNAME, 'DscUser2') DscUser2Type = 'WindowsUser' DscUser3Name = ('{0}\{1}' -f $env:COMPUTERNAME, 'DscUser3') DscUser3Type = 'WindowsUser' DscUser4Name = 'DscUser4' DscUser4Type = 'SqlLogin' DscSqlUsers1Name = ('{0}\{1}' -f $env:COMPUTERNAME, 'DscSqlUsers1') DscSqlUsers1Type = 'WindowsGroup' CertificateFile = $env:DscPublicCertificatePath } ) } } <# .SYNOPSIS Creates the logins that are dependencies. #> Configuration MSFT_SqlServerLogin_CreateDependencies_Config { Import-DscResource -ModuleName 'PSDscResources' node $AllNodes.NodeName { User 'CreateDscUser1' { Ensure = 'Present' UserName = Split-Path -Path $Node.DscUser1Name -Leaf # Only the password will be used of this credential object. Password = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) } User 'CreateDscUser2' { Ensure = 'Present' UserName = Split-Path -Path $Node.DscUser2Name -Leaf # Only the password will be used of this credential object. Password = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) } User 'CreateDscUser3' { Ensure = 'Present' UserName = Split-Path -Path $Node.DscUser3Name -Leaf # Only the password will be used of this credential object. Password = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) } Group 'CreateDscSqlUsers1' { Ensure = 'Present' GroupName = 'DscSqlUsers1' Members = @( Split-Path -Path $Node.DscUser1Name -Leaf Split-Path -Path $Node.DscUser2Name -Leaf ) DependsOn = @( '[User]CreateDscUser1' '[User]CreateDscUser2' ) } } } <# .SYNOPSIS Adds a Windows User login. #> Configuration MSFT_SqlServerLogin_AddLoginDscUser1_Config { Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { SqlServerLogin 'Integration_Test' { Ensure = 'Present' Name = $Node.DscUser1Name LoginType = $Node.DscUser1Type ServerName = $Node.ServerName InstanceName = $Node.InstanceName PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) } } } <# .SYNOPSIS Adds a second Windows User login. #> Configuration MSFT_SqlServerLogin_AddLoginDscUser2_Config { Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { SqlServerLogin 'Integration_Test' { Ensure = 'Present' Name = $Node.DscUser2Name LoginType = $Node.DscUser2Type ServerName = $Node.ServerName InstanceName = $Node.InstanceName PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) } } } <# .SYNOPSIS Adds a third Windows User login, and creates it as disabled. #> Configuration MSFT_SqlServerLogin_AddLoginDscUser3_Disabled_Config { Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { SqlServerLogin 'Integration_Test' { Ensure = 'Present' Name = $Node.DscUser3Name LoginType = $Node.DscUser3Type Disabled = $true ServerName = $Node.ServerName InstanceName = $Node.InstanceName PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) } } } <# .SYNOPSIS Adds a SQL login. #> Configuration MSFT_SqlServerLogin_AddLoginDscUser4_Config { Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { SqlServerLogin 'Integration_Test' { Ensure = 'Present' Name = $Node.DscUser4Name LoginType = $Node.DscUser4Type LoginMustChangePassword = $false LoginPasswordExpirationEnabled = $true LoginPasswordPolicyEnforced = $true LoginCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) ServerName = $Node.ServerName InstanceName = $Node.InstanceName PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) } } } <# .SYNOPSIS Adds a Windows Group login. #> Configuration MSFT_SqlServerLogin_AddLoginDscSqlUsers1_Config { Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { SqlServerLogin 'Integration_Test' { Ensure = 'Present' Name = $Node.DscSqlUsers1Name LoginType = $Node.DscSqlUsers1Type ServerName = $Node.ServerName InstanceName = $Node.InstanceName PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) } } } <# .SYNOPSIS Removes the third Windows User login that was created. #> Configuration MSFT_SqlServerLogin_RemoveLoginDscUser3_Config { Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { SqlServerLogin 'Integration_Test' { Ensure = 'Absent' Name = $Node.DscUser3Name LoginType = $Node.DscUser3Type ServerName = $Node.ServerName InstanceName = $Node.InstanceName PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Admin_UserName, (ConvertTo-SecureString -String $Node.Admin_Password -AsPlainText -Force)) } } } |