-
Notifications
You must be signed in to change notification settings - Fork 2
/
autographps-sdk.tests.ps1
127 lines (106 loc) · 4.99 KB
/
autographps-sdk.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
# Copyright 2021, Adam Edwards
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
Describe "Poshgraph application" {
$manifestLocation = Join-Path $here 'autographps-sdk.psd1'
function Get-ModuleMetadataFromManifest ( $moduleName, $manifestPath ) {
# Load the module contents and deserialize it by evaluating
# it (module files are just hash tables expressed as PowerShell script)
$moduleContentLines = get-content $manifestPath
$moduleData = $moduleContentLines | out-string | iex
$moduleData['Name'] = $moduleName
$moduledata
}
$manifest = Get-ModuleMetadataFromManifest 'autographps-sdk' $manifestlocation
Context "When loading the manifest" {
It "should export the exact same set of functions as are in the set of expected functions" {
$expectedFunctions = @(
'Clear-GraphLog',
'Connect-GraphApi',
'Disconnect-GraphApi',
'Find-GraphLocalCertificate',
'Format-GraphLog',
'Get-GraphApplication',
'Get-GraphApplicationCertificate',
'Get-GraphApplicationConsent',
'Get-GraphApplicationServicePrincipal',
'Get-GraphConnection',
'Get-GraphCurrentConnection',
'Get-GraphError',
'Get-GraphResource',
'Get-GraphLog',
'Get-GraphLogOption',
'Get-GraphProfile',
'Get-GraphAccessToken',
'Invoke-GraphApiRequest',
'New-GraphApplication',
'New-GraphApplicationCertificate',
'New-GraphConnection',
'New-GraphLocalCertificate',
'Register-GraphApplication',
'Remove-GraphApplication',
'Remove-GraphApplicationCertificate',
'Remove-GraphApplicationConsent',
'Remove-GraphConnection',
'Remove-GraphResource',
'Select-GraphConnection',
'Select-GraphProfile',
'Set-GraphApplicationCertificate',
'Set-GraphApplicationConsent',
'Set-GraphConnectionStatus',
'Set-GraphLogOption',
'Test-Graph',
'Test-GraphSettings',
'Unregister-GraphApplication')
$verifiedExportsCount = 0
$expectedFunctions | foreach {
if ( $manifest.FunctionsToExport -contains $_ ) {
$verifiedExportsCount++
}
{ get-command $_ | out-null } | Should Not Throw
}
$manifest.FunctionsToExport.count | Should BeExactly $expectedFunctions.length
$verifiedExportsCount | Should BeExactly $expectedFunctions.length
}
It "should export the exact same set of aliases as are in the set of expected aliases" {
$expectedAliases = @('conga', 'fgl', 'gge', 'ggr', 'gcat', 'gcon', 'gcur', 'Get-GraphContent', 'ggl', 'scon')
$manifest.AliasesToExport.count | Should BeExactly $expectedAliases.length
$verifiedExportsCount = 0
$expectedAliases | foreach {
if ( $manifest.AliasesToExport -contains $_ ) {
$verifiedExportsCount++
}
$_ | get-alias | select -expandproperty resolvedcommandname | get-command | select -expandproperty module | select -expandproperty name | Should Be $manifest.Name
}
$verifiedExportsCount | Should BeExactly $expectedAliases.length
}
It "Should export the exact same set of variables that are in the set of expected variables" {
$expectedVariables = @(
'AutoGraphColorModePreference'
'GraphVerboseOutputPreference'
'LastGraphItems'
)
Compare-Object ($manifest.VariablesToExport | sort) ($expectedVariables | sort) | Should Be $null
}
It "Should have documentation for all commands" {
$missingCommands = & $psscriptroot/build/Get-DocumentationStatus.ps1 | Select-object -expandproperty CommandsMissingDocs
$missingCommands | Should BeNullOrEmpty
}
}
Context "When invoking the autographps-sdk application" {
It "Should be able to create a connection object" {
{ $connection = New-GraphConnection } | Should Not Throw
}
}
}