fiftyone.geolocation 4.2.1 → 4.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/.gitmodules +3 -0
  2. package/README.md +2 -2
  3. package/ci/README.md +2 -0
  4. package/ci/build-and-test.yml +34 -0
  5. package/ci/common-ci/.github/labels.yml +59 -0
  6. package/ci/common-ci/.github/workflows/sync-labels.yml +49 -0
  7. package/ci/common-ci/CiTips.md +34 -0
  8. package/ci/common-ci/GitVersion.yml +18 -0
  9. package/ci/common-ci/LICENSE +286 -0
  10. package/ci/common-ci/README.md +365 -0
  11. package/ci/common-ci/build-and-test.yml +65 -0
  12. package/ci/common-ci/check-merge-commit-format.yml +50 -0
  13. package/ci/common-ci/cloud-release-config.json +51 -0
  14. package/ci/common-ci/create-tag.yml +41 -0
  15. package/ci/common-ci/deploy.yml +25 -0
  16. package/ci/common-ci/dotnet/shared-code-signing-steps.yml +20 -0
  17. package/ci/common-ci/dotnet/shared-extract-and-publish-packages.yml +29 -0
  18. package/ci/common-ci/go/shared-go-list-stage.yml +64 -0
  19. package/ci/common-ci/java/readme.md +22 -0
  20. package/ci/common-ci/java/shared-code-signing-steps.yml +17 -0
  21. package/ci/common-ci/node/shared-extract-and-publish-packages.yml +26 -0
  22. package/ci/common-ci/php/readme.md +15 -0
  23. package/ci/common-ci/release-config-schema.json +52 -0
  24. package/ci/common-ci/release-config-template.json +310 -0
  25. package/ci/common-ci/release-config.json +128 -0
  26. package/ci/common-ci/release-process.drawio +165 -0
  27. package/ci/common-ci/release-process.png +0 -0
  28. package/ci/common-ci/scripts/azure/checkSlot.ps1 +28 -0
  29. package/ci/common-ci/scripts/modules/51DAuthorizationModule/51DAuthorizationModule.Tests.ps1 +1 -0
  30. package/ci/common-ci/scripts/modules/51DAuthorizationModule/51DAuthorizationModule.psm1 +16 -0
  31. package/ci/common-ci/scripts/modules/51DBuildModule/51DBuildModule.Tests.ps1 +3 -0
  32. package/ci/common-ci/scripts/modules/51DBuildModule/51DBuildModule.psm1 +200 -0
  33. package/ci/common-ci/scripts/modules/51DDeployModule/51DDeployModule.psm1 +66 -0
  34. package/ci/common-ci/scripts/modules/51DDownloadDataFileModule/51DDownloadDataFileModule.psm1 +58 -0
  35. package/ci/common-ci/scripts/modules/51DEnvironmentModule/51DEnvironmentModule.Tests.ps1 +25 -0
  36. package/ci/common-ci/scripts/modules/51DEnvironmentModule/51DEnvironmentModule.psm1 +22 -0
  37. package/ci/common-ci/scripts/modules/51DErrorHandleModule/51DErrorHandleModule.Tests.ps1 +1 -0
  38. package/ci/common-ci/scripts/modules/51DErrorHandleModule/51DErrorHandleModule.psm1 +41 -0
  39. package/ci/common-ci/scripts/modules/51DGitModule/51DGitModule.Tests.ps1 +5 -0
  40. package/ci/common-ci/scripts/modules/51DGitModule/51DGitModule.psm1 +698 -0
  41. package/ci/common-ci/scripts/modules/51DPackageModule/51DPackageModule.Tests.ps1 +842 -0
  42. package/ci/common-ci/scripts/modules/51DPackageModule/51DPackageModule.psm1 +926 -0
  43. package/ci/common-ci/scripts/modules/51DPipelineModule/51DPipelineModule.Tests.ps1 +1 -0
  44. package/ci/common-ci/scripts/modules/51DPipelineModule/51DPipelineModule.psm1 +87 -0
  45. package/ci/common-ci/scripts/modules/51DPullRequestModule/51DPullRequestModule.Tests.ps1 +194 -0
  46. package/ci/common-ci/scripts/modules/51DPullRequestModule/51DPullRequestModule.psm1 +653 -0
  47. package/ci/common-ci/scripts/modules/51DReleaseModule/51DReleaseModule.Tests.ps1 +277 -0
  48. package/ci/common-ci/scripts/modules/51DReleaseModule/51DReleaseModule.psm1 +554 -0
  49. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/51DReleaseTestEnvModule.Tests.ps1 +1141 -0
  50. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/51DReleaseTestEnvModule.psd1 +0 -0
  51. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/51DReleaseTestEnvModule.psm1 +1465 -0
  52. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/ConfigurationVerifier.Tests.ps1 +318 -0
  53. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/ConfigurationVerifier.psm1 +344 -0
  54. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/ReleaseVerifier.Tests.ps1 +1186 -0
  55. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/ReleaseVerifier.psm1 +900 -0
  56. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/SharedVariables.psm1 +139 -0
  57. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/c-test-env-config.json +268 -0
  58. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/dotnet-deploy-test-env-config.json +700 -0
  59. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/dotnet-test-env-config.json +533 -0
  60. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/go-deploy-test-env-config.json +290 -0
  61. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/go-test-env-config.json +260 -0
  62. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/java-deploy-test-env-config.json +511 -0
  63. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/java-test-env-config.json +388 -0
  64. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/node-deploy-test-env-config.json +419 -0
  65. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/node-test-env-config.json +329 -0
  66. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/php-test-env-config.json +540 -0
  67. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/python-deploy-test-env-config.json +411 -0
  68. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/python-test-env-config.json +321 -0
  69. package/ci/common-ci/scripts/modules/51DReleaseTestEnvModule/config/test-env-config.json +457 -0
  70. package/ci/common-ci/scripts/modules/51DRestModule/51DRestModule.psm1 +38 -0
  71. package/ci/common-ci/scripts/modules/AzurePortalModules/51DApplicationInsightsModule/51DApplicationInsightsModule.psm1 +104 -0
  72. package/ci/common-ci/scripts/modules/AzurePortalModules/51DChecksModule/51DChecksModule.psm1 +68 -0
  73. package/ci/common-ci/scripts/modules/AzurePortalModules/51DCloudModule/51DCloudModule.psm1 +155 -0
  74. package/ci/common-ci/scripts/modules/AzurePortalModules/51DConnectAzureModule/51DConnectAzureModule.psm1 +45 -0
  75. package/ci/common-ci/scripts/modules/AzurePortalModules/51DSSLBindingsModule/51DSSLBIndingsModule.psm1 +100 -0
  76. package/ci/common-ci/scripts/modules/AzurePortalModules/51DStagingSlotModule/51DStagingSlotModule.psm1 +50 -0
  77. package/ci/common-ci/scripts/modules/AzurePortalModules/51DStorageAccountModule/51DStorageAccountModule.psm1 +248 -0
  78. package/ci/common-ci/scripts/modules/AzurePortalModules/51DTrafficManagerModule/51DTrafficManagerModule.psm1 +58 -0
  79. package/ci/common-ci/shared-auto-complete-pr-stage.yml +61 -0
  80. package/ci/common-ci/shared-create-tag-job.yml +23 -0
  81. package/ci/common-ci/shared-docker-build-steps.yml +34 -0
  82. package/ci/common-ci/shared-docker-push-steps.yml +32 -0
  83. package/ci/common-ci/shared-docker-test-http-steps.yml +69 -0
  84. package/ci/common-ci/shared-git-tag-job.yml +38 -0
  85. package/ci/common-ci/shared-git-version-job.yml +71 -0
  86. package/ci/common-ci/shared-publish-github-stage.yml +107 -0
  87. package/ci/common-ci/shared-submodule-trigger-stage.yml +110 -0
  88. package/ci/common-ci/shared-variables.yml +3 -0
  89. package/ci/common-ci/trigger-release-apis.yml +39 -0
  90. package/ci/create-packages.yml +109 -0
  91. package/ci/deploy-external.yml +55 -0
  92. package/ci/deploy-internal.yml +50 -0
  93. package/ci/shared-build-and-test-platforms.yml +26 -0
  94. package/ci/shared-build-and-test-stage.yml +128 -0
  95. package/ci/shared-variables.yml +7 -0
  96. package/ci/submodule-trigger.yml +12 -0
  97. package/docs/Doxyfile +3 -3
  98. package/docs/DoxygenLayout.xml +1 -1
  99. package/examples/examples.test.js +3 -3
  100. package/geoLocationPipelineBuilder.js +16 -13
  101. package/package.json +14 -6
  102. package/setup.js +1 -0
  103. package/tests/geoLocationCloud.test.js +192 -0
  104. package/tsconfig.json +21 -0
  105. package/types/geoLocationCloud.d.ts +7 -0
  106. package/types/geoLocationPipelineBuilder.d.ts +17 -0
  107. package/types/index.d.ts +2 -0
  108. package/build-and-test.yml +0 -112
  109. package/publish-packages.yml +0 -87
