Test/MSFT_xExchOwaVirtualDirectory.Integration.Tests.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
###NOTE: This test module requires use of credentials. The first run through of the tests will prompt for credentials from the logged on user.

Import-Module $PSScriptRoot\..\DSCResources\MSFT_xExchOwaVirtualDirectory\MSFT_xExchOwaVirtualDirectory.psm1
Import-Module $PSScriptRoot\..\Misc\xExchangeCommon.psm1 -Verbose:0
Import-Module $PSScriptRoot\xExchange.Tests.Common.psm1 -Verbose:0

#Check if Exchange is installed on this machine. If not, we can't run tests
[bool]$exchangeInstalled = IsSetupComplete

if ($exchangeInstalled)
{
    #Get required credentials to use for the test
    if ($null -eq $Global:ShellCredentials)
    {
        [PSCredential]$Global:ShellCredentials = Get-Credential -Message "Enter credentials for connecting a Remote PowerShell session to Exchange"
    }

    #Get the Server FQDN for using in URL's
    if ($null -eq $Global:ServerFqdn)
    {
        $Global:ServerFqdn = [System.Net.Dns]::GetHostByName($env:COMPUTERNAME).HostName
    }

    #Get the thumbprint to use for Lync integration
    if ($null -eq $Global:IMCertThumbprint)
    {
        $Global:IMCertThumbprint = Read-Host -Prompt "Enter the thumbprint of an Exchange certificate to use when enabling Lync integration"
    }

    Describe "Test Setting Properties with xExchOwaVirtualDirectory" {
        $testParams = @{
            Identity =  "$($env:COMPUTERNAME)\owa (Default Web Site)"
            Credential = $Global:ShellCredentials
            #AdfsAuthentication = $false #Don't test AdfsAuthentication changes in dedicated OWA tests, as they have to be done to ECP at the same time
            BasicAuthentication = $true
            ChangePasswordEnabled = $true
            DigestAuthentication = $false
            ExternalUrl = "https://$($Global:ServerFqdn)/owa"
            FormsAuthentication = $true
            InstantMessagingEnabled = $false
            InstantMessagingCertificateThumbprint = ''
            InstantMessagingServerName = ''
            InstantMessagingType = 'None'
            InternalUrl = "https://$($Global:ServerFqdn)/owa"     
            LogonPagePublicPrivateSelectionEnabled = $true
            LogonPageLightSelectionEnabled = $true   
            WindowsAuthentication = $false
            LogonFormat = 'PrincipalName'
            DefaultDomain = 'contoso.local'      
        }

        $expectedGetResults = @{
            Identity =  "$($env:COMPUTERNAME)\owa (Default Web Site)"
            BasicAuthentication = $true
            ChangePasswordEnabled = $true
            DigestAuthentication = $false
            ExternalUrl = "https://$($Global:ServerFqdn)/owa"
            FormsAuthentication = $true
            InstantMessagingEnabled = $false
            InstantMessagingCertificateThumbprint = ''
            InstantMessagingServerName = ''
            InstantMessagingType = 'None'
            InternalUrl = "https://$($Global:ServerFqdn)/owa"     
            LogonPagePublicPrivateSelectionEnabled = $true
            LogonPageLightSelectionEnabled = $true   
            WindowsAuthentication = $false
            LogonFormat = 'PrincipalName'
            DefaultDomain = 'contoso.local' 
        }

        Test-AllTargetResourceFunctions -Params $testParams -ContextLabel "Set standard parameters" -ExpectedGetResults $expectedGetResults


        $testParams = @{
            Identity =  "$($env:COMPUTERNAME)\owa (Default Web Site)"
            Credential = $Global:ShellCredentials
            BasicAuthentication = $false
            ChangePasswordEnabled = $false
            DigestAuthentication = $true
            ExternalUrl = ''
            FormsAuthentication = $false
            InstantMessagingEnabled = $true
            InstantMessagingCertificateThumbprint = $Global:IMCertThumbprint
            InstantMessagingServerName = $env:COMPUTERNAME
            InstantMessagingType = 'Ocs'
            InternalUrl = ''   
            LogonPagePublicPrivateSelectionEnabled = $false
            LogonPageLightSelectionEnabled = $false   
            WindowsAuthentication = $true 
            LogonFormat = 'FullDomain'
            DefaultDomain = ''      
        }

        $expectedGetResults = @{
            Identity =  "$($env:COMPUTERNAME)\owa (Default Web Site)"
            BasicAuthentication = $false
            ChangePasswordEnabled = $false
            DigestAuthentication = $true
            ExternalUrl = $null
            FormsAuthentication = $false
            InstantMessagingEnabled = $true
            InstantMessagingCertificateThumbprint = $Global:IMCertThumbprint
            InstantMessagingServerName = $env:COMPUTERNAME
            InstantMessagingType = 'Ocs'
            InternalUrl = $null  
            LogonPagePublicPrivateSelectionEnabled = $false
            LogonPageLightSelectionEnabled = $false   
            WindowsAuthentication = $true
            LogonFormat = 'FullDomain'
            DefaultDomain = ''    
        }

        Test-AllTargetResourceFunctions -Params $testParams -ContextLabel "Try with the opposite of each property value" -ExpectedGetResults $expectedGetResults


        #Set Authentication values back to default
        $testParams = @{
            Identity =  "$($env:COMPUTERNAME)\owa (Default Web Site)"
            Credential = $Global:ShellCredentials
            BasicAuthentication = $true
            DigestAuthentication = $false
            FormsAuthentication = $true                      
            WindowsAuthentication = $false        
        }

        $expectedGetResults = @{
            Identity =  "$($env:COMPUTERNAME)\owa (Default Web Site)"
            BasicAuthentication = $true
            DigestAuthentication = $false
            FormsAuthentication = $true                      
            WindowsAuthentication = $false   
        }

        Test-AllTargetResourceFunctions -Params $testParams -ContextLabel "Reset authentication to default" -ExpectedGetResults $expectedGetResults
    }
}
else
{
    Write-Verbose "Tests in this file require that Exchange is installed to be run."
}