PageRenderTime 36ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/UnitTests/Cmdlets/IaaS/Extensions/DSC/DscExtensionConfigurationParsingHelperTests.cs

https://gitlab.com/jslee1/azure-powershell
C# | 246 lines | 199 code | 25 blank | 22 comment | 1 complexity | 7fc4de7401f7ca8e5759ef6e08cc9a48 MD5 | raw file
  1. // ----------------------------------------------------------------------------------
  2. //
  3. // Copyright Microsoft Corporation
  4. // Licensed under the Apache License, Version 2.0 (the "License");
  5. // you may not use this file except in compliance with the License.
  6. // You may obtain a copy of the License at
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. // Unless required by applicable law or agreed to in writing, software
  9. // distributed under the License is distributed on an "AS IS" BASIS,
  10. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  11. // See the License for the specific language governing permissions and
  12. // limitations under the License.
  13. // ----------------------------------------------------------------------------------
  14. using System;
  15. using System.IO;
  16. using System.IO.Compression;
  17. using System.Linq;
  18. using Microsoft.WindowsAzure.Commands.Common.Extensions.DSC.Publish;
  19. using Microsoft.WindowsAzure.Commands.ServiceManagement.Test;
  20. using Xunit;
  21. namespace Microsoft.WindowsAzure.Commands.Common.Test.Extensions.DSC
  22. {
  23. /// <summary>
  24. /// Tests for DSC <see cref="ConfigurationParsingHelper"/> class.
  25. /// </summary>
  26. /// <remarks>
  27. /// ConfigurationParsingHelper.ParseConfiguration() API requires tests to be run in x64 host.
  28. /// </remarks>
  29. public class DscExtensionConfigurationParsingHelperTests
  30. {
  31. private const string CorporateClientConfigurationPath = @"Resources\DSC\Configurations\CorporateClientConfiguration.ps1";
  32. private const string DomainControllerConfigurationPath = @"Resources\DSC\Configurations\DomainControllerConfiguration.ps1";
  33. private const string ShMulptiConfigurationsPath = @"Resources\DSC\Configurations\SHMulptiConfigurations.ps1";
  34. private const string VisualStudioPath = @"Resources\DSC\Configurations\VisualStudio.ps1";
  35. private const string NameImportListInsideNodeConfigurationPath = @"Resources\DSC\Configurations\Dummy\NameImportListInsideNode.ps1";
  36. private const string NameImportListOutsideNodeConfigurationPath = @"Resources\DSC\Configurations\Dummy\NameImportListOutsideNode.ps1";
  37. private const string NameImportSingleInsideNodeConfigurationPath = @"Resources\DSC\Configurations\Dummy\NameImportSingleInsideNode.ps1";
  38. private const string NameImportSingleOutsideNodeConfigurationPath = @"Resources\DSC\Configurations\Dummy\NameImportSingleOutsideNode.ps1";
  39. private const string NameModuleImportSingleInsideNodeConfigurationPath = @"Resources\DSC\Configurations\Dummy\NameModuleImportSingleInsideNode.ps1";
  40. private const string ModuleImportListInsideNodeConfigurationPath = @"Resources\DSC\Configurations\Dummy\ModuleImportListInsideNode.ps1";
  41. private const string ModuleImportListOutsideNodeConfigurationPath = @"Resources\DSC\Configurations\Dummy\ModuleImportListOutsideNode.ps1";
  42. private const string ModuleImportSingleInsideNodeConfigurationPath = @"Resources\DSC\Configurations\Dummy\ModuleImportSingleInsideNode.ps1";
  43. private const string ModuleImportSingleOutsideNodeConfigurationPath = @"Resources\DSC\Configurations\Dummy\ModuleImportSingleOutsideNode.ps1";
  44. private const string IeeScGoodConfigurationPath = @"Resources\DSC\Configurations\IEEScGood.ps1";
  45. private const string IeeScBadConfigurationPath = @"Resources\DSC\Configurations\IEEScBad.ps1";
  46. private const string TestDscResourceModulesDirectory = @"azure-sdk-tools-dsc-test";
  47. private const string XDscResourcesArchivePath = @"Resources\DSC\DSC Resource Kit Wave 6 08282014.zip";
  48. private const string PsModulePathEnvVar = "PSModulePath";
  49. public DscExtensionConfigurationParsingHelperTests()
  50. {
  51. string testDscResourceModulesPath = Path.Combine(Path.GetTempPath(), TestDscResourceModulesDirectory);
  52. if (Directory.Exists(testDscResourceModulesPath))
  53. {
  54. // cleanup
  55. Directory.Delete(testDscResourceModulesPath, true);
  56. }
  57. // unpack xPSDSC resources
  58. ZipFile.ExtractToDirectory(XDscResourcesArchivePath, testDscResourceModulesPath);
  59. // Set $env:PSModulePath to include temp folder, so resources can be explored.
  60. string psModulePath = Environment.GetEnvironmentVariable(PsModulePathEnvVar);
  61. string newpsModulePath = psModulePath + ";" + testDscResourceModulesPath;
  62. Environment.SetEnvironmentVariable(PsModulePathEnvVar, newpsModulePath);
  63. }
  64. [Fact (Skip = "Tests fail in build system. Disable temporarily")]
  65. [Trait(Category.Functional, Category.BVT)]
  66. public void TestGetModuleNameForDscResourceXComputer()
  67. {
  68. string moduleName = ConfigurationParsingHelper.GetModuleNameForDscResource("MSFT_xComputer");
  69. Assert.Equal("xComputerManagement", moduleName);
  70. }
  71. [Fact (Skip = "Tests fail in build system. Disable temporarily")]
  72. [Trait(Category.Functional, Category.BVT)]
  73. public void TestGetModuleNameForDscResourceXadDomain()
  74. {
  75. string moduleName = ConfigurationParsingHelper.GetModuleNameForDscResource("MSFT_xADDomain");
  76. Assert.Equal("xActiveDirectory", moduleName);
  77. }
  78. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  79. [Trait(Category.Functional, Category.BVT)]
  80. public void TestExtractConfigurationNames1()
  81. {
  82. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(CorporateClientConfigurationPath);
  83. Assert.Equal(0, results.Errors.Count());
  84. Assert.Equal(1, results.RequiredModules.Count);
  85. Assert.Equal(true, results.RequiredModules.ContainsKey("xComputerManagement"));
  86. }
  87. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  88. [Trait(Category.Functional, Category.BVT)]
  89. public void TestExtractConfigurationNames2()
  90. {
  91. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(DomainControllerConfigurationPath);
  92. Assert.Equal(0, results.Errors.Count());
  93. Assert.Equal(2, results.RequiredModules.Count);
  94. Assert.Equal(true, results.RequiredModules.ContainsKey("xComputerManagement"));
  95. Assert.Equal(true, results.RequiredModules.ContainsKey("xActiveDirectory"));
  96. }
  97. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  98. [Trait(Category.Functional, Category.BVT)]
  99. public void TestExtractConfigurationNames3()
  100. {
  101. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(VisualStudioPath);
  102. Assert.Equal(0, results.Errors.Count());
  103. Assert.Equal(1, results.RequiredModules.Count);
  104. Assert.Equal(true, results.RequiredModules.ContainsKey("xPSDesiredStateConfiguration"));
  105. }
  106. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  107. [Trait(Category.Functional, Category.BVT)]
  108. public void TestExtractConfigurationNamesMulti()
  109. {
  110. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(ShMulptiConfigurationsPath);
  111. Assert.Equal(0, results.Errors.Count());
  112. Assert.Equal(3, results.RequiredModules.Count);
  113. Assert.Equal(true, results.RequiredModules.ContainsKey("xComputerManagement"));
  114. Assert.Equal(true, results.RequiredModules.ContainsKey("xNetworking"));
  115. Assert.Equal(true, results.RequiredModules.ContainsKey("xPSDesiredStateConfiguration"));
  116. }
  117. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  118. [Trait(Category.Functional, Category.BVT)]
  119. public void TestNameImportListInsideNode()
  120. {
  121. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(NameImportListInsideNodeConfigurationPath);
  122. Assert.Equal(0, results.Errors.Count());
  123. Assert.Equal(2, results.RequiredModules.Count);
  124. Assert.Equal(true, results.RequiredModules.ContainsKey("xComputerManagement"));
  125. Assert.Equal(true, results.RequiredModules.ContainsKey("xActiveDirectory"));
  126. }
  127. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  128. [Trait(Category.Functional, Category.BVT)]
  129. public void TestNameImportListOutsideNode()
  130. {
  131. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(NameImportListOutsideNodeConfigurationPath);
  132. Assert.Equal(0, results.Errors.Count());
  133. Assert.Equal(2, results.RequiredModules.Count);
  134. Assert.Equal(true, results.RequiredModules.ContainsKey("xComputerManagement"));
  135. Assert.Equal(true, results.RequiredModules.ContainsKey("xActiveDirectory"));
  136. }
  137. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  138. [Trait(Category.Functional, Category.BVT)]
  139. public void TestNameImportSingleInsideNode()
  140. {
  141. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(NameImportSingleInsideNodeConfigurationPath);
  142. Assert.Equal(0, results.Errors.Count());
  143. Assert.Equal(1, results.RequiredModules.Count);
  144. Assert.Equal(true, results.RequiredModules.ContainsKey("xComputerManagement"));
  145. }
  146. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  147. [Trait(Category.Functional, Category.BVT)]
  148. public void TestNameImportSingleOutsideNode()
  149. {
  150. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(NameImportSingleOutsideNodeConfigurationPath);
  151. Assert.Equal(0, results.Errors.Count());
  152. Assert.Equal(1, results.RequiredModules.Count);
  153. Assert.Equal(true, results.RequiredModules.ContainsKey("xComputerManagement"));
  154. }
  155. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  156. [Trait(Category.Functional, Category.BVT)]
  157. public void TestNameModuleImportSingleInsideNode()
  158. {
  159. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(NameModuleImportSingleInsideNodeConfigurationPath);
  160. Assert.Equal(0, results.Errors.Count());
  161. Assert.Equal(1, results.RequiredModules.Count);
  162. Assert.Equal(true, results.RequiredModules.ContainsKey("xComputerManagement"));
  163. }
  164. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  165. [Trait(Category.Functional, Category.BVT)]
  166. public void TestModuleImportListInsideNode()
  167. {
  168. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(ModuleImportListInsideNodeConfigurationPath);
  169. Assert.Equal(0, results.Errors.Count());
  170. Assert.Equal(2, results.RequiredModules.Count);
  171. Assert.Equal(true, results.RequiredModules.ContainsKey("xPSDesiredStateConfiguration"));
  172. Assert.Equal(true, results.RequiredModules.ContainsKey("xNetworking"));
  173. }
  174. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  175. [Trait(Category.Functional, Category.BVT)]
  176. public void TestModuleImportListOutsideNode()
  177. {
  178. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(ModuleImportListOutsideNodeConfigurationPath);
  179. Assert.Equal(0, results.Errors.Count());
  180. Assert.Equal(2, results.RequiredModules.Count);
  181. Assert.Equal(true, results.RequiredModules.ContainsKey("xPSDesiredStateConfiguration"));
  182. Assert.Equal(true, results.RequiredModules.ContainsKey("xNetworking"));
  183. }
  184. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  185. [Trait(Category.Functional, Category.BVT)]
  186. public void TestModuleImportSingleInsideNode()
  187. {
  188. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(ModuleImportSingleInsideNodeConfigurationPath);
  189. Assert.Equal(0, results.Errors.Count());
  190. Assert.Equal(1, results.RequiredModules.Count);
  191. Assert.Equal(true, results.RequiredModules.ContainsKey("xNetworking"));
  192. }
  193. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  194. [Trait(Category.Functional, Category.BVT)]
  195. public void TestModuleImportSingleOutsideNode()
  196. {
  197. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(ModuleImportSingleOutsideNodeConfigurationPath);
  198. Assert.Equal(0, results.Errors.Count());
  199. Assert.Equal(1, results.RequiredModules.Count);
  200. Assert.Equal(true, results.RequiredModules.ContainsKey("xNetworking"));
  201. }
  202. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  203. [Trait(Category.Functional, Category.BVT)]
  204. public void TestIeeScGood()
  205. {
  206. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(IeeScGoodConfigurationPath);
  207. Assert.Equal(0, results.Errors.Count());
  208. Assert.Equal(1, results.RequiredModules.Count);
  209. Assert.Equal(true, results.RequiredModules.ContainsKey("xSystemSecurity"));
  210. }
  211. [Fact(Skip = "Tests fail in build system. Disable temporarily")]
  212. [Trait(Category.Functional, Category.BVT)]
  213. public void TestIeeScBad()
  214. {
  215. ConfigurationParseResult results = ConfigurationParsingHelper.ParseConfiguration(IeeScBadConfigurationPath);
  216. Assert.Equal(0, results.Errors.Count());
  217. Assert.Equal(1, results.RequiredModules.Count);
  218. Assert.Equal(true, results.RequiredModules.ContainsKey("xSystemSecurity"));
  219. }
  220. }
  221. }