public TestsFixture() { // place any initialization like environment settings here #if DEBUG //Environment.SetEnvironmentVariable("AZURE_TEST_MODE", "Record"); //Environment.SetEnvironmentVariable( // "TEST_CSM_ORGID_AUTHENTICATION", // "SubscriptionId=;Environment=Prod"); #endif TestUtilities.StartTest(); try { UndoContext.Current.Start(); var resourceManagementClient = ApiManagementHelper.GetResourceManagementClient(); resourceManagementClient.TryRegisterSubscriptionForResource(); } catch (Exception) { Cleanup(); throw; } finally { TestUtilities.EndTest(); } }
public void CheckServiceNameAvailability() { using (var context = UndoContext.Current) { context.Start("ResourceProviderFunctionalTests", "CheckServiceNameAvailability"); var apiManagementClient = ApiManagementHelper.GetApiManagementClient(); var validServiceName = TestUtilities.GenerateName("hydraapimservicevalid"); var response = apiManagementClient.ApiManagement.CheckServiceNameAvailability( new ApiServiceCheckNameAvailabilityParameters(validServiceName)); Assert.NotNull(response); Assert.True(response.IsAvailable); Assert.Null(response.Reason); const string invalidName = "!!!invalidname"; response = apiManagementClient.ApiManagement.CheckServiceNameAvailability( new ApiServiceCheckNameAvailabilityParameters(invalidName)); Assert.NotNull(response); Assert.False(response.IsAvailable); Assert.NotNull(response.Reason); // create api management service var location = this.ManagmentClient.TryGetLocation("West US"); var resourceGroup = this.ResourceManagementClient.TryGetResourceGroup(location); if (string.IsNullOrWhiteSpace(resourceGroup)) { resourceGroup = TestUtilities.GenerateName("Api-Default"); this.ResourceManagementClient.TryRegisterResourceGroup(location, resourceGroup); } var createServiceParameters = new ApiServiceCreateOrUpdateParameters( location, new ApiServiceProperties { CreatedAtUtc = DateTime.UtcNow, SkuProperties = new ApiServiceSkuProperties { Capacity = 1, SkuType = SkuType.Developer }, AddresserEmail = "*****@*****.**", PublisherEmail = "*****@*****.**", PublisherName = "publisher" }); var createResponse = apiManagementClient.ApiManagement.CreateOrUpdate(resourceGroup, validServiceName, createServiceParameters); Assert.NotNull(createResponse); response = apiManagementClient.ApiManagement.CheckServiceNameAvailability( new ApiServiceCheckNameAvailabilityParameters(validServiceName)); Assert.NotNull(response); Assert.False(response.IsAvailable); Assert.NotNull(response.Reason); } }
public TestsFixture() { TestUtilities.StartTest(); try { UndoContext.Current.Start(); var resourceManagementClient = ApiManagementHelper.GetResourceManagementClient(); resourceManagementClient.TryRegisterSubscriptionForResource(); } catch (Exception) { Cleanup(); throw; } finally { TestUtilities.EndTest(); } }
public void ManageDeployments() { using (var context = UndoContext.Current) { context.Start("ResourceProviderFunctionalTests", "ManageDeployments"); TryCreateApiService(); var apiManagementClient = GetServiceClient <ApiManagementClient>(new CSMTestEnvironmentFactory()); // update from Developer to Standard and Update Capacity from 1 to 2 var response = apiManagementClient.ApiManagement.ManageDeployments( ResourceGroupName, ApiManagementServiceName, new ApiServiceManageDeploymentsParameters { SkuType = SkuType.Standard, Location = Location, SkuUnitCount = 2 }); Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); var getResponse = apiManagementClient.ApiManagement.Get(ResourceGroupName, ApiManagementServiceName); Assert.NotNull(getResponse); Assert.Equal(HttpStatusCode.OK, getResponse.StatusCode); Assert.NotNull(getResponse.Value); Assert.Equal(SkuType.Standard, getResponse.Value.Properties.SkuProperties.SkuType); Assert.Equal(2, getResponse.Value.Properties.SkuProperties.Capacity); // update from Standard to Premium and add one more region var location = this.ManagmentClient.GetLocations().FirstOrDefault(l => !string.Equals(l, Location, StringComparison.OrdinalIgnoreCase)); if (location == null) { location = "dummy location"; // in case environment has only one location. } // renew access token ApiManagementHelper.RefreshAccessToken(apiManagementClient); response = apiManagementClient.ApiManagement.ManageDeployments( ResourceGroupName, ApiManagementServiceName, new ApiServiceManageDeploymentsParameters { SkuType = SkuType.Premium, Location = Location, SkuUnitCount = 2, AdditionalRegions = new[] { new AdditionalRegion { Location = location, SkuType = SkuType.Premium, SkuUnitCount = 2 } } }); Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); getResponse = apiManagementClient.ApiManagement.Get(ResourceGroupName, ApiManagementServiceName); Assert.NotNull(getResponse); Assert.Equal(HttpStatusCode.OK, getResponse.StatusCode); Assert.NotNull(getResponse.Value); Assert.Equal(SkuType.Premium, getResponse.Value.Properties.SkuProperties.SkuType); Assert.Equal(2, getResponse.Value.Properties.SkuProperties.Capacity); Assert.NotNull(getResponse.Value.Properties.AdditionalRegions); Assert.Equal(1, getResponse.Value.Properties.AdditionalRegions.Count); Assert.Equal(SkuType.Premium, getResponse.Value.Properties.AdditionalRegions[0].SkuType); Assert.Equal(2, getResponse.Value.Properties.AdditionalRegions[0].SkuUnitCount); } }
public void BackupRestore() { using (var context = UndoContext.Current) { context.Start("ResourceProviderFunctionalTests", "BackupRestore"); TryCreateApiService(); // create storage account with blob container for the API Management backup var storageManagementClient = this.GetStorageManagementClient(); var storageAccountName = TestUtilities.GenerateName("hydraapimstorage"); Assert.True( storageManagementClient.StorageAccounts.CheckNameAvailability(storageAccountName).IsAvailable, "Could not generate unique storage account name"); var storageCreateParams = new StorageAccountCreateParameters { Name = storageAccountName, Location = Location, AffinityGroup = null, Label = "ApimHydraBackupRestoreTest", Description = "Api Management hydra client backup/restore test", AccountType = StorageAccountTypes.StandardGRS }; storageManagementClient.StorageAccounts.Create(storageCreateParams); var storageKeysResponse = storageManagementClient.StorageAccounts.GetKeys(storageAccountName); const string apimBackupContainerName = "apimbackupcontainer"; // create API Management backup var apiManagementClient = GetServiceClient <ApiManagementClient>(new CSMTestEnvironmentFactory()); apiManagementClient.RefreshAccessToken(); const string apimBackupName = "apimbackup.zip"; var backupRestoreParameters = new ApiServiceBackupRestoreParameters { StorageAccount = storageAccountName, AccessKey = storageKeysResponse.PrimaryKey, ContainerName = apimBackupContainerName, BackupName = apimBackupName }; var response = apiManagementClient.ApiManagement.Backup( ResourceGroupName, ApiManagementServiceName, backupRestoreParameters); Assert.Equal(HttpStatusCode.OK, response.StatusCode); // restore Api Management service from backup ApiManagementHelper.RefreshAccessToken(apiManagementClient); response = apiManagementClient.ApiManagement.Restore( ResourceGroupName, ApiManagementServiceName, backupRestoreParameters); Assert.NotNull(response); Assert.Equal(HttpStatusCode.OK, response.StatusCode); var getResponse = apiManagementClient.ApiManagement.Get(ResourceGroupName, ApiManagementServiceName); Assert.NotNull(getResponse); Assert.Equal(HttpStatusCode.OK, getResponse.StatusCode); Assert.NotNull(getResponse.Value); Assert.Equal("Succeeded", getResponse.Value.Properties.ProvisioningState); } }
public void CreateListUpdateDelete() { using (var context = UndoContext.Current) { context.Start("ResourceProviderFunctionalTests", "CreateListUpdateDelete"); TryCreateApiService(); this.ApiManagementClient.RefreshAccessToken(); // get different resource group name. var resourceGroupName = this.ResourceManagementClient.GetResourceGroups() .Where(group => !group.Name.Equals(ResourceGroupName)) .Select(group => group.Name) .FirstOrDefault(); if (resourceGroupName == null) { resourceGroupName = TestUtilities.GenerateName("hydraapimresourcegroup"); } // create one more Api Management service (one is already created) var serviceName = TestUtilities.GenerateName("hydraapimservice2"); var createServiceParameters = new ApiServiceCreateOrUpdateParameters( Location, new ApiServiceProperties { CreatedAtUtc = DateTime.UtcNow, AddresserEmail = "*****@*****.**", PublisherEmail = "*****@*****.**", PublisherName = "publisher" }, new ApiServiceSkuProperties { Capacity = 1, SkuType = SkuType.Developer }); var createResponse = this.ApiManagementClient.ResourceProvider.CreateOrUpdate(resourceGroupName, serviceName, createServiceParameters); Assert.NotNull(createResponse); Assert.Equal(HttpStatusCode.OK, createResponse.StatusCode); var getResponse = this.ApiManagementClient.ResourceProvider.Get(resourceGroupName, serviceName); Assert.NotNull(getResponse); Assert.Equal(HttpStatusCode.OK, getResponse.StatusCode); Assert.NotNull(getResponse.Value); Assert.Equal("Succeeded", getResponse.Value.Properties.ProvisioningState, StringComparer.CurrentCultureIgnoreCase); Assert.Equal(createServiceParameters.SkuProperties.Capacity, getResponse.Value.SkuProperties.Capacity); Assert.Equal(createServiceParameters.SkuProperties.SkuType, getResponse.Value.SkuProperties.SkuType); Assert.Equal(createServiceParameters.Properties.AddresserEmail, getResponse.Value.Properties.AddresserEmail); Assert.Equal(createServiceParameters.Properties.PublisherEmail, getResponse.Value.Properties.PublisherEmail); Assert.Equal(createServiceParameters.Properties.PublisherName, getResponse.Value.Properties.PublisherName); Assert.Equal(VirtualNetworkType.None, getResponse.Value.Properties.VpnType); Assert.Equal(0, getResponse.Value.Tags.Count); this.ApiManagementClient.RefreshAccessToken(); // list all services var listResponse = this.ApiManagementClient.ResourceProvider.List(null); Assert.NotNull(listResponse); Assert.NotNull(listResponse.Value); Assert.True(listResponse.Value.Count >= 2); Assert.True(listResponse.Value.Any(service => service.Name == serviceName)); // list services only within new group listResponse = this.ApiManagementClient.ResourceProvider.List(resourceGroupName); Assert.NotNull(listResponse); Assert.NotNull(listResponse.Value); Assert.True(listResponse.Value.Count >= 1); Assert.True(listResponse.Value.Any(service => service.Name == serviceName)); Assert.True(listResponse.Value.All(service => service.Id.Contains(resourceGroupName))); // update service: current implementation update only tags var updateRequest = new ApiServiceCreateOrUpdateParameters { Location = Location, Properties = new ApiServiceProperties // this should not change via update { AddresserEmail = "*****@*****.**", PublisherEmail = "*****@*****.**", PublisherName = "changed.publisher" }, SkuProperties = new ApiServiceSkuProperties { Capacity = 2, SkuType = SkuType.Standard }, Tags = // only tags shoud be updated { { "tag1", "tag1 value" }, { "tag2", "tag2 value" } } }; var updateResponse = this.ApiManagementClient.ResourceProvider.CreateOrUpdate(resourceGroupName, serviceName, updateRequest); Assert.NotNull(updateResponse); Assert.Equal(HttpStatusCode.OK, updateResponse.StatusCode); Assert.NotNull(updateResponse.Value); Assert.Equal("Succeeded", updateResponse.Value.Properties.ProvisioningState, StringComparer.CurrentCultureIgnoreCase); Assert.Equal(createServiceParameters.SkuProperties.Capacity, updateResponse.Value.SkuProperties.Capacity); Assert.Equal(createServiceParameters.SkuProperties.SkuType, updateResponse.Value.SkuProperties.SkuType); Assert.Equal(createServiceParameters.Properties.AddresserEmail, updateResponse.Value.Properties.AddresserEmail); Assert.Equal(createServiceParameters.Properties.PublisherEmail, updateResponse.Value.Properties.PublisherEmail); Assert.Equal(createServiceParameters.Properties.PublisherName, updateResponse.Value.Properties.PublisherName); Assert.Equal(2, updateResponse.Value.Tags.Count); Assert.Equal(1, updateResponse.Value.Tags.Count(keyValue => keyValue.Key == "tag1" && keyValue.Value == "tag1 value")); Assert.Equal(1, updateResponse.Value.Tags.Count(keyValue => keyValue.Key == "tag2" && keyValue.Value == "tag2 value")); getResponse = this.ApiManagementClient.ResourceProvider.Get(resourceGroupName, serviceName); Assert.NotNull(getResponse); Assert.Equal(HttpStatusCode.OK, getResponse.StatusCode); Assert.NotNull(getResponse.Value); Assert.Equal("Succeeded", getResponse.Value.Properties.ProvisioningState, StringComparer.CurrentCultureIgnoreCase); Assert.Equal(createServiceParameters.SkuProperties.Capacity, getResponse.Value.SkuProperties.Capacity); Assert.Equal(createServiceParameters.SkuProperties.SkuType, getResponse.Value.SkuProperties.SkuType); Assert.Equal(createServiceParameters.Properties.AddresserEmail, getResponse.Value.Properties.AddresserEmail); Assert.Equal(createServiceParameters.Properties.PublisherEmail, getResponse.Value.Properties.PublisherEmail); Assert.Equal(createServiceParameters.Properties.PublisherName, getResponse.Value.Properties.PublisherName); Assert.Equal(2, getResponse.Value.Tags.Count); Assert.Equal(1, getResponse.Value.Tags.Count(keyValue => keyValue.Key == "tag1" && keyValue.Value == "tag1 value")); Assert.Equal(1, getResponse.Value.Tags.Count(keyValue => keyValue.Key == "tag2" && keyValue.Value == "tag2 value")); // delete service ApiManagementHelper.RefreshAccessToken(this.ApiManagementClient); var deleteResponse = this.ApiManagementClient.ResourceProvider.Delete(resourceGroupName, serviceName); Assert.NotNull(deleteResponse); Assert.Equal(HttpStatusCode.OK, deleteResponse.StatusCode); try { this.ApiManagementClient.ResourceProvider.Get(resourceGroupName, serviceName); Assert.True(false, "The code should not have been executed"); } catch (CloudException ex) { Assert.Equal(HttpStatusCode.NotFound, ex.Response.StatusCode); } } }