PageRenderTime 43ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/src/ServiceManagement/Sql/Commands.SqlDatabase.Test/FunctionalTests/DatabaseTest.cs

https://gitlab.com/jslee1/azure-powershell
C# | 213 lines | 139 code | 19 blank | 55 comment | 0 complexity | 52a5799d40b6dbb19c721695450b22ce 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.Globalization;
  16. using System.IO;
  17. using Microsoft.VisualStudio.TestTools.UnitTesting;
  18. using Microsoft.WindowsAzure.Commands.SqlDatabase.Test.Utilities;
  19. namespace Microsoft.WindowsAzure.Commands.SqlDatabase.Test.FunctionalTests
  20. {
  21. /// <summary>
  22. /// Functional tests for Database CRUD operations
  23. /// </summary>
  24. [TestClass]
  25. public class DatabaseTest
  26. {
  27. #region Test Script Locations
  28. /// <summary>
  29. /// Scripts for doing context creation tests
  30. /// </summary>
  31. private const string CreateContextScript = @"Database\CreateContext.ps1";
  32. /// <summary>
  33. /// Script for doing Create and Get database tests with SQL authentication
  34. /// </summary>
  35. private const string CreateScript = @"Database\CreateAndGetDatabase.ps1";
  36. /// <summary>
  37. /// Scripts for doing database update tests
  38. /// </summary>
  39. private const string UpdateScript = @"Database\UpdateDatabase.ps1";
  40. /// <summary>
  41. /// Scripts for doing delete database tests
  42. /// </summary>
  43. private const string DeleteScript = @"Database\DeleteDatabase.ps1";
  44. /// <summary>
  45. /// Tests for doing format validation tests
  46. /// </summary>
  47. private const string FormatValidationScript = @"Database\FormatValidation.ps1";
  48. /// <summary>
  49. /// Tests for doing import export tests
  50. /// </summary>
  51. private const string ImportExportScript = @"Database\ImportExportDatabase.ps1";
  52. #endregion
  53. /// <summary>
  54. /// The end point to use for the tests
  55. /// </summary>
  56. private const string LocalRdfeEndpoint = @"https://management.dev.mscds.com:12346/";
  57. /// <summary>
  58. /// Tests context creation
  59. /// </summary>
  60. [TestMethod]
  61. [TestCategory("Functional")]
  62. public void CreateContext()
  63. {
  64. string arguments = string.Format(
  65. CultureInfo.InvariantCulture,
  66. "-ManageUrl \"{0}\" -UserName \"{1}\" -Password \"{2}\" "
  67. + "-SubscriptionId \"{3}\" -SerializedCert \"{4}\" ",
  68. SqlDatabaseTestSettings.Instance.ManageUrl,
  69. SqlDatabaseTestSettings.Instance.UserName,
  70. SqlDatabaseTestSettings.Instance.Password,
  71. SqlDatabaseTestSettings.Instance.SubscriptionId,
  72. SqlDatabaseTestSettings.Instance.SerializedCert);
  73. bool testResult = PSScriptExecutor.ExecuteScript(
  74. DatabaseTest.CreateContextScript,
  75. arguments);
  76. Assert.IsTrue(testResult);
  77. }
  78. /// <summary>
  79. /// Tests creating a database using SQL authentication
  80. /// </summary>
  81. [TestMethod]
  82. [TestCategory("Functional")]
  83. public void CreateAndGetDatabase()
  84. {
  85. string arguments = string.Format(
  86. CultureInfo.InvariantCulture,
  87. "-Name \"{0}\" -ManageUrl \"{1}\" -UserName \"{2}\" -Password \"{3}\" "
  88. + "-ServerName \"{4}\" -SubscriptionID \"{5}\" -SerializedCert \"{6}\" "
  89. + "-Endpoint \"{7}\"",
  90. "testcreatedbfromcmdlet",
  91. SqlDatabaseTestSettings.Instance.ManageUrl,
  92. SqlDatabaseTestSettings.Instance.UserName,
  93. SqlDatabaseTestSettings.Instance.Password,
  94. SqlDatabaseTestSettings.Instance.ServerName,
  95. SqlDatabaseTestSettings.Instance.SubscriptionId,
  96. SqlDatabaseTestSettings.Instance.SerializedCert,
  97. LocalRdfeEndpoint);
  98. bool testResult = PSScriptExecutor.ExecuteScript(DatabaseTest.CreateScript, arguments);
  99. Assert.IsTrue(testResult);
  100. }
  101. /// <summary>
  102. /// Tests updating a database using SQL authentication
  103. /// </summary>
  104. [TestMethod]
  105. [TestCategory("Functional")]
  106. public void UpdateDatabase()
  107. {
  108. string arguments = string.Format(
  109. CultureInfo.InvariantCulture,
  110. "-Name \"{0}\" -ManageUrl \"{1}\" -UserName \"{2}\" -Password \"{3}\" "
  111. + "-ServerName \"{4}\" -SubscriptionID \"{5}\" -SerializedCert \"{6}\" "
  112. + "-Endpoint \"{7}\"",
  113. "testupdatedbfromcmdlet",
  114. SqlDatabaseTestSettings.Instance.ManageUrl,
  115. SqlDatabaseTestSettings.Instance.UserName,
  116. SqlDatabaseTestSettings.Instance.Password,
  117. SqlDatabaseTestSettings.Instance.ServerName,
  118. SqlDatabaseTestSettings.Instance.SubscriptionId,
  119. SqlDatabaseTestSettings.Instance.SerializedCert,
  120. LocalRdfeEndpoint);
  121. bool testResult = PSScriptExecutor.ExecuteScript(DatabaseTest.UpdateScript, arguments);
  122. Assert.IsTrue(testResult);
  123. }
  124. /// <summary>
  125. /// Tests removing a database using SQL authentication
  126. /// </summary>
  127. [TestMethod]
  128. [TestCategory("Functional")]
  129. public void DeleteDatabase()
  130. {
  131. string arguments = string.Format(
  132. CultureInfo.InvariantCulture,
  133. "-Name \"{0}\" -ManageUrl \"{1}\" -UserName \"{2}\" -Password \"{3}\" "
  134. + "-ServerName \"{4}\" -SubscriptionID \"{5}\" -SerializedCert \"{6}\" "
  135. + "-Endpoint \"{7}\"",
  136. "testDeletedbfromcmdlet",
  137. SqlDatabaseTestSettings.Instance.ManageUrl,
  138. SqlDatabaseTestSettings.Instance.UserName,
  139. SqlDatabaseTestSettings.Instance.Password,
  140. SqlDatabaseTestSettings.Instance.ServerName,
  141. SqlDatabaseTestSettings.Instance.SubscriptionId,
  142. SqlDatabaseTestSettings.Instance.SerializedCert,
  143. LocalRdfeEndpoint);
  144. bool testResult = PSScriptExecutor.ExecuteScript(DatabaseTest.DeleteScript, arguments);
  145. Assert.IsTrue(testResult);
  146. }
  147. /// <summary>
  148. /// Validates the object output format
  149. /// </summary>
  150. [TestMethod]
  151. [TestCategory("Functional")]
  152. public void OutputObjectFormatValidation()
  153. {
  154. string outputFile = Path.Combine(Directory.GetCurrentDirectory(), Guid.NewGuid() + ".txt");
  155. string arguments = string.Format(
  156. CultureInfo.InvariantCulture,
  157. "-Name \"{0}\" -ManageUrl \"{1}\" -UserName \"{2}\" -Password \"{3}\" -OutputFile \"{4}\"",
  158. "testFormatdbfromcmdlet",
  159. SqlDatabaseTestSettings.Instance.ManageUrl,
  160. SqlDatabaseTestSettings.Instance.UserName,
  161. SqlDatabaseTestSettings.Instance.Password,
  162. outputFile);
  163. bool testResult = PSScriptExecutor.ExecuteScript(DatabaseTest.FormatValidationScript, arguments);
  164. Assert.IsTrue(testResult);
  165. OutputFormatValidator.ValidateOutputFormat(outputFile, @"Database\ExpectedFormat.txt");
  166. }
  167. /// <summary>
  168. /// Runs the script to test the import and export functionality
  169. /// </summary>
  170. [TestMethod]
  171. [TestCategory("Functional")]
  172. public void ImportExportDatabase()
  173. {
  174. string outputFile = Path.Combine(Directory.GetCurrentDirectory(), Guid.NewGuid() + ".txt");
  175. string cmdlineArgs =
  176. "-UserName \"{0}\" -Password \"{1}\" -SubscriptionId \"{2}\" -SerializedCert \"{3}\" "
  177. + "-ContainerName \"{4}\" -StorageName \"{5}\" -StorageAccessKey \"{6}\" "
  178. + "-ServerLocation \"{7}\"";
  179. string arguments = string.Format(
  180. CultureInfo.InvariantCulture,
  181. cmdlineArgs,
  182. SqlDatabaseTestSettings.Instance.UserName,
  183. SqlDatabaseTestSettings.Instance.Password,
  184. SqlDatabaseTestSettings.Instance.SubscriptionId,
  185. SqlDatabaseTestSettings.Instance.SerializedCert,
  186. SqlDatabaseTestSettings.Instance.ContainerName,
  187. SqlDatabaseTestSettings.Instance.StorageName,
  188. SqlDatabaseTestSettings.Instance.AccessKey,
  189. SqlDatabaseTestSettings.Instance.ServerLocation);
  190. bool testResult = PSScriptExecutor.ExecuteScript(DatabaseTest.ImportExportScript, arguments);
  191. Assert.IsTrue(testResult);
  192. }
  193. }
  194. }