@@ -0,0 +1,1141 @@
1
+ # All tests for 'Clear-TestEnvironment' function
2
+ Describe 'Clear-TestEnvironment' {
3
+ It 'clear all repositories, except mandatory repository' {
4
+ # Mock response for getting all repositories
5
+ Mock Invoke-WebRequest {
6
+ return @{
7
+ StatusCode = 200
8
+ content = '{
9
+ "value": [
10
+ {
11
+ "name": "MandatoryRepository"
12
+ },
13
+ {
14
+ "name": "repo1"
15
+ }
16
+ ]
17
+ }'
18
+ }
19
+ } `
20
+ -ParameterFilter {
21
+ $URI -match ".*repositories.*" -and $Method -eq "GET"
22
+ } `
23
+ -ModuleName 51DReleaseTestEnvModule
24
+
25
+ # Mock reponse for deleting a repository
26
+ Mock Invoke-WebRequest {
27
+ return @{
28
+ StatusCode = 200
29
+ }
30
+ } `
31
+ -ParameterFilter {
32
+ $URI -match ".*repositories/.*\?.*" `
33
+ -and $Method -eq "DELETE"
34
+ } `
35
+ -ModuleName 51DReleaseTestEnvModule
36
+
37
+ Mock Remove-AllDefinitions { return $true } `
38
+ -ModuleName 51DReleaseTestEnvModule
39
+ Mock Remove-AllPolicies { return $true } `
40
+ -ModuleName 51DReleaseTestEnvModule
41
+
42
+ # Clear the test environment
43
+ $result = Clear-TestEnvironment -Force
44
+ $result | Should -BeExactly $true
45
+ }
46
+
47
+ It 'fails to clear all repositories' {
48
+ # Mock response for getting all repositories
49
+ Mock Invoke-WebRequest {
50
+ return @{
51
+ StatusCode = 200
52
+ content = '{
53
+ "value": [
54
+ {
55
+ "name": "MandatoryRepository"
56
+ },
57
+ {
58
+ "name": "repo1"
59
+ }
60
+ ]
61
+ }'
62
+ }
63
+ } `
64
+ -ParameterFilter {
65
+ $URI -match ".*repositories.*" -and $Method -eq "GET"
66
+ } `
67
+ -ModuleName 51DReleaseTestEnvModule
68
+
69
+ # Mock reponse for deleting a repository
70
+ Mock Invoke-WebRequest {
71
+ return @{
72
+ StatusCode = 500
73
+ }
74
+ } `
75
+ -ParameterFilter {
76
+ $URI -match ".*repositories/.*\?.*" `
77
+ -and $Method -eq "DELETE"
78
+ } `
79
+ -ModuleName 51DReleaseTestEnvModule
80
+
81
+ # Clear the test environment
82
+ { Clear-TestEnvironment -Force } | Should -Throw
83
+ }
84
+
85
+ It 'fails to get all repositories before the clearance' {
86
+ # Mock response for getting all repositories
87
+ Mock Invoke-WebRequest {
88
+ return @{
89
+ StatusCode = 500
90
+ }
91
+ } `
92
+ -ParameterFilter {
93
+ $URI -match ".*repositories.*" -and $Method -eq "GET"
94
+ } `
95
+ -ModuleName 51DReleaseTestEnvModule
96
+
97
+ # Mock reponse for deleting a repository
98
+ Mock Invoke-WebRequest {
99
+ return @{
100
+ StatusCode = 200
101
+ }
102
+ } `
103
+ -ParameterFilter {
104
+ $URI -match ".*repositories/.*\?.*" `
105
+ -and $Method -eq "DELETE"
106
+ } `
107
+ -ModuleName 51DReleaseTestEnvModule
108
+
109
+ # Clear the test environment
110
+ { Clear-TestEnvironment -Force } | Should -Throw
111
+ }
112
+
113
+ It 'fails to clear all definitions' {
114
+ # Mock response for getting all repositories
115
+ Mock Invoke-WebRequest {
116
+ return @{
117
+ StatusCode = 200
118
+ content = '{
119
+ "value": [
120
+ {
121
+ "name": "MandatoryRepository"
122
+ },
123
+ {
124
+ "name": "repo1"
125
+ }
126
+ ]
127
+ }'
128
+ }
129
+ } `
130
+ -ParameterFilter {
131
+ $URI -match ".*repositories.*" -and $Method -eq "GET"
132
+ } `
133
+ -ModuleName 51DReleaseTestEnvModule
134
+
135
+ # Mock reponse for deleting a repository
136
+ Mock Invoke-WebRequest {
137
+ return @{
138
+ StatusCode = 200
139
+ }
140
+ } `
141
+ -ParameterFilter {
142
+ $URI -match ".*repositories/.*\?.*" `
143
+ -and $Method -eq "DELETE"
144
+ } `
145
+ -ModuleName 51DReleaseTestEnvModule
146
+
147
+ Mock Remove-AllDefinitions { return $false } `
148
+ -ModuleName 51DReleaseTestEnvModule
149
+
150
+ # Clear the test environment
151
+ $result = Clear-TestEnvironment -Force
152
+ $result | Should -BeExactly $false
153
+ }
154
+
155
+ It 'Fails to clear all added "Required Reviewers" cross-repository policies' {
156
+ # Mock response for getting all repositories
157
+ Mock Invoke-WebRequest {
158
+ return @{
159
+ StatusCode = 200
160
+ content = '{
161
+ "value": [
162
+ {
163
+ "name": "MandatoryRepository"
164
+ },
165
+ {
166
+ "name": "repo1"
167
+ }
168
+ ]
169
+ }'
170
+ }
171
+ } `
172
+ -ParameterFilter {
173
+ $URI -match ".*repositories.*" -and $Method -eq "GET"
174
+ } `
175
+ -ModuleName 51DReleaseTestEnvModule
176
+
177
+ # Mock reponse for deleting a repository
178
+ Mock Invoke-WebRequest {
179
+ return @{
180
+ StatusCode = 200
181
+ }
182
+ } `
183
+ -ParameterFilter {
184
+ $URI -match ".*repositories/.*\?.*" `
185
+ -and $Method -eq "DELETE"
186
+ } `
187
+ -ModuleName 51DReleaseTestEnvModule
188
+
189
+ Mock Remove-AllDefinitions { return $true } `
190
+ -ModuleName 51DReleaseTestEnvModule
191
+ Mock Remove-AllPolicies { return $false } `
192
+ -ModuleName 51DReleaseTestEnvModule
193
+
194
+ # Clear the test environment
195
+ $result = Clear-TestEnvironment -Force
196
+ $result | Should -BeExactly $false
197
+ }
198
+ }
199
+
200
+ # All tests for 'New-TestEnvironment' function
201
+ Describe 'New-TestEnvironment' {
202
+ It 'create full environment' {
203
+ Mock Test-Path { return $true } `
204
+ -ModuleName 51DReleaseTestEnvModule
205
+ Mock Get-Content { return 'testing' } `
206
+ -ModuleName 51DReleaseTestEnvModule
207
+ Mock ConvertFrom-Json { return '{}' } `
208
+ -ModuleName 51DReleaseTestEnvModule
209
+ Mock Test-ConfigFile { return $true } `
210
+ -ModuleName 51DReleaseTestEnvModule
211
+ Mock Add-Repositories { return $true } `
212
+ -ModuleName 51DReleaseTestEnvModule
213
+ Mock Add-Definitions { return $true } `
214
+ -ModuleName 51DReleaseTestEnvModule
215
+ Mock Add-BuildTriggers { return $true } `
216
+ -ModuleName 51DReleaseTestEnvModule
217
+ Mock Add-Policies { return $true } `
218
+ -ModuleName 51DReleaseTestEnvModule
219
+ Mock Add-PullRequests { return $true } `
220
+ -ModuleName 51DReleaseTestEnvModule
221
+ $result = New-TestEnvironment -ConfigurationFile "//Non-Existent-Folder"
222
+ $result | Should -BeExactly $true
223
+ }
224
+
225
+ It 'non-existent configuration file' {
226
+ $result = New-TestEnvironment -ConfigurationFile "//Non-Existent-Folder"
227
+ $result | Should -BeExactly $false
228
+ }
229
+
230
+ It 'invalid JSON content in configuration file' {
231
+ Mock Test-Path { return $true } `
232
+ -ModuleName 51DReleaseTestEnvModule
233
+ Mock Get-Content { return 'testing' } `
234
+ -ModuleName 51DReleaseTestEnvModule
235
+ Mock ConvertFrom-Json { throw [ArgumentException]"Invalid JSON content" } `
236
+ -ModuleName 51DReleaseTestEnvModule
237
+ { New-TestEnvironment -ConfigurationFile "//Random_file" } | Should -Throw
238
+ }
239
+
240
+ # There is a separate test group to test the Test-ConfigFile function
241
+ It 'invalid settings in configuration file' {
242
+ Mock Test-Path { return $true } `
243
+ -ModuleName 51DReleaseTestEnvModule
244
+ Mock Get-Content { return 'testing' } `
245
+ -ModuleName 51DReleaseTestEnvModule
246
+ Mock ConvertFrom-Json { return '{}' } `
247
+ -ModuleName 51DReleaseTestEnvModule
248
+ Mock Test-ConfigFile { return $false } `
249
+ -ModuleName 51DReleaseTestEnvModule
250
+ $result = New-TestEnvironment -ConfigurationFile "//Testing-File"
251
+ $result | Should -BeExactly $false
252
+ }
253
+
254
+ It 'fails to fork a repository from production to test environment' {
255
+ Mock Test-Path { return $true } `
256
+ -ModuleName 51DReleaseTestEnvModule
257
+ Mock Get-Content { return 'testing' } `
258
+ -ModuleName 51DReleaseTestEnvModule
259
+ Mock ConvertFrom-Json { return '{}' } `
260
+ -ModuleName 51DReleaseTestEnvModule
261
+ Mock Test-ConfigFile { return $true } `
262
+ -ModuleName 51DReleaseTestEnvModule
263
+ Mock Add-Repositories { return $false } `
264
+ -ModuleName 51DReleaseTestEnvModule
265
+ $result = New-TestEnvironment -ConfigurationFile "//Testing-File"
266
+ $result | Should -BeExactly $false
267
+ }
268
+
269
+ It 'fails to create required definitions' {
270
+ Mock Test-Path { return $true } `
271
+ -ModuleName 51DReleaseTestEnvModule
272
+ Mock Get-Content { return 'testing' } `
273
+ -ModuleName 51DReleaseTestEnvModule
274
+ Mock ConvertFrom-Json { return '{}' } `
275
+ -ModuleName 51DReleaseTestEnvModule
276
+ Mock Test-ConfigFile { return $true } `
277
+ -ModuleName 51DReleaseTestEnvModule
278
+ Mock Add-Repositories { return $true } `
279
+ -ModuleName 51DReleaseTestEnvModule
280
+ Mock Add-Definitions { return $false } `
281
+ -ModuleName 51DReleaseTestEnvModule
282
+ $result = New-TestEnvironment -ConfigurationFile "//Testing-File"
283
+ $result | Should -BeExactly $false
284
+ }
285
+
286
+ It 'fails to create build triggers' {
287
+ Mock Test-Path { return $true } `
288
+ -ModuleName 51DReleaseTestEnvModule
289
+ Mock Get-Content { return 'testing' } `
290
+ -ModuleName 51DReleaseTestEnvModule
291
+ Mock ConvertFrom-Json { return '{}' } `
292
+ -ModuleName 51DReleaseTestEnvModule
293
+ Mock Test-ConfigFile { return $true } `
294
+ -ModuleName 51DReleaseTestEnvModule
295
+ Mock Add-Repositories { return $true } `
296
+ -ModuleName 51DReleaseTestEnvModule
297
+ Mock Add-Definitions { return $true } `
298
+ -ModuleName 51DReleaseTestEnvModule
299
+ Mock Add-BuildTriggers { return $false } `
300
+ -ModuleName 51DReleaseTestEnvModule
301
+ $result = New-TestEnvironment -ConfigurationFile "//Testing-File"
302
+ $result | Should -BeExactly $false
303
+ }
304
+
305
+ It 'fails to create required policies' {
306
+ Mock Test-Path { return $true } `
307
+ -ModuleName 51DReleaseTestEnvModule
308
+ Mock Get-Content { return 'testing' } `
309
+ -ModuleName 51DReleaseTestEnvModule
310
+ Mock ConvertFrom-Json { return '{}' } `
311
+ -ModuleName 51DReleaseTestEnvModule
312
+ Mock Test-ConfigFile { return $true } `
313
+ -ModuleName 51DReleaseTestEnvModule
314
+ Mock Add-Repositories { return $true } `
315
+ -ModuleName 51DReleaseTestEnvModule
316
+ Mock Add-Definitions { return $true } `
317
+ -ModuleName 51DReleaseTestEnvModule
318
+ Mock Add-BuildTriggers { return $true } `
319
+ -ModuleName 51DReleaseTestEnvModule
320
+ Mock Add-Policies { return $false } `
321
+ -ModuleName 51DReleaseTestEnvModule
322
+ $result = New-TestEnvironment -ConfigurationFile "//Testing-File"
323
+ $result | Should -BeExactly $false
324
+ }
325
+
326
+ It 'fails to create required pull requests' {
327
+ Mock Test-Path { return $true } `
328
+ -ModuleName 51DReleaseTestEnvModule
329
+ Mock Get-Content { return 'testing' } `
330
+ -ModuleName 51DReleaseTestEnvModule
331
+ Mock ConvertFrom-Json { return '{}' } `
332
+ -ModuleName 51DReleaseTestEnvModule
333
+ Mock Test-ConfigFile { return $true } `
334
+ -ModuleName 51DReleaseTestEnvModule
335
+ Mock Add-Repositories { return $true } `
336
+ -ModuleName 51DReleaseTestEnvModule
337
+ Mock Add-Definitions { return $true } `
338
+ -ModuleName 51DReleaseTestEnvModule
339
+ Mock Add-BuildTriggers { return $true } `
340
+ -ModuleName 51DReleaseTestEnvModule
341
+ Mock Add-Policies { return $true } `
342
+ -ModuleName 51DReleaseTestEnvModule
343
+ Mock Add-PullRequests { return $false } `
344
+ -ModuleName 51DReleaseTestEnvModule
345
+ $result = New-TestEnvironment -ConfigurationFile "//Non-Existent-Folder"
346
+ $result | Should -BeExactly $false
347
+ }
348
+ }
349
+
350
+ # All tests for 'Add-Repositories function
351
+ Describe 'Add-Repositories' {
352
+ It 'Add no repositories' {
353
+ $configJson = '{
354
+ "repositories": []
355
+ }'
356
+ $config = $configJson | Out-String | ConvertFrom-Json
357
+ $result = Add-Repositories -Configuration $config
358
+ $result | Should -BeExactly $true
359
+ }
360
+
361
+ It 'Add all repositories' {
362
+ Mock Add-Repository { return $true } `
363
+ -ModuleName 51DReleaseTestEnvModule
364
+ $configJson = '{
365
+ "repositories": {
366
+ "ci-test-repo-1": {},
367
+ "ci-test-repo-3": {}
368
+ }
369
+ }'
370
+ $config = $configJson | Out-String | ConvertFrom-Json
371
+ $result = Add-Repositories -Configuration $config
372
+ $result | Should -BeExactly $true
373
+ }
374
+
375
+ It 'Fails to add a repository' {
376
+ Mock Add-Repository { return $false } `
377
+ -ModuleName 51DReleaseTestEnvModule
378
+ $configJson = '{
379
+ "repositories": {
380
+ "ci-test-repo-1": {},
381
+ "ci-test-repo-3": {}
382
+ }
383
+ }'
384
+ $config = $configJson | Out-String | ConvertFrom-Json
385
+ $result = Add-Repositories -Configuration $config
386
+ $result | Should -BeExactly $false
387
+ }
388
+ }
389
+
390
+ # All tests for 'Add-Repository' function
391
+ Describe 'Add-Repository' {
392
+ It 'Add a repository' {
393
+ Mock Get-RepositoryId { return 1 } `
394
+ -ModuleName 51DReleaseTestEnvModule
395
+ Mock Get-ProductionProjectId { return 1 } `
396
+ -ModuleName 51DReleaseTestEnvModule
397
+ Mock Get-TestProjectId { return 1 } `
398
+ -ModuleName 51DReleaseTestEnvModule
399
+ Mock Get-ReviewerId { return 1 } `
400
+ -ModuleName 51DReleaseTestEnvModule
401
+ # Mock a successful web request
402
+ Mock Invoke-WebRequest {
403
+ return @{
404
+ StatusCode = 200
405
+ }
406
+ } `
407
+ -ParameterFilter {
408
+ $URI -match ".*repositories\?.*" `
409
+ -and $Method -eq "POST"
410
+ } `
411
+ -ModuleName 51DReleaseTestEnvModule
412
+ Mock Add-RepositoryBranches { return $true } `
413
+ -ModuleName 51DReleaseTestEnvModule
414
+ Mock Add-RepositoryTags { return $true } `
415
+ -ModuleName 51DReleaseTestEnvModule
416
+ Mock Update-RepositoryPackageVersions { return $true } `
417
+ -ModuleName 51DReleaseTestEnvModule
418
+ $result = Add-Repository -RepositoryName "TestRepo" -RepositoryConfig $(New-Object -TypeName Object)
419
+ $result | Should -BeExactly $true
420
+ }
421
+
422
+ It 'Non-existent reposity name' {
423
+ Mock Get-RepositoryId { return $null } `
424
+ -ModuleName 51DReleaseTestEnvModule
425
+ $result = Add-Repository -RepositoryName "TestRepo" -RepositoryConfig $(New-Object -TypeName Object)
426
+ $result | Should -BeExactly $false
427
+ }
428
+
429
+ It 'Fails to fork from production evironment' {
430
+ Mock Get-RepositoryId { return 1 } `
431
+ -ModuleName 51DReleaseTestEnvModule
432
+ # Mock a bad web request
433
+ Mock Invoke-WebRequest {
434
+ return @{
435
+ StatusCode = 500
436
+ }
437
+ } `
438
+ -ParameterFilter {
439
+ $URI -match ".*repositories\?.*" `
440
+ -and $Method -eq "POST"
441
+ } `
442
+ -ModuleName 51DReleaseTestEnvModule
443
+ { Add-Repository `
444
+ -RepositoryName "TestRepo" `
445
+ -RepositoryConfig $(New-Object `
446
+ -TypeName Object)} | Should -Throw
447
+ }
448
+
449
+ It 'Fails to add branches' {
450
+ Mock Get-RepositoryId { return 1 } `
451
+ -ModuleName 51DReleaseTestEnvModule
452
+ Mock Get-ProductionProjectId { return 1 } `
453
+ -ModuleName 51DReleaseTestEnvModule
454
+ Mock Get-TestProjectId { return 1 } `
455
+ -ModuleName 51DReleaseTestEnvModule
456
+ Mock Get-ReviewerId { return 1 } `
457
+ -ModuleName 51DReleaseTestEnvModule
458
+ # Mock a successful web request
459
+ Mock Invoke-WebRequest {
460
+ return @{
461
+ StatusCode = 200
462
+ }
463
+ } `
464
+ -ParameterFilter {
465
+ $URI -match ".*repositories\?.*" `
466
+ -and $Method -eq "POST"
467
+ } `
468
+ -ModuleName 51DReleaseTestEnvModule
469
+ Mock Add-RepositoryBranches { return $false } `
470
+ -ModuleName 51DReleaseTestEnvModule
471
+ $result = Add-Repository -RepositoryName "TestRepo" -RepositoryConfig $(New-Object -TypeName Object)
472
+ $result | Should -BeExactly $false
473
+ }
474
+
475
+ It 'Fails to add tags' {
476
+ Mock Get-RepositoryId { return 1 } `
477
+ -ModuleName 51DReleaseTestEnvModule
478
+ Mock Get-ProductionProjectId { return 1 } `
479
+ -ModuleName 51DReleaseTestEnvModule
480
+ Mock Get-TestProjectId { return 1 } `
481
+ -ModuleName 51DReleaseTestEnvModule
482
+ Mock Get-ReviewerId { return 1 } `
483
+ -ModuleName 51DReleaseTestEnvModule
484
+ # Mock a successful web request
485
+ Mock Invoke-WebRequest {
486
+ return @{
487
+ StatusCode = 200
488
+ }
489
+ } `
490
+ -ParameterFilter {
491
+ $URI -match ".*repositories\?.*" `
492
+ -and $Method -eq "POST"
493
+ } `
494
+ -ModuleName 51DReleaseTestEnvModule
495
+ Mock Add-RepositoryBranches { return $true } `
496
+ -ModuleName 51DReleaseTestEnvModule
497
+ Mock Add-RepositoryTags { return $false } `
498
+ -ModuleName 51DReleaseTestEnvModule
499
+ $result = Add-Repository -RepositoryName "TestRepo" -RepositoryConfig $(New-Object -TypeName Object)
500
+ $result | Should -BeExactly $false
501
+ }
502
+
503
+ It 'Fails to update package versions' {
504
+ Mock Get-RepositoryId { return 1 } `
505
+ -ModuleName 51DReleaseTestEnvModule
506
+ Mock Get-ProductionProjectId { return 1 } `
507
+ -ModuleName 51DReleaseTestEnvModule
508
+ Mock Get-TestProjectId { return 1 } `
509
+ -ModuleName 51DReleaseTestEnvModule
510
+ Mock Get-ReviewerId { return 1 } `
511
+ -ModuleName 51DReleaseTestEnvModule
512
+ # Mock a successful web request
513
+ Mock Invoke-WebRequest {
514
+ return @{
515
+ StatusCode = 200
516
+ }
517
+ } `
518
+ -ParameterFilter {
519
+ $URI -match ".*repositories\?.*" `
520
+ -and $Method -eq "POST"
521
+ } `
522
+ -ModuleName 51DReleaseTestEnvModule
523
+ Mock Add-RepositoryBranches { return $true } `
524
+ -ModuleName 51DReleaseTestEnvModule
525
+ Mock Add-RepositoryTags { return $true } `
526
+ -ModuleName 51DReleaseTestEnvModule
527
+ Mock Update-RepositoryPackageVersions { return $false } `
528
+ -ModuleName 51DReleaseTestEnvModule
529
+ $result = Add-Repository -RepositoryName "TestRepo" -RepositoryConfig $(New-Object -TypeName Object)
530
+ $result | Should -BeExactly $false
531
+ }
532
+ }
533
+
534
+ # All tests for Add-RepositoryBranches
535
+ Describe 'Add-RepositoryBranches' {
536
+ It 'Add all branches' {
537
+ Mock Add-RepositoryBranch { return $true } `
538
+ -ModuleName 51DReleaseTestEnvModule
539
+ $repoJson = '{
540
+ "branches": [
541
+ "branch1",
542
+ "branch2"
543
+ ]
544
+ }'
545
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
546
+ $result = Add-RepositoryBranches -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
547
+ $result | Should -BeExactly $true
548
+ }
549
+
550
+ It 'No branch to add' {
551
+ Mock Add-RepositoryBranch { return $true } `
552
+ -ModuleName 51DReleaseTestEnvModule
553
+ $repoJson = '{}'
554
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
555
+ $result = Add-RepositoryBranches -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
556
+ $result | Should -BeExactly $true
557
+ }
558
+
559
+ It 'Fails to add a branch' {
560
+ Mock Add-RepositoryBranch { return $false } `
561
+ -ModuleName 51DReleaseTestEnvModule
562
+ $repoJson = '{
563
+ "branches": [
564
+ "branch1",
565
+ "branch2"
566
+ ]
567
+ }'
568
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
569
+ $result = Add-RepositoryBranches -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
570
+ $result | Should -BeExactly $false
571
+ }
572
+ }
573
+
574
+ # All tests for Add-RepositoryBranch
575
+ Describe 'Add-RepositoryBranch' {
576
+ It 'Add a branch' {
577
+ Mock Get-Branch { return $('{ "objectId" : "0" }' | ConvertFrom-Json) } `
578
+ -ModuleName 51DReleaseTestEnvModule
579
+ Mock Invoke-WebRequest {
580
+ return @{
581
+ StatusCode = 200
582
+ }
583
+ } `
584
+ -ParameterFilter {
585
+ $URI -match ".*repositories/.*/refs\?.*" `
586
+ -and $Method -eq "POST"
587
+ } `
588
+ -ModuleName 51DReleaseTestEnvModule
589
+ $testBranch = '{ "base": "testSource", "name": "testTarget" }' | ConvertFrom-Json
590
+ $result = Add-RepositoryBranch -RepositoryName "TestRepo" -Branch $testBranch
591
+ $result | Should -BeExactly $true
592
+ }
593
+
594
+ It 'Fails to get default branch' {
595
+ Mock Get-Branch { return $null } `
596
+ -ModuleName 51DReleaseTestEnvModule
597
+ $testBranch = '{ "base": "testSource", "name": "testTarget" }' | ConvertFrom-Json
598
+ $result = Add-RepositoryBranch -RepositoryName "TestRepo" -Branch $testBranch
599
+ $result | Should -BeExactly $false
600
+ }
601
+
602
+ It 'Fails to create a branch' {
603
+ Mock Get-Branch { return $('{ "objectId" : "0" }' | ConvertFrom-Json) } `
604
+ -ModuleName 51DReleaseTestEnvModule
605
+ Mock Invoke-WebRequest {
606
+ return @{
607
+ StatusCode = 500
608
+ }
609
+ } `
610
+ -ParameterFilter {
611
+ $URI -match ".*repositories/.*/refs\?.*" `
612
+ -and $Method -eq "POST"
613
+ } `
614
+ -ModuleName 51DReleaseTestEnvModule
615
+ $testBranch = '{ "source": "testSource", "target": "testTarget" }' | ConvertFrom-Json
616
+ { Add-RepositoryBranch `
617
+ -RepositoryName "TestRepo" `
618
+ -Branch $testBranch } | Should -Throw
619
+ }
620
+ }
621
+
622
+ # All tests for Add-RepositoryTags
623
+ Describe 'Add-RepositoryTags' {
624
+ It 'Add all tags' {
625
+ Mock Add-RepositoryTag { return $true } `
626
+ -ModuleName 51DReleaseTestEnvModule
627
+ $repoJson = '{
628
+ "tags": [
629
+ "tag1",
630
+ "tag2"
631
+ ]
632
+ }'
633
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
634
+ $result = Add-RepositoryTags -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
635
+ $result | Should -BeExactly $true
636
+ }
637
+
638
+ It 'No tag to add' {
639
+ Mock Add-RepositoryTag { return $true } `
640
+ -ModuleName 51DReleaseTestEnvModule
641
+ $repoJson = '{}'
642
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
643
+ $result = Add-RepositoryTags -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
644
+ $result | Should -BeExactly $true
645
+ }
646
+
647
+ It 'Fails to add a tag' {
648
+ Mock Add-RepositoryTag { return $false } `
649
+ -ModuleName 51DReleaseTestEnvModule
650
+ $repoJson = '{
651
+ "tags": [
652
+ "tag1",
653
+ "tag2"
654
+ ]
655
+ }'
656
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
657
+ $result = Add-RepositoryTags -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
658
+ $result | Should -BeExactly $false
659
+ }
660
+ }
661
+
662
+ # All tests for Add-RepositoryTag
663
+ Describe 'Add-RepositoryTag' {
664
+ It 'Add a tag' {
665
+ Mock Get-MainBranch { return $true } `
666
+ -ModuleName 51DReleaseTestEnvModule
667
+ # Mock a successful web request
668
+ Mock Invoke-WebRequest {
669
+ return @{
670
+ StatusCode = 200
671
+ }
672
+ } `
673
+ -ParameterFilter {
674
+ $URI -match ".*repositories/.*/annotatedtags\?.*" `
675
+ -and $Method -eq "POST"
676
+ } `
677
+ -ModuleName 51DReleaseTestEnvModule
678
+ $result = Add-RepositoryTag -RepositoryName "TestRepo" -Tag "TestTag"
679
+ $result | Should -BeExactly $true
680
+ }
681
+
682
+ It 'Main branch does not exist' {
683
+ Mock Get-MainBranch { return $null } `
684
+ -ModuleName 51DReleaseTestEnvModule
685
+ $result = Add-RepositoryTag -RepositoryName "TestRepo" -Tag "TestTag"
686
+ $result | Should -BeExactly $false
687
+ }
688
+
689
+ It 'Main branch does not exist' {
690
+ Mock Get-MainBranch { return $true } `
691
+ -ModuleName 51DReleaseTestEnvModule
692
+ Mock Invoke-WebRequest {
693
+ return @{
694
+ StatusCode = 500
695
+ }
696
+ } `
697
+ -ParameterFilter {
698
+ $URI -match ".*repositories/.*/annotatedtags\?.*" `
699
+ -and $Method -eq "POST"
700
+ } `
701
+ -ModuleName 51DReleaseTestEnvModule
702
+ { Add-RepositoryTag `
703
+ -RepositoryName "TestRepo" `
704
+ -Tag "TestTag" } | Should -Throw
705
+ }
706
+ }
707
+
708
+ ## All tests for Update-RepositoryPackageVersion
709
+ ## NOTE: Currently not needed as updating versions does
710
+ ## not depend on original version number.
711
+ # Describe 'Update-RepositoryPackageVersion' {
712
+ # It 'Update all package versions for Java' {
713
+ # $false | Should -BeExactly $true
714
+ # }
715
+ #
716
+ # It 'Update all package versions for Dotnet' {
717
+ # $false | Should -BeExactly $true
718
+ # }
719
+ #
720
+ # It 'Update all package versions for Node' {
721
+ # $false | Should -BeExactly $true
722
+ # }
723
+ #
724
+ # It 'Update all package versions for Python' {
725
+ # $false | Should -BeExactly $true
726
+ # }
727
+ #
728
+ # # A place holder for word press
729
+ # It 'Fails to update package versions for WordPress' {
730
+ # $false | Should -BeExactly $true
731
+ # }
732
+ #
733
+ # It 'Fails to update all package versions for Java' {
734
+ # $false | Should -BeExactly $true
735
+ # }
736
+ #
737
+ # It 'Fails to update all package versions for Dotnet' {
738
+ # $false | Should -BeExactly $true
739
+ # }
740
+ #
741
+ # It 'Fails to update all package versions for Node' {
742
+ # $false | Should -BeExactly $true
743
+ # }
744
+ #
745
+ # It 'Fails to update all package versions for Python' {
746
+ # $false | Should -BeExactly $true
747
+ # }
748
+ # }
749
+
750
+ # All tests for Add-Definitions
751
+ Describe 'Add-Definitions' {
752
+ It 'Add all definitions' {
753
+ Mock Add-RepositoryDefinitions { return $true } `
754
+ -ModuleName 51DReleaseTestEnvModule
755
+ $configJson = '{
756
+ "repositories": {
757
+ "repo1": {
758
+ "definitions": [
759
+ "definition1"
760
+ ]
761
+ }
762
+ }
763
+ }'
764
+ $config = $configJson | Out-String | ConvertFrom-Json
765
+ $result = Add-Definitions -Configuration $config
766
+ $result | Should -BeExactly $true
767
+ }
768
+
769
+ It 'No definitions to add' {
770
+ Mock Add-RepositoryDefinitions { return $true } `
771
+ -ModuleName 51DReleaseTestEnvModule
772
+ $configJson = '{
773
+ "repositories": {
774
+ "repo1": {}
775
+ }
776
+ }'
777
+ $config = $configJson | Out-String | ConvertFrom-Json
778
+ $result = Add-Definitions -Configuration $config
779
+ $result | Should -BeExactly $true
780
+ }
781
+
782
+ It 'Fails to add a definition' {
783
+ Mock Add-RepositoryDefinitions { return $false } `
784
+ -ModuleName 51DReleaseTestEnvModule
785
+ $configJson = '{
786
+ "repositories": {
787
+ "repo1": {
788
+ "definitions": [
789
+ "definition1"
790
+ ]
791
+ }
792
+ }
793
+ }'
794
+ $config = $configJson | Out-String | ConvertFrom-Json
795
+ $result = Add-Definitions -Configuration $config
796
+ $result | Should -BeExactly $false
797
+ }
798
+ }
799
+
800
+ # All tetes for Add-RepositoryDefinitions
801
+ Describe 'Add-RepositoryDefinitions' {
802
+ It 'Add all repository definitions' {
803
+ Mock Add-RepositoryDefinition { return $true } `
804
+ -ModuleName 51DReleaseTestEnvModule
805
+ $repoJson = '{
806
+ "definitions": [
807
+ "definition1",
808
+ "definition2"
809
+ ]
810
+ }'
811
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
812
+ $result = Add-RepositoryDefinitions -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
813
+ $result | Should -BeExactly $true
814
+ }
815
+
816
+ It 'No definitions to add' {
817
+ Mock Add-RepositoryDefinition { return $true } `
818
+ -ModuleName 51DReleaseTestEnvModule
819
+ $repoJson = '{}'
820
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
821
+ $result = Add-RepositoryDefinitions -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
822
+ $result | Should -BeExactly $true
823
+ }
824
+
825
+ It 'Fails to add a definition' {
826
+ Mock Add-RepositoryDefinition { return $false } `
827
+ -ModuleName 51DReleaseTestEnvModule
828
+ $repoJson = '{
829
+ "definitions": [
830
+ "definition1",
831
+ "definition2"
832
+ ]
833
+ }'
834
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
835
+ $result = Add-RepositoryDefinitions -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
836
+ $result | Should -BeExactly $false
837
+ }
838
+ }
839
+
840
+ # All tests for Add-BuildTriggers
841
+ Describe 'Add-BuildTriggers' {
842
+ It 'Add all build triggers' {
843
+ Mock Add-RepositoryBuildTriggers { return $true } `
844
+ -ModuleName 51DReleaseTestEnvModule
845
+ $configJson = '{
846
+ "repositories": {
847
+ "repo1": {
848
+ "definitions": [
849
+ "definition1"
850
+ ]
851
+ }
852
+ }
853
+ }'
854
+ $config = $configJson | Out-String | ConvertFrom-Json
855
+ $result = Add-BuildTriggers -Configuration $config
856
+ $result | Should -BeExactly $true
857
+ }
858
+
859
+ It 'No definitions to add' {
860
+ Mock Add-RepositoryBuildTriggers { return $true } `
861
+ -ModuleName 51DReleaseTestEnvModule
862
+ $configJson = '{
863
+ "repositories": {
864
+ "repo1": {}
865
+ }
866
+ }'
867
+ $config = $configJson | Out-String | ConvertFrom-Json
868
+ $result = Add-BuildTriggers -Configuration $config
869
+ $result | Should -BeExactly $true
870
+ }
871
+
872
+ It 'Fails to add build triggers for a definition' {
873
+ Mock Add-RepositoryBuildTriggers { return $false } `
874
+ -ModuleName 51DReleaseTestEnvModule
875
+ $configJson = '{
876
+ "repositories": {
877
+ "repo1": {
878
+ "definitions": [
879
+ "definition1"
880
+ ]
881
+ }
882
+ }
883
+ }'
884
+ $config = $configJson | Out-String | ConvertFrom-Json
885
+ $result = Add-BuildTriggers -Configuration $config
886
+ $result | Should -BeExactly $false
887
+ }
888
+ }
889
+
890
+ # All tetes for Add-RepositoryDefinitions
891
+ Describe 'Add-RepositoryBuildTriggers' {
892
+ It 'Add all repository definitions' {
893
+ Mock Add-RepositoryDefinitionBuildTriggers { return $true } `
894
+ -ModuleName 51DReleaseTestEnvModule
895
+ $repoJson = '{
896
+ "definitions": [
897
+ "definition1",
898
+ "definition2"
899
+ ]
900
+ }'
901
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
902
+ $result = Add-RepositoryBuildTriggers -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
903
+ $result | Should -BeExactly $true
904
+ }
905
+
906
+ It 'No definitions to add' {
907
+ Mock Add-RepositoryDefinitionBuildTriggers { return $true } `
908
+ -ModuleName 51DReleaseTestEnvModule
909
+ $repoJson = '{}'
910
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
911
+ $result = Add-RepositoryBuildTriggers -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
912
+ $result | Should -BeExactly $true
913
+ }
914
+
915
+ It 'Fails to add build triggers for a definition' {
916
+ Mock Add-RepositoryDefinitionBuildTriggers { return $false } `
917
+ -ModuleName 51DReleaseTestEnvModule
918
+ $repoJson = '{
919
+ "definitions": [
920
+ "definition1",
921
+ "definition2"
922
+ ]
923
+ }'
924
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
925
+ $result = Add-RepositoryBuildTriggers -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
926
+ $result | Should -BeExactly $false
927
+ }
928
+ }
929
+
930
+ # All tests for Add-Policies
931
+ Describe 'Add-Policies' {
932
+ It 'Add all policies' {
933
+ Mock Add-RepositoryPolicy { return $true } `
934
+ -ModuleName 51DReleaseTestEnvModule
935
+ Mock Add-RepositoryPolicies { return $true } `
936
+ -ModuleName 51DReleaseTestEnvModule
937
+ $configJson = '{
938
+ "repositories": {
939
+ "repo1": {
940
+ "policies": [
941
+ "repoPolicy1"
942
+ ]
943
+ }
944
+ },
945
+ "policies": [
946
+ "policy1"
947
+ ]
948
+ }'
949
+ $config = $configJson | Out-String | ConvertFrom-Json
950
+ $result = Add-Policies -Configuration $config
951
+ $result | Should -BeExactly $true
952
+ }
953
+
954
+ It 'No policies to add' {
955
+ Mock Add-RepositoryPolicy { return $true } `
956
+ -ModuleName 51DReleaseTestEnvModule
957
+ Mock Add-RepositoryPolicies { return $true } `
958
+ -ModuleName 51DReleaseTestEnvModule
959
+ $configJson = '{
960
+ "repositories": {
961
+ "repo1": {}
962
+ }
963
+ }'
964
+ $config = $configJson | Out-String | ConvertFrom-Json
965
+ $result = Add-Policies -Configuration $config
966
+ $result | Should -BeExactly $true
967
+ }
968
+
969
+ It 'Fails to add a global policy' {
970
+ Mock Add-RepositoryPolicy { return $false } `
971
+ -ModuleName 51DReleaseTestEnvModule
972
+ $configJson = '{
973
+ "repositories": {
974
+ "repo1": {}
975
+ },
976
+ "policies": [
977
+ "policy1"
978
+ ]
979
+ }'
980
+ $config = $configJson | Out-String | ConvertFrom-Json
981
+ $result = Add-Policies -Configuration $config
982
+ $result | Should -BeExactly $false
983
+ }
984
+
985
+ It 'Fails to add repository policies' {
986
+ Mock Add-RepositoryPolicy { return $true } `
987
+ -ModuleName 51DReleaseTestEnvModule
988
+ Mock Add-RepositoryPolicies { return $false } `
989
+ -ModuleName 51DReleaseTestEnvModule
990
+ $configJson = '{
991
+ "repositories": {
992
+ "repo1": {
993
+ "policies": [
994
+ "repoPolicy1"
995
+ ]
996
+ }
997
+ },
998
+ "policies": [
999
+ "policy1"
1000
+ ]
1001
+ }'
1002
+ $config = $configJson | Out-String | ConvertFrom-Json
1003
+ $result = Add-Policies -Configuration $config
1004
+ $result | Should -BeExactly $false
1005
+ }
1006
+ }
1007
+
1008
+ # All tests for Add-RepositoryPolicies
1009
+ Describe 'Add-RepositoryPolicies' {
1010
+ It 'Add all repository policies' {
1011
+ Mock Add-RepositoryPolicy { return $true } `
1012
+ -ModuleName 51DReleaseTestEnvModule
1013
+ $repoJson = '{
1014
+ "policies": [
1015
+ "policy1",
1016
+ "policy2"
1017
+ ]
1018
+ }'
1019
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
1020
+ $result = Add-RepositoryPolicies -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
1021
+ $result | Should -BeExactly $true
1022
+ }
1023
+
1024
+ It 'No policies to add' {
1025
+ Mock Add-RepositoryPolicy { return $true } `
1026
+ -ModuleName 51DReleaseTestEnvModule
1027
+ $repoJson = '{}'
1028
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
1029
+ $result = Add-RepositoryPolicies -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
1030
+ $result | Should -BeExactly $true
1031
+ }
1032
+
1033
+ It 'Fails to add a policy' {
1034
+ Mock Add-RepositoryPolicy { return $false } `
1035
+ -ModuleName 51DReleaseTestEnvModule
1036
+ $repoJson = '{
1037
+ "policies": [
1038
+ "policy1",
1039
+ "policy2"
1040
+ ]
1041
+ }'
1042
+ $repoConfig = $repoJson | Out-String | ConvertFrom-Json
1043
+ $result = Add-RepositoryPolicies -RepositoryName "TestRepo" -RepositoryConfig $repoConfig
1044
+ $result | Should -BeExactly $false
1045
+ }
1046
+ }
1047
+
1048
+ # All tests for Add-PullRequests
1049
+ Describe 'Add-PullRequests' {
1050
+ It 'Add all pull requests' {
1051
+ Mock New-PullRequest { return $true } `
1052
+ -ModuleName 51DReleaseTestEnvModule
1053
+ Mock Add-PullRequestComment { return $true } `
1054
+ -ModuleName 51DReleaseTestEnvModule
1055
+ $configJson = '{
1056
+ "repositories": {
1057
+ "repo1": {
1058
+ "pullrequests": [
1059
+ {
1060
+ "source" : "sourceRef",
1061
+ "target" : "targetRef",
1062
+ "comment" : true
1063
+ }
1064
+ ]
1065
+ }
1066
+ }
1067
+ }'
1068
+ $config = $configJson | Out-String | ConvertFrom-Json
1069
+ $result = Add-PullRequests -Configuration $config
1070
+ $result | Should -BeExactly $true
1071
+ }
1072
+
1073
+ It 'No pull requests to add' {
1074
+ Mock New-PullRequest { return $('{"pullRequestId" : 1}' | ConvertFrom-Json) } `
1075
+ -ModuleName 51DReleaseTestEnvModule
1076
+ Mock Add-PullRequestComment { return $true } `
1077
+ -ModuleName 51DReleaseTestEnvModule
1078
+ $configJson = '{
1079
+ "repositories": {
1080
+ "repo1": {}
1081
+ }
1082
+ }'
1083
+ $config = $configJson | Out-String | ConvertFrom-Json
1084
+ $result = Add-PullRequests -Configuration $config
1085
+ $result | Should -BeExactly $true
1086
+ }
1087
+
1088
+ It 'Fails to add a pull request' {
1089
+ Mock New-PullRequest { return $null } `
1090
+ -ModuleName 51DReleaseTestEnvModule
1091
+ $configJson = '{
1092
+ "repositories": {
1093
+ "repo1": {
1094
+ "pullrequests": [
1095
+ {
1096
+ "source" : "sourceRef",
1097
+ "target" : "targetRef"
1098
+ }
1099
+ ]
1100
+ }
1101
+ }
1102
+ }'
1103
+ $config = $configJson | Out-String | ConvertFrom-Json
1104
+ $result = Add-PullRequests -Configuration $config
1105
+ $result | Should -BeExactly $false
1106
+ }
1107
+
1108
+ It 'Fails to add a pull request with comment' {
1109
+ Mock New-PullRequest { return $('{"pullRequestId" : 1}' | ConvertFrom-Json) } `
1110
+ -ModuleName 51DReleaseTestEnvModule
1111
+ Mock Add-PullRequestComment { return $false } `
1112
+ -ModuleName 51DReleaseTestEnvModule
1113
+ $configJson = '{
1114
+ "repositories": {
1115
+ "repo1": {
1116
+ "pullrequests": [
1117
+ {
1118
+ "source" : "sourceRef",
1119
+ "target" : "targetRef",
1120
+ "comment" : true
1121
+ }
1122
+ ]
1123
+ }
1124
+ }
1125
+ }'
1126
+ $config = $configJson | Out-String | ConvertFrom-Json
1127
+ $result = Add-PullRequests -Configuration $config
1128
+ $result | Should -BeExactly $false
1129
+ }
1130
+
1131
+ # Cannot vote using Rest APIs.
1132
+ It 'Fails to add a pull request with votes' {
1133
+ $true | Should -BeExactly $true
1134
+ }
1135
+
1136
+ # We don't check build validation because the pull request completion
1137
+ # is only performed once the build and test succeeded.
1138
+ It 'Fails to add a pull request with failed build validation' {
1139
+ $true | Should -BeExactly $true
1140
+ }
1141
+ }