private void SetupFirewallResponse(FirewallRuleResponse response) { ResourceManagerMock.Setup(r => r.CreateFirewallRuleAsync( It.IsAny <IAzureResourceManagementSession>(), It.IsAny <IAzureSqlServerResource>(), It.IsAny <FirewallRuleRequest>()) ).Returns(() => Task.FromResult(response)); }
private void SetupDependencies( IList <Tuple <IAzureUserAccountSubscriptionContext, IEnumerable <IAzureSqlServerResource> > > subsToServers, FirewallRuleResponse response) { SetupCreateSession(); SetupReturnsSubscriptions(subsToServers.Select(s => s.Item1)); foreach (var s in subsToServers) { SetupAzureServers(s.Item1, s.Item2); } SetupFirewallResponse(response); }
public async Task TestCreateFirewallRuleBasicRequest() { // Given a firewall request for a valid subscription string serverName = "myserver.database.windows.net"; var sub1Mock = new Mock <IAzureUserAccountSubscriptionContext>(); var sub2Mock = new Mock <IAzureUserAccountSubscriptionContext>(); var server = new SqlAzureResource(new Azure.Management.Sql.Models.Server("Somewhere", "1234", "myserver", "SQLServer", null, null, null, null, null, null, null, fullyQualifiedDomainName: serverName)); var subsToServers = new List <Tuple <IAzureUserAccountSubscriptionContext, IEnumerable <IAzureSqlServerResource> > >() { Tuple.Create(sub1Mock.Object, Enumerable.Empty <IAzureSqlServerResource>()), Tuple.Create(sub2Mock.Object, new IAzureSqlServerResource[] { server }.AsEnumerable()) }; var azureRmResponse = new FirewallRuleResponse() { Created = true, StartIpAddress = null, EndIpAddress = null }; SetupDependencies(subsToServers, azureRmResponse); // When I request the firewall be created var createFirewallParams = new CreateFirewallRuleParams() { ServerName = serverName, StartIpAddress = "1.1.1.1", EndIpAddress = "1.1.1.255", Account = CreateAccount(), SecurityTokenMappings = new Dictionary <string, AccountSecurityToken>() }; await TestUtils.RunAndVerify <CreateFirewallRuleResponse>( (context) => ResourceProviderService.HandleCreateFirewallRuleRequest(createFirewallParams, context), (response) => { // Then I expect the response to be OK as we require the known IP address to function Assert.NotNull(response); Assert.Null(response.ErrorMessage); Assert.True(response.Result); Assert.False(response.IsTokenExpiredFailure); }); }
private async Task <CreateFirewallRuleResponse> DoHandleCreateFirewallRuleRequest(CreateFirewallRuleParams firewallRule) { var result = new CreateFirewallRuleResponse(); // Note: currently not catching the exception. Expect the caller to this message to handle error cases by // showing the error string and responding with a clean failure message to the user try { AuthenticationService authService = ServiceProvider.GetService <AuthenticationService>(); IUserAccount account = await authService.SetCurrentAccountAsync(firewallRule.Account, firewallRule.SecurityTokenMappings); FirewallRuleResponse response = await firewallRuleService.CreateFirewallRuleAsync(firewallRule.ServerName, firewallRule.StartIpAddress, firewallRule.EndIpAddress); result.Result = true; } catch (FirewallRuleException ex) { result.Result = false; result.ErrorMessage = ex.Message; } return(result); }
private async Task <FirewallRuleResponse> VerifyCreateAsync(ServiceTestContext testContext, string serverName, bool verifyFirewallRuleCreated = true) { try { FirewallRuleService service = new FirewallRuleService(); service.AuthenticationManager = testContext.ApplicationAuthenticationManager; service.ResourceManager = testContext.AzureResourceManager; FirewallRuleResponse response = await service.CreateFirewallRuleAsync(serverName, testContext.StartIpAddress, testContext.EndIpAddress); if (verifyFirewallRuleCreated) { testContext.AzureResourceManagerMock.Verify(x => x.CreateFirewallRuleAsync( It.Is <IAzureResourceManagementSession>(s => s.SubscriptionContext.Subscription.SubscriptionId == testContext.ValidSubscription.Subscription.SubscriptionId), It.Is <IAzureSqlServerResource>(r => r.FullyQualifiedDomainName == serverName), It.Is <FirewallRuleRequest>(y => y.EndIpAddress.ToString().Equals(testContext.EndIpAddress) && y.StartIpAddress.ToString().Equals(testContext.StartIpAddress))), Times.AtLeastOnce); } else { testContext.AzureResourceManagerMock.Verify(x => x.CreateFirewallRuleAsync( It.Is <IAzureResourceManagementSession>(s => s.SubscriptionContext.Subscription.SubscriptionId == testContext.ValidSubscription.Subscription.SubscriptionId), It.Is <IAzureSqlServerResource>(r => r.FullyQualifiedDomainName == serverName), It.Is <FirewallRuleRequest>(y => y.EndIpAddress.ToString().Equals(testContext.EndIpAddress) && y.StartIpAddress.ToString().Equals(testContext.StartIpAddress))), Times.Never); } return(response); } catch (Exception ex) { if (ex is FirewallRuleException) { Assert.True(ex.InnerException == null || !(ex.InnerException is FirewallRuleException)); } throw; } }