public void GetSupportedOptimizationTypes() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Get the supported optimization types for the created profile should succeed var supportedOptimizationTypesResult = cdnMgmtClient.Profiles.ListSupportedOptimizationTypes(resourceGroupName, profileName); Assert.NotNull(supportedOptimizationTypesResult); Assert.NotNull(supportedOptimizationTypesResult.SupportedOptimizationTypes); Assert.NotEmpty(supportedOptimizationTypesResult.SupportedOptimizationTypes); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void WafPolicyGetListTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // List WAF policies should return none var policies = cdnMgmtClient.Policies.List(resourceGroupName.ToUpperInvariant()); Assert.Empty(policies); // Create a minimal CDN WAF policy var policyName = TestUtilities.GenerateName("policy"); var policy = cdnMgmtClient.Policies.CreateOrUpdate(resourceGroupName, policyName, new CdnWebApplicationFirewallPolicy { Sku = new Sku(SkuName.StandardMicrosoft), Location = "Global", }); // Get WAF policies returns the created policy var existingPolicy = cdnMgmtClient.Policies.Get(resourceGroupName, policyName); Assert.NotNull(existingPolicy); Assert.Equal(existingPolicy.ResourceState, PolicyResourceState.Enabled); // List WAF policies should return one policy policies = cdnMgmtClient.Policies.List(resourceGroupName.ToUpperInvariant()); Assert.Single(policies); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void ProfileListBySubcriptionTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName1 = CdnTestUtilities.CreateResourceGroup(resourcesClient); // List profiles should return all profiles in the subscription var profiles = cdnMgmtClient.Profiles.List(); var existingProfileCount = profiles.Count(); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName1, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Get profile returns the created profile var existingProfile = cdnMgmtClient.Profiles.Get(resourceGroupName1, profileName); VerifyProfilesEqual(profile, existingProfile); // List profile returns the created profile profiles = cdnMgmtClient.Profiles.List(); Assert.NotNull(profiles.FirstOrDefault(x => x.Name == profileName)); // Create another resource group var resourceGroupName2 = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a second cdn profile and don't wait for creation to finish var profileName2 = TestUtilities.GenerateName("profile"); createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; profile = cdnMgmtClient.Profiles.Create(resourceGroupName2, profileName2, createParameters); VerifyProfileCreated(profile, createParameters); // List profiles should return the new profiles profiles = cdnMgmtClient.Profiles.List(); Assert.NotNull(profiles.FirstOrDefault(x => x.Name == profileName2)); // Delete first profile cdnMgmtClient.Profiles.Delete(resourceGroupName1, profileName); // Verify the created profile no longer is listed profiles = cdnMgmtClient.Profiles.List(); Assert.Null(profiles.FirstOrDefault(x => x.Name == profileName)); // Delete second profile cdnMgmtClient.Profiles.Delete(resourceGroupName2, profileName2); // Verify the second profile no longer is listed profiles = cdnMgmtClient.Profiles.List(); Assert.Null(profiles.FirstOrDefault(x => x.Name == profileName2)); // Delete resource groups CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName1); CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName2); } }
public void ProfileGetListTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // List profiles should return none var profiles = cdnMgmtClient.Profiles.ListByResourceGroup(resourceGroupName); Assert.Empty(profiles); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Get profile returns the created profile var existingProfile = cdnMgmtClient.Profiles.Get(resourceGroupName, profileName); VerifyProfilesEqual(profile, existingProfile); // List profiles should return one profile profiles = cdnMgmtClient.Profiles.ListByResourceGroup(resourceGroupName); Assert.Single(profiles); // Create a second cdn profile and don't wait for creation to finish var profileName2 = TestUtilities.GenerateName("profile"); createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; cdnMgmtClient.Profiles.BeginCreateAsync(resourceGroupName, profileName2, createParameters) .ConfigureAwait(false) .GetAwaiter() .GetResult(); // List profiles should return two profiles profiles = cdnMgmtClient.Profiles.ListByResourceGroup(resourceGroupName); Assert.Equal(2, profiles.Count()); // Delete first profile cdnMgmtClient.Profiles.Delete(resourceGroupName, profileName); // Get deleted profile should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Profiles.Get(resourceGroupName, profileName); }); // List profiles should return only one profile profiles = cdnMgmtClient.Profiles.ListByResourceGroup(resourceGroupName); Assert.Single(profiles); // Wait for second profile to complete creation CdnTestUtilities.WaitIfNotInPlaybackMode(); // Delete second profile but don't wait for operation to complete cdnMgmtClient.Profiles.BeginDeleteAsync(resourceGroupName, profileName2) .ConfigureAwait(false) .GetAwaiter() .GetResult(); // Get second profile returns profile in Deleting state existingProfile = cdnMgmtClient.Profiles.Get(resourceGroupName, profileName2); Assert.Equal(existingProfile.ResourceState, ProfileResourceState.Deleting); // Wait for second profile to complete creation CdnTestUtilities.WaitIfNotInPlaybackMode(); // List profiles should none profiles = cdnMgmtClient.Profiles.ListByResourceGroup(resourceGroupName); Assert.Empty(profiles); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void ProfileDeleteTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Delete existing profile should succeed cdnMgmtClient.Profiles.Delete(resourceGroupName, profile.Name); // List profiles should return none var profiles = cdnMgmtClient.Profiles.ListByResourceGroup(resourceGroupName); Assert.Empty(profiles); // Delete non-existing profile should succeed cdnMgmtClient.Profiles.Delete(resourceGroupName, profile.Name); // Create a standard cdn profile and don't wait for creation to finish profileName = TestUtilities.GenerateName("profile"); createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; cdnMgmtClient.Profiles.BeginCreateAsync(resourceGroupName, profileName, createParameters) .ConfigureAwait(false) .GetAwaiter() .GetResult(); // Wait for second profile to complete creation CdnTestUtilities.WaitIfNotInPlaybackMode(); // Delete profile should succeed cdnMgmtClient.Profiles.Delete(resourceGroupName, profileName); // List profiles should return none profiles = cdnMgmtClient.Profiles.ListByResourceGroup(resourceGroupName); Assert.Empty(profiles); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void OriginUpdateTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); // Create a cdn endpoint with minimum requirements string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new Endpoint { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(resourceGroupName, profileName, endpointName, endpointCreateParameters); // Update origin on running endpoint should succeed var originParameters = new OriginUpdateParameters { HostName = "www.bing.com", HttpPort = 1234, HttpsPort = 8081 }; cdnMgmtClient.Origins.Update(resourceGroupName, profileName, endpointName, "origin1", originParameters); // Update origin with invalid hostname should fail originParameters = new OriginUpdateParameters { HostName = "invalid!Hostname&", HttpPort = 1234, HttpsPort = 8081 }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Origins.Update(resourceGroupName, profileName, endpointName, "origin1", originParameters); }); // Stop endpoint should succeed cdnMgmtClient.Endpoints.Stop(resourceGroupName, profileName, endpointName); // Update origin on stopped endpoint should succeed originParameters = new OriginUpdateParameters { HostName = "www.hello.com", HttpPort = 1265 }; cdnMgmtClient.Origins.Update(resourceGroupName, profileName, endpointName, "origin1", originParameters); // Update origin with invalid ports should fail originParameters = new OriginUpdateParameters { HttpPort = 99999, HttpsPort = -2000 }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Origins.Update(resourceGroupName, profileName, endpointName, "origin1", originParameters); }); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void CustomDomainCRUDTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // Create a cdn endpoint with minimum requirements string endpointName = "endpoint-554d5e6b9f56"; var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); // List custom domains one this endpoint should return none var customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(endpointName, profileName, resourceGroupName); Assert.Equal(0, customDomains.Count()); // NOTE: There is a CName mapping already created for this custom domain and endpoint hostname // "sdk-1-5b4d5e6b9f56.azureedge-test.net" maps to "endpoint-554d5e6b9f56.azureedge-test.net" // "sdk-2-5b4d5e6b9f56.azureedge-test.net" maps to "endpoint-554d5e6b9f56.azureedge-test.net" // Create custom domain on running endpoint should succeed string customDomainName1 = TestUtilities.GenerateName("customDomain"); cdnMgmtClient.CustomDomains.Create(customDomainName1, endpointName, profileName, resourceGroupName, "sdk-1-5b4d5e6b9f56.azureedge-test.net"); // List custom domains one this endpoint should return one customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(endpointName, profileName, resourceGroupName); Assert.Equal(1, customDomains.Count()); // Update custom domain on running endpoint should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.CustomDomains.Update(customDomainName1, endpointName, profileName, resourceGroupName, "customdomain11.hello.com"); }); // Stop endpoint cdnMgmtClient.Endpoints.Stop(endpointName, profileName, resourceGroupName); // Create another custom domain on stopped endpoint should succeed string customDomainName2 = TestUtilities.GenerateName("customDomain"); cdnMgmtClient.CustomDomains.Create(customDomainName2, endpointName, profileName, resourceGroupName, "sdk-2-5b4d5e6b9f56.azureedge-test.net"); // List custom domains one this endpoint should return two customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(endpointName, profileName, resourceGroupName); Assert.Equal(2, customDomains.Count()); // Update custom domain on stopped endpoint should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.CustomDomains.Update(customDomainName2, endpointName, profileName, resourceGroupName, "customdomain22.hello.com"); }); // Delete second custom domain on stopped endpoint should succeed cdnMgmtClient.CustomDomains.DeleteIfExists(customDomainName2, endpointName, profileName, resourceGroupName); // Get deleted custom domain should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.CustomDomains.Get(customDomainName2, endpointName, profileName, resourceGroupName); }); // List custom domains on endpoint should return one customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(endpointName, profileName, resourceGroupName); Assert.Equal(1, customDomains.Count()); // Start endpoint cdnMgmtClient.Endpoints.Start(endpointName, profileName, resourceGroupName); // Delete first custom domain on stopped endpoint should succeed cdnMgmtClient.CustomDomains.DeleteIfExists(customDomainName1, endpointName, profileName, resourceGroupName); // Get deleted custom domain should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.CustomDomains.Get(customDomainName1, endpointName, profileName, resourceGroupName); }); // List custom domains on endpoint should return none customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(endpointName, profileName, resourceGroupName); Assert.Equal(0, customDomains.Count()); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void ProfileCheckUsageTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // CheckUsage on subscription to get existing usage for profiles var subscriptionLevelUsages = cdnMgmtClient.ResourceUsage.List(); Assert.Single(subscriptionLevelUsages); var defaultSubscriptionUsage = subscriptionLevelUsages.First(); var existingSubscriptionUsageLimit = defaultSubscriptionUsage.Limit; var existingSubscriptionUsageCurrentValue = defaultSubscriptionUsage.CurrentValue; // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); subscriptionLevelUsages = cdnMgmtClient.ResourceUsage.List(); Assert.Single(subscriptionLevelUsages); var usageAfterCreation = subscriptionLevelUsages.First(); Assert.Equal(existingSubscriptionUsageLimit, usageAfterCreation.Limit); Assert.Equal(existingSubscriptionUsageCurrentValue + 1, usageAfterCreation.CurrentValue); // test Profile level usage - usage for endpoints under the profile var profileLevelUsages = cdnMgmtClient.Profiles.ListResourceUsage(resourceGroupName, profileName); Assert.Single(profileLevelUsages); var profileLevelUsage = profileLevelUsages.First(); Assert.Equal(25, profileLevelUsage.Limit); Assert.Equal(0, profileLevelUsage.CurrentValue); //Create an endpoint under this profile string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new Endpoint { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(resourceGroupName, profileName, endpointName, endpointCreateParameters); profileLevelUsages = cdnMgmtClient.Profiles.ListResourceUsage(resourceGroupName, profileName); Assert.Single(profileLevelUsages); var profileLevelUsageAfterEndpointCreation = profileLevelUsages.First(); Assert.Equal(25, profileLevelUsageAfterEndpointCreation.Limit); Assert.Equal(1, profileLevelUsageAfterEndpointCreation.CurrentValue); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void OriginDeleteTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // Create a cdn endpoint with minimum requirements string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); // Delete only origin on endpoint should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Origins.DeleteIfExists("origin1", endpointName, profileName, resourceGroupName); }); // Get origins on endpoint should return one var origins = cdnMgmtClient.Origins.ListByEndpoint(endpointName, profileName, resourceGroupName); Assert.Equal(1, origins.Count()); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void ValidateCustomDomainTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // Create a cdn endpoint with minimum requirements string endpointName = "endpoint-5b4f5e6b9ea6"; var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); //NOTE: There is a CName mapping already created for this custom domain and endpoint hostname // "customdomain31.azureedge-test.net" maps to "endpoint-5b4f5e6b9ea6.azureedge-test.net" // Validate exisiting custom domain should return true var output = cdnMgmtClient.Endpoints.ValidateCustomDomain(endpointName, profileName, resourceGroupName, "customdomain31.azureedge-test.net"); Assert.Equal(output.CustomDomainValidated, true); // Validate non-exisiting custom domain should return false output = cdnMgmtClient.Endpoints.ValidateCustomDomain(endpointName, profileName, resourceGroupName, "customdomain4.hello.com"); Assert.Equal(output.CustomDomainValidated, false); // Validate invalid custom domain should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.ValidateCustomDomain(endpointName, profileName, resourceGroupName, "invalid\\custom/domain"); }); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void EndpointPurgeLoadTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // Create a cdn endpoint with minimum requirements should succeed string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, IsCompressionEnabled = true, OriginHostHeader = "www.bing.com", OriginPath = "/photos", QueryStringCachingBehavior = QueryStringCachingBehavior.IgnoreQueryString, ContentTypesToCompress = new List <string> { "text/html", "text/css" }, Tags = new Dictionary <string, string> { { "kay1", "value1" } }, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = TestUtilities.GenerateName("origin"), HostName = "custom.hello.com" } } }; cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); // Purge content on endpoint should succeed var purgeContentPaths = new List <string> { "/movies/*", "/pictures/pic1.jpg" }; cdnMgmtClient.Endpoints.PurgeContent(endpointName, profileName, resourceGroupName, purgeContentPaths); // Purge content on non-existing endpoint should fail Assert.Throws <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.PurgeContent("fakeEndpoint", profileName, resourceGroupName, purgeContentPaths); }); // Purge content on endpoint with invalid content paths should fail var invalidPurgeContentPaths = new List <string> { "invalidpath!" }; Assert.Throws <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.PurgeContent(endpointName, profileName, resourceGroupName, invalidPurgeContentPaths); }); // Load content on endpoint should succeed var loadContentPaths = new List <string> { "/movies/amazing.mp4", "/pictures/pic1.jpg" }; cdnMgmtClient.Endpoints.LoadContent(endpointName, profileName, resourceGroupName, loadContentPaths); // Load content on non-existing endpoint should fail Assert.Throws <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.LoadContent("fakeEndpoint", profileName, resourceGroupName, loadContentPaths); }); // Load content on endpoint with invalid content paths should fail var invalidLoadContentPaths = new List <string> { "/movies/*" }; Assert.Throws <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.LoadContent(endpointName, profileName, resourceGroupName, invalidLoadContentPaths); }); // Stop the running endpoint cdnMgmtClient.Endpoints.Stop(endpointName, profileName, resourceGroupName); var endpoint = cdnMgmtClient.Endpoints.Get(endpointName, profileName, resourceGroupName); Assert.Equal(endpoint.ResourceState, EndpointResourceState.Stopped); // Purge content on stopped endpoint should fail Assert.Throws <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.PurgeContent(endpointName, profileName, resourceGroupName, purgeContentPaths); }); // Load content on stopped endpoint should fail Assert.Throws <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.LoadContent(endpointName, profileName, resourceGroupName, loadContentPaths); }); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void EndpointStartStopTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // Create a cdn endpoint with minimum requirements should succeed string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); // Stop a running endpoint should succeed cdnMgmtClient.Endpoints.Stop(endpointName, profileName, resourceGroupName); var endpoint = cdnMgmtClient.Endpoints.Get(endpointName, profileName, resourceGroupName); Assert.Equal(endpoint.ResourceState, EndpointResourceState.Stopped); // Start a stopped endpoint should succeed cdnMgmtClient.Endpoints.Start(endpointName, profileName, resourceGroupName); endpoint = cdnMgmtClient.Endpoints.Get(endpointName, profileName, resourceGroupName); Assert.Equal(endpoint.ResourceState, EndpointResourceState.Running); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void EndpointGetListTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // List endpoints should return none var endpoints = cdnMgmtClient.Endpoints.ListByProfile(profileName, resourceGroupName); Assert.Equal(0, endpoints.Count()); // Create a cdn endpoint should succeed string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); // Get endpoint returns the created endpoint var existingEndpoint = cdnMgmtClient.Endpoints.Get(endpointName, profileName, resourceGroupName); Assert.NotNull(existingEndpoint); Assert.Equal(existingEndpoint.ResourceState, EndpointResourceState.Running); // List endpoints should return one endpoint endpoints = cdnMgmtClient.Endpoints.ListByProfile(profileName, resourceGroupName); Assert.Equal(1, endpoints.Count()); // Create a cdn endpoint and don't wait for creation to finish string endpointName2 = TestUtilities.GenerateName("endpoint"); endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; cdnMgmtClient.Endpoints.BeginCreateAsync(endpointName2, endpointCreateParameters, profileName, resourceGroupName).Wait(5000); // List endpoints should return two endpoints endpoints = cdnMgmtClient.Endpoints.ListByProfile(profileName, resourceGroupName); Assert.Equal(2, endpoints.Count()); // Delete first endpoint should succeed cdnMgmtClient.Endpoints.DeleteIfExists(endpointName, profileName, resourceGroupName); // Get deleted endpoint fails Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.Get(endpointName, profileName, resourceGroupName); }); // List endpoints should return 1 endpoint endpoints = cdnMgmtClient.Endpoints.ListByProfile(profileName, resourceGroupName); Assert.Equal(1, endpoints.Count()); // Wait for second endpoint to complete creation CdnTestUtilities.WaitIfNotInPlaybackMode(); // Delete second endpoint but don't wait for operation to complete cdnMgmtClient.Endpoints.BeginDeleteIfExistsAsync(endpointName2, profileName, resourceGroupName).Wait(2000); // Get second endpoint returns endpoint in Deleting state existingEndpoint = cdnMgmtClient.Endpoints.Get(endpointName2, profileName, resourceGroupName); Assert.Equal(existingEndpoint.ResourceState, EndpointResourceState.Deleting); // Wait for second endpoint deletion to complete CdnTestUtilities.WaitIfNotInPlaybackMode(); // List endpoints should return none endpoints = cdnMgmtClient.Endpoints.ListByProfile(profileName, resourceGroupName); Assert.Equal(0, endpoints.Count()); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void EndpointCreateTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // Create a cdn endpoint with minimum requirements should succeed string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); var existingEndpoint = cdnMgmtClient.Endpoints.Get(endpointName, profileName, resourceGroupName); // Create endpoint with same name should fail endpointCreateParameters = new EndpointCreateParameters { Location = "EastUs", IsHttpAllowed = false, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin2", HostName = "host2.hello.com" } } }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); }); // Create a cdn endpoint with full properties should succeed endpointName = TestUtilities.GenerateName("endpoint"); endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, IsCompressionEnabled = true, OriginHostHeader = "www.bing.com", OriginPath = "/photos", QueryStringCachingBehavior = QueryStringCachingBehavior.BypassCaching, ContentTypesToCompress = new List <string> { "text/html", "application/octet-stream" }, Tags = new Dictionary <string, string> { { "kay1", "value1" } }, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; endpoint = cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); Assert.NotNull(endpoint); // Create a cdn endpoint with no origins should fail endpointName = TestUtilities.GenerateName("endpoint"); endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, IsCompressionEnabled = true, OriginHostHeader = "www.bing.com", OriginPath = "/photos", QueryStringCachingBehavior = QueryStringCachingBehavior.BypassCaching, ContentTypesToCompress = new List <string> { "text/html", "application/octet-stream" }, Tags = new Dictionary <string, string> { { "kay1", "value1" } } }; Assert.ThrowsAny <ValidationException>(() => { cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); }); // Create a cdn endpoint with both http and https disallowed should fail endpointName = TestUtilities.GenerateName("endpoint"); endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = false, IsHttpsAllowed = false, IsCompressionEnabled = true, OriginHostHeader = "www.bing.com", OriginPath = "/photos", QueryStringCachingBehavior = QueryStringCachingBehavior.BypassCaching, ContentTypesToCompress = new List <string> { "text/html", "application/octet-stream" }, Tags = new Dictionary <string, string> { { "kay1", "value1" } } }; Assert.ThrowsAny <ValidationException>(() => { cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); }); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void EndpointUpdateTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // Create a cdn endpoint with minimum requirements should succeed string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); // Update endpoint with invalid origin path should fail var endpointUpdateParameters = new EndpointUpdateParameters { IsHttpAllowed = false, OriginPath = "\\&123invalid_path/.", OriginHostHeader = "www.bing.com" }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.Update(endpointName, endpointUpdateParameters, profileName, resourceGroupName); }); // Update endpoint to enable compression without specifying compression types should fail endpointUpdateParameters = new EndpointUpdateParameters { IsHttpAllowed = false, OriginPath = "/path/valid", OriginHostHeader = "www.bing.com", IsCompressionEnabled = true, QueryStringCachingBehavior = QueryStringCachingBehavior.IgnoreQueryString }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.Update(endpointName, endpointUpdateParameters, profileName, resourceGroupName); }); // Update endpoint with valid properties should succeed endpointUpdateParameters = new EndpointUpdateParameters { IsHttpAllowed = false, OriginPath = "/path/valid", OriginHostHeader = "www.bing.com", IsCompressionEnabled = true, ContentTypesToCompress = new List <string> { "text/html", "application/octet-stream" }, QueryStringCachingBehavior = QueryStringCachingBehavior.IgnoreQueryString }; var endpoint = cdnMgmtClient.Endpoints.Update(endpointName, endpointUpdateParameters, profileName, resourceGroupName); // Create a cdn endpoint but don't wait for creation to complete endpointName = TestUtilities.GenerateName("endpoint"); endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; cdnMgmtClient.Endpoints.BeginCreateAsync(endpointName, endpointCreateParameters, profileName, resourceGroupName).Wait(5000); // Update endpoint in creating state should fail endpointUpdateParameters = new EndpointUpdateParameters { IsHttpAllowed = false, OriginHostHeader = "www.bing.com" }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Endpoints.Update(endpointName, endpointUpdateParameters, profileName, resourceGroupName); }); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void GenerateSsoUriTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Generate Sso Uri on created profile should succeed var ssoUri = cdnMgmtClient.Profiles.GenerateSsoUri(resourceGroupName, profileName); Assert.NotNull(ssoUri); Assert.False(string.IsNullOrWhiteSpace(ssoUri.SsoUriValue)); // Create a cdn profile and don't wait for creation to finish profileName = TestUtilities.GenerateName("profile"); createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; cdnMgmtClient.Profiles.BeginCreateAsync(resourceGroupName, profileName, createParameters) .ConfigureAwait(false) .GetAwaiter() .GetResult(); // Generate Sso Uri on creating profile should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Profiles.GenerateSsoUri(resourceGroupName, profileName); }); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void OriginCreateTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // Create a cdn endpoint one origin should succeed string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); // Create another origin on this endpoint should fail string originName = TestUtilities.GenerateName("origin1"); var originParameters = new OriginParameters { HostName = "host1.hello.com", HttpPort = 9874, HttpsPort = 9090 }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Origins.Create(originName, originParameters, endpointName, profileName, resourceGroupName); }); // Create a cdn endpoint with invalid ports on origin should fail endpointName = TestUtilities.GenerateName("endpoint"); endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com", HttpPort = 99999, HttpsPort = -1111 } } }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Origins.Create(originName, originParameters, endpointName, profileName, resourceGroupName); }); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void EndpointCheckNameAvailabilityTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Generate new endpoint name string endpointName = TestUtilities.GenerateName("endpoint-unique"); // CheckNameAvailability should return true var output = cdnMgmtClient.NameAvailability.CheckNameAvailability(endpointName, ResourceType.MicrosoftCdnProfilesEndpoints); Assert.Equal(output.NameAvailable, true); // Create endpoint with that name then CheckNameAvailability again // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); ProfileCreateParameters createParameters = new ProfileCreateParameters { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(profileName, createParameters, resourceGroupName); // Create endpoint with this name var endpointCreateParameters = new EndpointCreateParameters { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(endpointName, endpointCreateParameters, profileName, resourceGroupName); // CheckNameAvailability after endpoint was created should return false output = cdnMgmtClient.NameAvailability.CheckNameAvailability(endpointName, ResourceType.MicrosoftCdnProfilesEndpoints); Assert.Equal(output.NameAvailable, false); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void OriginUpdateTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardMicrosoft }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); // Create a cdn endpoint with minimum requirements var endpointName = TestUtilities.GenerateName("endpoint"); var originGroupName = "origingroup1"; var originName = "origin1"; var endpointCreateParameters = new Endpoint { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = originName, HostName = "host1.hello.com", Priority = 5, Weight = 100, PrivateLinkLocation = "EastUS", PrivateLinkResourceId = "/subscriptions/da61bba1-cbd5-438c-a738-c717a6b2d59f/resourceGroups/moeidrg/providers/Microsoft.Network/privateLinkServices/pls-east-3", PrivateLinkApprovalMessage = "This is a test request", } }, OriginGroups = new List <DeepCreatedOriginGroup> { new DeepCreatedOriginGroup { Name = originGroupName, HealthProbeSettings = new HealthProbeParameters { ProbeIntervalInSeconds = 60, ProbePath = "/healthz", ProbeProtocol = ProbeProtocol.Https, ProbeRequestType = HealthProbeRequestType.HEAD, }, Origins = new List <ResourceReference> { new ResourceReference { Id = $"{profile.Id}/endpoints/{endpointName}/origins/{originName}" } }, } }, DefaultOriginGroup = new ResourceReference { Id = $"{profile.Id}/endpoints/{endpointName}/originGroups/{originGroupName}" } }; var endpoint = cdnMgmtClient.Endpoints.Create(resourceGroupName, profileName, endpointName, endpointCreateParameters); // Update origin on running endpoint should succeed var originParameters = new OriginUpdateParameters { HostName = "www.bing.com", HttpPort = 1234, HttpsPort = 8081, PrivateLinkLocation = "EastUS", PrivateLinkResourceId = "/subscriptions/da61bba1-cbd5-438c-a738-c717a6b2d59f/resourceGroups/moeidrg/providers/Microsoft.Network/privateLinkServices/pls-east-2", PrivateLinkApprovalMessage = "This is a test update request", }; cdnMgmtClient.Origins.Update(resourceGroupName, profileName, endpointName, "origin1", originParameters); // Update origin with invalid hostname should fail originParameters = new OriginUpdateParameters { HostName = "invalid!Hostname&", HttpPort = 1234, HttpsPort = 8081 }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Origins.Update(resourceGroupName, profileName, endpointName, "origin1", originParameters); }); // Stop endpoint should succeed cdnMgmtClient.Endpoints.Stop(resourceGroupName, profileName, endpointName); // Update origin on stopped endpoint should succeed originParameters = new OriginUpdateParameters { HostName = "www.hello.com", HttpPort = 1265 }; cdnMgmtClient.Origins.Update(resourceGroupName, profileName, endpointName, "origin1", originParameters); // Update origin with invalid ports should fail originParameters = new OriginUpdateParameters { HttpPort = 99999, HttpsPort = -2000 }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Origins.Update(resourceGroupName, profileName, endpointName, "origin1", originParameters); }); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void ProfileUpdateTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardAkamai }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Update profile with new tags var newTags = new Dictionary <string, string> { { "newkey1", "newValue1" } }; var updatedProfile = cdnMgmtClient.Profiles.Update( resourceGroupName, profileName, newTags); VerifyProfileUpdated(profile, updatedProfile, newTags); // Create a standard cdn profile and don't wait for creation to finish profileName = TestUtilities.GenerateName("profile"); createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; cdnMgmtClient.Profiles.BeginCreateAsync(resourceGroupName, profileName, createParameters) .ConfigureAwait(false) .GetAwaiter() .GetResult(); // Update profile in creating state should fail var tags = new Dictionary <string, string> { { "key", "value" } }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Profiles.Update(resourceGroupName, profileName, tags); }); // Wait for second profile to complete creation CdnTestUtilities.WaitIfNotInPlaybackMode(2); // Update profile now should succeed cdnMgmtClient.Profiles.Update(resourceGroupName, profileName, tags); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void OriginGetListTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); // Create a cdn endpoint with minimum requirements string endpointName = TestUtilities.GenerateName("endpoint"); var endpointCreateParameters = new Endpoint { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(resourceGroupName, profileName, endpointName, endpointCreateParameters); // Get origin on endpoint should return the deep created origin var origin = cdnMgmtClient.Origins.Get(resourceGroupName, profileName, endpointName, "origin1"); Assert.NotNull(origin); // Get origins on endpoint should return one var origins = cdnMgmtClient.Origins.ListByEndpoint(resourceGroupName, profileName, endpointName); Assert.Single(origins); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void ProfileCreateTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard verizon cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Create a standard akamai cdn profile profileName = TestUtilities.GenerateName("profile"); createParameters = new Profile { Location = "EastUs", Sku = new Sku { Name = SkuName.StandardAkamai }, Tags = new Dictionary <string, string> { { "key3", "value3" }, { "key4", "value4" } } }; profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Create a standard microsoft cdn profile profileName = TestUtilities.GenerateName("profile"); createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardMicrosoft }, Tags = new Dictionary <string, string> { { "key5", "value5" }, { "key6", "value6" } } }; profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Create a premium verizon cdn profile profileName = TestUtilities.GenerateName("profile"); createParameters = new Profile { Location = "EastUs", Sku = new Sku { Name = SkuName.PremiumVerizon }, Tags = new Dictionary <string, string> { { "key7", "value7" }, { "key8", "value8" } } }; profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); VerifyProfileCreated(profile, createParameters); // Create profile with same name but different params should fail createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardVerizon }, Tags = new Dictionary <string, string>() }; Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); }); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void CustomDomainCRUDTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType().FullName)) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a standard cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardMicrosoft }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); // Create a cdn endpoint with minimum requirements string endpointName = "endpoint-f3757d2a3e10"; var endpointCreateParameters = new Endpoint { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }; var endpoint = cdnMgmtClient.Endpoints.Create(resourceGroupName, profileName, endpointName, endpointCreateParameters); // List custom domains one this endpoint should return none var customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(resourceGroupName, profileName, endpointName); Assert.Empty(customDomains); // NOTE: There is a CName mapping already created for this custom domain and endpoint hostname // "sdk-1-f3757d2a3e10.DUSTYDOGPETCARE.US" maps to "endpoint-f3757d2a3e10.azureedge.net" // "sdk-2-f3757d2a3e10.DUSTYDOGPETCARE.US" maps to "endpoint-f3757d2a3e10.azureedge.net" // Create custom domain on running endpoint should succeed string customDomainName1 = TestUtilities.GenerateName("customDomain"); cdnMgmtClient.CustomDomains.Create(resourceGroupName, profileName, endpointName, customDomainName1, "sdk-1-f3757d2a3e10.DUSTYDOGPETCARE.US"); // List custom domains one this endpoint should return one customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(resourceGroupName, profileName, endpointName); Assert.Single(customDomains); // Stop endpoint cdnMgmtClient.Endpoints.Stop(resourceGroupName, profileName, endpointName); // Create another custom domain on stopped endpoint should succeed string customDomainName2 = TestUtilities.GenerateName("customDomain"); cdnMgmtClient.CustomDomains.Create(resourceGroupName, profileName, endpointName, customDomainName2, "sdk-2-f3757d2a3e10.DUSTYDOGPETCARE.US"); // List custom domains one this endpoint should return two customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(resourceGroupName, profileName, endpointName); Assert.Equal(2, customDomains.Count()); // Disable custom https on custom domain that is not enabled should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.CustomDomains.DisableCustomHttps(resourceGroupName, profileName, endpointName, customDomainName2); }); // Delete second custom domain on stopped endpoint should succeed cdnMgmtClient.CustomDomains.Delete(resourceGroupName, profileName, endpointName, customDomainName2); // Get deleted custom domain should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.CustomDomains.Get(resourceGroupName, profileName, endpointName, customDomainName2); }); // List custom domains on endpoint should return one customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(resourceGroupName, profileName, endpointName); Assert.Single(customDomains); // Start endpoint cdnMgmtClient.Endpoints.Start(resourceGroupName, profileName, endpointName); // Enable custom https using CDN managed certificate on custom domain cdnMgmtClient.CustomDomains.EnableCustomHttps(resourceGroupName, profileName, endpointName, customDomainName1); // add the same deleted custom domain again cdnMgmtClient.CustomDomains.Create(resourceGroupName, profileName, endpointName, customDomainName2, "sdk-2-f3757d2a3e10.DUSTYDOGPETCARE.US"); // Enable custom https using BYOC on custom domain var byocParameters = new KeyVaultCertificateSourceParameters() { ResourceGroupName = "byoc", SecretName = "CdnSDKE2EBYOCTest", SecretVersion = "526c5d25cc1a46a5bb85ce85ee2b89cc", SubscriptionId = "3c0124f9-e564-4c42-86f7-fa79457aedc3", VaultName = "Azure-CDN-BYOC" }; cdnMgmtClient.CustomDomains.EnableCustomHttps(resourceGroupName, profileName, endpointName, customDomainName2, new UserManagedHttpsParameters(ProtocolType.ServerNameIndication, byocParameters)); // Delete first custom domain should succeed cdnMgmtClient.CustomDomains.Delete(resourceGroupName, profileName, endpointName, customDomainName1); // Get deleted custom domain should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.CustomDomains.Get(resourceGroupName, profileName, endpointName, customDomainName1); }); // Delete second custom domain should succeed cdnMgmtClient.CustomDomains.Delete(resourceGroupName, profileName, endpointName, customDomainName2); // Get deleted custom domain should fail Assert.ThrowsAny <ErrorResponseException>(() => { cdnMgmtClient.CustomDomains.Get(resourceGroupName, profileName, endpointName, customDomainName2); }); // List custom domains on endpoint should return none customDomains = cdnMgmtClient.CustomDomains.ListByEndpoint(resourceGroupName, profileName, endpointName); Assert.Empty(customDomains); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }
public void WafPolicyLinkTest() { var handler1 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create clients var cdnMgmtClient = CdnTestUtilities.GetCdnManagementClient(context, handler1); var resourcesClient = CdnTestUtilities.GetResourceManagementClient(context, handler2); // Create resource group var resourceGroupName = CdnTestUtilities.CreateResourceGroup(resourcesClient); // Create a cdn waf policy var policyName = TestUtilities.GenerateName("policy"); var policy = cdnMgmtClient.Policies.CreateOrUpdate(resourceGroupName, policyName, new CdnWebApplicationFirewallPolicy { Location = "Global", Sku = new Sku("Standard_Microsoft"), PolicySettings = new PolicySettings { EnabledState = "Enabled", Mode = "Detection", DefaultCustomBlockResponseBody = "PGh0bWw+PGJvZHk+PGgzPkludmFsaWQgcmVxdWVzdDwvaDM+PC9ib2R5PjwvaHRtbD4=", DefaultRedirectUrl = "https://example.com/redirected", DefaultCustomBlockResponseStatusCode = 406 }, CustomRules = new CustomRuleList(new List <CustomRule> { new CustomRule { Name = "CustomRule1", Priority = 2, EnabledState = "Enabled", Action = "Block", MatchConditions = new List <MatchCondition> { new MatchCondition { MatchVariable = "QueryString", OperatorProperty = "Contains", NegateCondition = false, MatchValue = new List <string> { "TestTrigger123" }, //Transforms = new List<String> { "Uppercase" } } } } }), RateLimitRules = new RateLimitRuleList(new List <RateLimitRule> { new RateLimitRule { Name = "RateLimitRule1", Priority = 1, EnabledState = "Disabled", RateLimitDurationInMinutes = 1, RateLimitThreshold = 3, MatchConditions = new List <MatchCondition> { new MatchCondition { MatchVariable = "RemoteAddr", Selector = null, OperatorProperty = "IPMatch", NegateCondition = false, MatchValue = new List <string> { "131.107.0.0/16", "167.220.0.0/16" } } }, Action = "Block" }, new RateLimitRule { Name = "RateLimitRule2", Priority = 10, EnabledState = "Enabled", RateLimitDurationInMinutes = 1, RateLimitThreshold = 1, MatchConditions = new List <MatchCondition> { new MatchCondition { MatchVariable = "RequestUri", Selector = null, OperatorProperty = "Contains", NegateCondition = false, MatchValue = new List <string> { "yes" } } }, Action = "Block" } }), ManagedRules = new ManagedRuleSetList(new List <ManagedRuleSet> { new ManagedRuleSet { RuleSetType = "DefaultRuleSet", RuleSetVersion = "1.0", RuleGroupOverrides = new List <ManagedRuleGroupOverride> { new ManagedRuleGroupOverride { RuleGroupName = "JAVA", Rules = new List <ManagedRuleOverride> { new ManagedRuleOverride { RuleId = "944100", EnabledState = "Disabled", Action = "Redirect" } } } } } }), Tags = new Dictionary <string, string> { { "abc", "123" } } }); // Create a standard Microsoft cdn profile string profileName = TestUtilities.GenerateName("profile"); Profile createParameters = new Profile { Location = "WestUs", Sku = new Sku { Name = SkuName.StandardMicrosoft }, Tags = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } } }; // Wait for policy to complete creation CdnTestUtilities.WaitIfNotInPlaybackMode(); var profile = cdnMgmtClient.Profiles.Create(resourceGroupName, profileName, createParameters); // Create a cdn endpoint with waf link should succeed string endpointName = TestUtilities.GenerateName("endpoint"); var endpoint = cdnMgmtClient.Endpoints.Create(resourceGroupName, profileName, endpointName, new Endpoint { Location = "WestUs", IsHttpAllowed = true, IsHttpsAllowed = true, WebApplicationFirewallPolicyLink = new EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink(policy.Id.ToString()), Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin1", HostName = "host1.hello.com" } } }); // Verify linked endpoint var existingEndpoint = cdnMgmtClient.Endpoints.Get(resourceGroupName, profileName, endpointName); Assert.Equal(policy.Id.ToString(), existingEndpoint.WebApplicationFirewallPolicyLink.Id); // Verify policy shows linked endpoint var existingPolicy = cdnMgmtClient.Policies.Get(resourceGroupName, policyName); Assert.Single(existingPolicy.EndpointLinks); Assert.Contains(endpoint.Id, existingPolicy.EndpointLinks.Select(l => l.Id)); // Create second endpoint linked to the same profile should succeed var endpoint2Name = TestUtilities.GenerateName("endpoint"); var endpoint2 = cdnMgmtClient.Endpoints.Create(resourceGroupName, profileName, endpoint2Name, new Endpoint { Location = "EastUs", IsHttpAllowed = false, IsHttpsAllowed = true, WebApplicationFirewallPolicyLink = new EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink(policy.Id.ToString()), Origins = new List <DeepCreatedOrigin> { new DeepCreatedOrigin { Name = "origin2", HostName = "host2.hello.com" } } }); // Verify second linked endpoint var existingEndpoint2 = cdnMgmtClient.Endpoints.Get(resourceGroupName, profileName, endpoint2Name); Assert.Equal(policy.Id.ToString(), existingEndpoint2.WebApplicationFirewallPolicyLink.Id); // Verify policy shows both linked endpoints. existingPolicy = cdnMgmtClient.Policies.Get(resourceGroupName, policyName); Assert.Equal(2, existingPolicy.EndpointLinks.Count()); Assert.Contains(endpoint.Id, existingPolicy.EndpointLinks.Select(l => l.Id)); Assert.Contains(endpoint2.Id, existingPolicy.EndpointLinks.Select(l => l.Id)); // Unlink endpoint should succeed. endpoint.WebApplicationFirewallPolicyLink = null; endpoint = cdnMgmtClient.Endpoints.Create(resourceGroupName, profileName, endpointName, endpoint); Assert.Null(endpoint.WebApplicationFirewallPolicyLink); // Verify policy shows only second linked endpoint. existingPolicy = cdnMgmtClient.Policies.Get(resourceGroupName, policyName); Assert.Single(existingPolicy.EndpointLinks); Assert.Contains(endpoint2.Id, existingPolicy.EndpointLinks.Select(l => l.Id)); // Unlink second endpoint should succeed endpoint2.WebApplicationFirewallPolicyLink = null; endpoint2 = cdnMgmtClient.Endpoints.Create(resourceGroupName, profileName, endpoint2Name, endpoint2); Assert.Null(endpoint2.WebApplicationFirewallPolicyLink); // Verify policy shows no linked endpoints existingPolicy = cdnMgmtClient.Policies.Get(resourceGroupName, policyName); Assert.Empty(existingPolicy.EndpointLinks); // Delete resource group CdnTestUtilities.DeleteResourceGroup(resourcesClient, resourceGroupName); } }