PageRenderTime 50ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/src/ServiceManagement/Services/Commands.Test/ExpressRoute/AzureDedicatedCircuitTests.cs

https://gitlab.com/jslee1/azure-powershell
C# | 316 lines | 251 code | 46 blank | 19 comment | 16 complexity | 03beb6acf4286a26d013b47e5047c018 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.Collections.Generic;
  16. using System.Linq;
  17. using System.Net;
  18. using System.Security.Cryptography.X509Certificates;
  19. using System.Threading;
  20. using System.Threading.Tasks;
  21. using Microsoft.WindowsAzure.Commands.ScenarioTest;
  22. using Xunit;
  23. using Microsoft.WindowsAzure.Commands.Common.Test.Mocks;
  24. using Microsoft.WindowsAzure.Commands.ExpressRoute;
  25. using Microsoft.WindowsAzure.Commands.Test.Utilities.Common;
  26. using Microsoft.WindowsAzure.Management.ExpressRoute;
  27. using Microsoft.WindowsAzure.Management.ExpressRoute.Models;
  28. using Moq;
  29. using Microsoft.Azure;
  30. using System.Management.Automation;
  31. namespace Microsoft.WindowsAzure.Commands.Test.ExpressRoute
  32. {
  33. public class AzureDedicatedCircuitTests : SMTestBase
  34. {
  35. private const string SubscriptionId = "foo";
  36. private static Mock<ExpressRouteManagementClient> InitExpressRouteManagementClient()
  37. {
  38. return
  39. (new Mock<ExpressRouteManagementClient>(
  40. new CertificateCloudCredentials(SubscriptionId, new X509Certificate2(new byte[] { })),
  41. new Uri("http://someValue")));
  42. }
  43. [Fact]
  44. [Trait(Category.AcceptanceType, Category.CheckIn)]
  45. public void NewAzureDedicatedCircuitSuccessful()
  46. {
  47. // Setup
  48. string circuitName = "TestCircuit";
  49. uint bandwidth = 10;
  50. string serviceProviderName = "TestProvider";
  51. string location = "us-west";
  52. string serviceKey = "aa28cd19-b10a-41ff-981b-53c6bbf15ead";
  53. BillingType billingType = BillingType.MeteredData;
  54. CircuitSku sku = CircuitSku.Premium;
  55. MockCommandRuntime mockCommandRuntime = new MockCommandRuntime();
  56. Mock<ExpressRouteManagementClient> client = InitExpressRouteManagementClient();
  57. var dcMock = new Mock<IDedicatedCircuitOperations>();
  58. DedicatedCircuitGetResponse expected =
  59. new DedicatedCircuitGetResponse()
  60. {
  61. DedicatedCircuit = new AzureDedicatedCircuit()
  62. {
  63. CircuitName = circuitName,
  64. Bandwidth = bandwidth,
  65. BillingType = billingType.ToString(),
  66. Location = location,
  67. ServiceProviderName = serviceProviderName,
  68. ServiceKey = serviceKey,
  69. ServiceProviderProvisioningState = ProviderProvisioningState.NotProvisioned,
  70. Status = DedicatedCircuitState.Enabled,
  71. Sku = sku
  72. },
  73. RequestId = "",
  74. StatusCode = new HttpStatusCode()
  75. };
  76. var tGet = new Task<DedicatedCircuitGetResponse>(() => expected);
  77. tGet.Start();
  78. ExpressRouteOperationStatusResponse expectedStatus = new ExpressRouteOperationStatusResponse()
  79. {
  80. HttpStatusCode = HttpStatusCode.OK,
  81. Data = serviceKey
  82. };
  83. var tNew = new Task<ExpressRouteOperationStatusResponse>(() => expectedStatus);
  84. tNew.Start();
  85. ExpressRouteOperationStatusResponse expectedUpdateStatus = new ExpressRouteOperationStatusResponse()
  86. {
  87. HttpStatusCode = HttpStatusCode.OK,
  88. Data = serviceKey
  89. };
  90. var tUpdate = new Task<ExpressRouteOperationStatusResponse>(() => expectedUpdateStatus);
  91. tUpdate.Start();
  92. dcMock.Setup(f => f.NewAsync(It.Is<DedicatedCircuitNewParameters>(x => x.Bandwidth == bandwidth &&
  93. x.CircuitName == circuitName && x.Location == location && x.ServiceProviderName == serviceProviderName),
  94. It.IsAny<CancellationToken>())).Returns((DedicatedCircuitNewParameters param, CancellationToken cancellation) => tNew);
  95. dcMock.Setup(f => f.GetAsync(It.Is<string>(sKey => sKey == serviceKey), It.IsAny<CancellationToken>())).Returns((string sKey, CancellationToken cancellation) => tGet);
  96. dcMock.Setup(f => f.UpdateAsync(It.Is<string>(sKey => sKey == serviceKey),
  97. It.Is<DedicatedCircuitUpdateParameters>(y => y.Bandwidth == bandwidth.ToString() && y.BillingType == billingType && y.Sku == sku.ToString()),
  98. It.IsAny<CancellationToken>())).Returns((string sKey, DedicatedCircuitUpdateParameters updateParam,
  99. CancellationToken cancellation) => tUpdate);
  100. client.SetupGet(f => f.DedicatedCircuits).Returns(dcMock.Object);
  101. NewAzureDedicatedCircuitCommand cmdlet = new NewAzureDedicatedCircuitCommand()
  102. {
  103. CircuitName = circuitName,
  104. Bandwidth = bandwidth,
  105. BillingType = billingType,
  106. Location = location,
  107. ServiceProviderName = serviceProviderName,
  108. Sku = sku,
  109. CommandRuntime = mockCommandRuntime,
  110. ExpressRouteClient = new ExpressRouteClient(client.Object)
  111. };
  112. cmdlet.ExecuteCmdlet();
  113. // Assert
  114. AzureDedicatedCircuit actual = mockCommandRuntime.OutputPipeline[0] as AzureDedicatedCircuit;
  115. Assert.Equal<string>(expected.DedicatedCircuit.CircuitName, actual.CircuitName);
  116. Assert.Equal<string>(expected.DedicatedCircuit.BillingType, actual.BillingType);
  117. Assert.Equal<uint>(expected.DedicatedCircuit.Bandwidth, actual.Bandwidth);
  118. Assert.Equal<string>(expected.DedicatedCircuit.Location, actual.Location);
  119. Assert.Equal<string>(expected.DedicatedCircuit.ServiceProviderName, actual.ServiceProviderName);
  120. Assert.Equal(expected.DedicatedCircuit.ServiceProviderProvisioningState, actual.ServiceProviderProvisioningState);
  121. Assert.Equal(expected.DedicatedCircuit.Status, actual.Status);
  122. Assert.Equal<string>(expected.DedicatedCircuit.ServiceKey, actual.ServiceKey);
  123. Assert.Equal<CircuitSku>(expected.DedicatedCircuit.Sku, actual.Sku);
  124. SetAzureDedicatedCircuitPropertiesCommand setCmdlet = new SetAzureDedicatedCircuitPropertiesCommand()
  125. {
  126. ServiceKey = Guid.Parse(actual.ServiceKey),
  127. Bandwidth = bandwidth,
  128. BillingType = billingType,
  129. Sku = sku,
  130. CommandRuntime = mockCommandRuntime,
  131. ExpressRouteClient = new ExpressRouteClient(client.Object)
  132. };
  133. setCmdlet.ExecuteCmdlet();
  134. actual = mockCommandRuntime.OutputPipeline[0] as AzureDedicatedCircuit;
  135. Assert.Equal<string>(expected.DedicatedCircuit.CircuitName, actual.CircuitName);
  136. Assert.Equal<string>(expected.DedicatedCircuit.BillingType, actual.BillingType);
  137. Assert.Equal<uint>(expected.DedicatedCircuit.Bandwidth, actual.Bandwidth);
  138. Assert.Equal<string>(expected.DedicatedCircuit.Location, actual.Location);
  139. Assert.Equal<string>(expected.DedicatedCircuit.ServiceProviderName, actual.ServiceProviderName);
  140. Assert.Equal(expected.DedicatedCircuit.ServiceProviderProvisioningState, actual.ServiceProviderProvisioningState);
  141. Assert.Equal(expected.DedicatedCircuit.Status, actual.Status);
  142. Assert.Equal<string>(expected.DedicatedCircuit.ServiceKey, actual.ServiceKey);
  143. Assert.Equal<CircuitSku>(expected.DedicatedCircuit.Sku, actual.Sku);
  144. }
  145. [Fact]
  146. [Trait(Category.AcceptanceType, Category.CheckIn)]
  147. public void GetAzureDedicatedCircuitSuccessful()
  148. {
  149. // Setup
  150. string circuitName = "TestCircuit";
  151. uint bandwidth = 10;
  152. string serviceProviderName = "TestProvider";
  153. string location = "us-west";
  154. string serviceKey = "aa28cd19-b10a-41ff-981b-53c6bbf15ead";
  155. BillingType billingType = BillingType.MeteredData;
  156. MockCommandRuntime mockCommandRuntime = new MockCommandRuntime();
  157. Mock<ExpressRouteManagementClient> client = InitExpressRouteManagementClient();
  158. var dcMock = new Mock<IDedicatedCircuitOperations>();
  159. DedicatedCircuitGetResponse expected =
  160. new DedicatedCircuitGetResponse()
  161. {
  162. DedicatedCircuit = new AzureDedicatedCircuit()
  163. {
  164. CircuitName = circuitName,
  165. Bandwidth = bandwidth,
  166. BillingType = billingType.ToString(),
  167. Location = location,
  168. ServiceProviderName = serviceProviderName,
  169. ServiceKey = serviceKey,
  170. ServiceProviderProvisioningState = ProviderProvisioningState.NotProvisioned,
  171. Status = DedicatedCircuitState.Enabled,
  172. },
  173. RequestId = "",
  174. StatusCode = new HttpStatusCode()
  175. };
  176. var t = new Task<DedicatedCircuitGetResponse>(() => expected);
  177. t.Start();
  178. dcMock.Setup(f => f.GetAsync(It.Is<string>(sKey => sKey == serviceKey), It.IsAny<CancellationToken>())).Returns((string sKey, CancellationToken cancellation) => t);
  179. client.SetupGet(f => f.DedicatedCircuits).Returns(dcMock.Object);
  180. GetAzureDedicatedCircuitCommand cmdlet = new GetAzureDedicatedCircuitCommand()
  181. {
  182. ServiceKey = Guid.Parse(serviceKey),
  183. CommandRuntime = mockCommandRuntime,
  184. ExpressRouteClient = new ExpressRouteClient(client.Object)
  185. };
  186. cmdlet.ExecuteCmdlet();
  187. // Assert
  188. AzureDedicatedCircuit actual = mockCommandRuntime.OutputPipeline[0] as AzureDedicatedCircuit;
  189. Assert.Equal<string>(expected.DedicatedCircuit.BillingType, actual.BillingType);
  190. Assert.Equal<string>(expected.DedicatedCircuit.CircuitName, actual.CircuitName);
  191. Assert.Equal<uint>(expected.DedicatedCircuit.Bandwidth, actual.Bandwidth);
  192. Assert.Equal<string>(expected.DedicatedCircuit.Location, actual.Location);
  193. Assert.Equal<string>(expected.DedicatedCircuit.ServiceProviderName, actual.ServiceProviderName);
  194. Assert.Equal(expected.DedicatedCircuit.ServiceProviderProvisioningState, actual.ServiceProviderProvisioningState);
  195. Assert.Equal(expected.DedicatedCircuit.Status, actual.Status);
  196. Assert.Equal<string>(expected.DedicatedCircuit.ServiceKey, actual.ServiceKey);
  197. }
  198. [Fact]
  199. [Trait(Category.AcceptanceType, Category.CheckIn)]
  200. public void RemoveAzureDedicatedCircuitSuccessful()
  201. {
  202. string serviceKey = "aa28cd19-b10a-41ff-981b-53c6bbf15ead";
  203. ExpressRouteOperationStatusResponse expected =
  204. new ExpressRouteOperationStatusResponse()
  205. {
  206. Status = ExpressRouteOperationStatus.Successful,
  207. HttpStatusCode = HttpStatusCode.OK
  208. };
  209. MockCommandRuntime mockCommandRuntime = new MockCommandRuntime();
  210. Mock<ExpressRouteManagementClient> client = InitExpressRouteManagementClient();
  211. var dcMock = new Mock<IDedicatedCircuitOperations>();
  212. var t = new Task<ExpressRouteOperationStatusResponse>(() => expected);
  213. t.Start();
  214. dcMock.Setup(f => f.RemoveAsync(It.Is<string>(sKey => sKey == serviceKey), It.IsAny<CancellationToken>())).Returns((string sKey, CancellationToken cancellation) => t);
  215. client.SetupGet(f => f.DedicatedCircuits).Returns(dcMock.Object);
  216. RemoveAzureDedicatedCircuitCommand cmdlet = new RemoveAzureDedicatedCircuitCommand()
  217. {
  218. ServiceKey = Guid.Parse(serviceKey),
  219. CommandRuntime = mockCommandRuntime,
  220. ExpressRouteClient = new ExpressRouteClient(client.Object)
  221. };
  222. cmdlet.ExecuteCmdlet();
  223. Assert.True(mockCommandRuntime.VerboseStream[0].Contains(serviceKey));
  224. }
  225. [Fact]
  226. [Trait(Category.AcceptanceType, Category.CheckIn)]
  227. public void ListAzureDedicatedCircuitSuccessful()
  228. {
  229. // Setup
  230. string circuitName1 = "TestCircuit";
  231. uint bandwidth1 = 10;
  232. string serviceProviderName1 = "TestProvider";
  233. string location1 = "us-west";
  234. string serviceKey1 = "aa28cd19-b10a-41ff-981b-53c6bbf15ead";
  235. BillingType billingType1 = BillingType.MeteredData;
  236. string circuitName2 = "TestCircuit2";
  237. uint bandwidth2 = 10;
  238. string serviceProviderName2 = "TestProvider";
  239. string location2 = "us-north";
  240. string serviceKey2 = "bc28cd19-b10a-41ff-981b-53c6bbf15ead";
  241. BillingType billingType2 = BillingType.UnlimitedData;
  242. MockCommandRuntime mockCommandRuntime = new MockCommandRuntime();
  243. Mock<ExpressRouteManagementClient> client = InitExpressRouteManagementClient();
  244. var dcMock = new Mock<IDedicatedCircuitOperations>();
  245. List<AzureDedicatedCircuit> dedicatedCircuits = new List<AzureDedicatedCircuit>(){
  246. new AzureDedicatedCircuit(){ Bandwidth = bandwidth1, BillingType = billingType1.ToString(), CircuitName = circuitName1, ServiceKey = serviceKey1, Location = location1, ServiceProviderName = serviceProviderName1, ServiceProviderProvisioningState = ProviderProvisioningState.NotProvisioned, Status = DedicatedCircuitState.Enabled},
  247. new AzureDedicatedCircuit(){ Bandwidth = bandwidth2, BillingType = billingType2.ToString(), CircuitName = circuitName2, ServiceKey = serviceKey2, Location = location2, ServiceProviderName = serviceProviderName2, ServiceProviderProvisioningState = ProviderProvisioningState.Provisioned, Status = DedicatedCircuitState.Enabled}
  248. };
  249. DedicatedCircuitListResponse expected =
  250. new DedicatedCircuitListResponse()
  251. {
  252. DedicatedCircuits = dedicatedCircuits,
  253. StatusCode = HttpStatusCode.OK
  254. };
  255. var t = new Task<DedicatedCircuitListResponse>(() => expected);
  256. t.Start();
  257. dcMock.Setup(f => f.ListAsync(It.IsAny<CancellationToken>())).Returns((CancellationToken cancellation) => t);
  258. client.SetupGet(f => f.DedicatedCircuits).Returns(dcMock.Object);
  259. GetAzureDedicatedCircuitCommand cmdlet = new GetAzureDedicatedCircuitCommand()
  260. {
  261. CommandRuntime = mockCommandRuntime,
  262. ExpressRouteClient = new ExpressRouteClient(client.Object)
  263. };
  264. cmdlet.ExecuteCmdlet();
  265. // Assert
  266. IEnumerable<AzureDedicatedCircuit> actual = LanguagePrimitives.GetEnumerable(mockCommandRuntime.OutputPipeline).Cast<AzureDedicatedCircuit>();
  267. Assert.Equal(actual.Count(), 2);
  268. }
  269. }
  270. }