コード例 #1
0
        public async Task FileServiceCorsTest()
        {
            // Create resource group
            var rgName = await CreateResourceGroupAsync();

            string accountName = Recording.GenerateAssetName("sto");

            // Create storage account
            StorageAccount account = await CreateStorageAccountAsync(rgName, accountName);

            VerifyAccountProperties(account, true);

            // implement case
            Response <FileServiceProperties> properties1 = await FileServicesClient.GetServicePropertiesAsync(rgName, accountName);

            Assert.AreEqual(0, properties1.Value.Cors.CorsRulesValue.Count());

            properties1.Value.Cors = new CorsRules
            {
                CorsRulesValue =
                {
                    new CorsRule(allowedOrigins: new string[]                     { "http://www.contoso.com", "http://www.fabrikam.com"    },
                                 allowedMethods: new CorsRuleAllowedMethodsItem[] { "GET",                    "HEAD", "POST", "OPTIONS", "MERGE", "PUT"},
                                 maxAgeInSeconds: 100,
                                 exposedHeaders: new string[]                     { "x-ms-meta-*" },
                                 allowedHeaders: new string[]                     { "x-ms-meta-abc",          "x-ms-meta-data*", "x-ms-meta-target*"}),

                    new CorsRule(allowedOrigins: new string[]                     { "*" },
                                 allowedMethods: new CorsRuleAllowedMethodsItem[] { "GET" },
                                 maxAgeInSeconds: 2,
                                 exposedHeaders: new string[]                     { "*" },
                                 allowedHeaders: new string[]                     { "*" }),

                    new CorsRule(allowedOrigins: new string[]                     { "http://www.abc23.com",   "https://www.fabrikam.com/*" },
                                 allowedMethods: new CorsRuleAllowedMethodsItem[] { "GET",                    "PUT", "CONNECT"             },
                                 maxAgeInSeconds: 2000,
                                 exposedHeaders: new string[]                     { "x-ms-meta-abc",          "x-ms-meta-data*", "x -ms-meta-target*"},
                                 allowedHeaders: new string[]                     { "x-ms-meta-12345675754564*" })
                }
            };

            Response <FileServiceProperties> properties3 = await FileServicesClient.SetServicePropertiesAsync(rgName, accountName, properties1.Value);

            //Validate CORS Rules
            Assert.AreEqual(properties1.Value.Cors.CorsRulesValue.Count, properties3.Value.Cors.CorsRulesValue.Count);
            for (int i = 0; i < properties1.Value.Cors.CorsRulesValue.Count; i++)
            {
                CorsRule putRule = properties1.Value.Cors.CorsRulesValue[i];
                CorsRule getRule = properties3.Value.Cors.CorsRulesValue[i];

                Assert.AreEqual(putRule.AllowedHeaders, getRule.AllowedHeaders);
                Assert.AreEqual(putRule.AllowedMethods, getRule.AllowedMethods);
                Assert.AreEqual(putRule.AllowedOrigins, getRule.AllowedOrigins);
                Assert.AreEqual(putRule.ExposedHeaders, getRule.ExposedHeaders);
                Assert.AreEqual(putRule.MaxAgeInSeconds, getRule.MaxAgeInSeconds);
            }

            Response <FileServiceProperties> properties4 = await FileServicesClient.GetServicePropertiesAsync(rgName, accountName);

            //Validate CORS Rules
            Assert.AreEqual(properties1.Value.Cors.CorsRulesValue.Count, properties4.Value.Cors.CorsRulesValue.Count);
            for (int i = 0; i < properties1.Value.Cors.CorsRulesValue.Count; i++)
            {
                CorsRule putRule = properties1.Value.Cors.CorsRulesValue[i];
                CorsRule getRule = properties4.Value.Cors.CorsRulesValue[i];

                Assert.AreEqual(putRule.AllowedHeaders, getRule.AllowedHeaders);
                Assert.AreEqual(putRule.AllowedMethods, getRule.AllowedMethods);
                Assert.AreEqual(putRule.AllowedOrigins, getRule.AllowedOrigins);
                Assert.AreEqual(putRule.ExposedHeaders, getRule.ExposedHeaders);
                Assert.AreEqual(putRule.MaxAgeInSeconds, getRule.MaxAgeInSeconds);
            }
        }