コード例 #1
0
        public void NewPolicyDifferentValues()
        {
            List <Utility.RawStoredAccessPolicy> samplePolicies = Utility.SetUpStoredAccessPolicyData <SharedAccessTablePolicy>(lang == Language.NodeJS);

            string     tableName = Utility.GenNameString("table");
            CloudTable table     = tableUtil.CreateTable(tableName);

            Utility.ClearStoredAccessPolicy <CloudTable>(table);

            try
            {
                foreach (Utility.RawStoredAccessPolicy rawPolicy in samplePolicies)
                {
                    CreateStoredAccessPolicy(rawPolicy.PolicyName, rawPolicy.Permission, rawPolicy.StartTime, rawPolicy.ExpiryTime, table, false);
                }

                Utility.WaitForPolicyBecomeValid <CloudTable>(table, expectedCount: samplePolicies.Count);

                SharedAccessTablePolicies expectedPolicies = new SharedAccessTablePolicies();
                foreach (Utility.RawStoredAccessPolicy rawPolicy in samplePolicies)
                {
                    expectedPolicies.Add(rawPolicy.PolicyName, Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(rawPolicy.StartTime, rawPolicy.ExpiryTime, rawPolicy.Permission));
                }

                Utility.ValidateStoredAccessPolicies <SharedAccessTablePolicy>(table.GetPermissions().SharedAccessPolicies, expectedPolicies);
            }
            finally
            {
                tableUtil.RemoveTable(tableName);
            }
        }
コード例 #2
0
        internal void CreateStoredAccessPolicyAndValidate(string policyName, string permission, DateTime?startTime, DateTime?expiryTime, string tableName = null, bool ifCleanUpTable = true, bool ifCleanUpPolicy = true)
        {
            CloudTable table = tableUtil.CreateTable(tableName);

            try
            {
                //create the policy
                CreateStoredAccessPolicy(policyName, permission, startTime, expiryTime, table, ifCleanUpPolicy);

                //get the policy and validate
                SharedAccessTablePolicies expectedPolicies = new SharedAccessTablePolicies();
                expectedPolicies.Add(policyName, Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(startTime, expiryTime, permission));

                Utility.RawStoredAccessPolicy policy = new Utility.RawStoredAccessPolicy(policyName, startTime, expiryTime, permission);
                Utility.WaitForPolicyBecomeValid <CloudTable>(table, policy);
                Utility.ValidateStoredAccessPolicies <SharedAccessTablePolicy>(table.GetPermissions().SharedAccessPolicies, expectedPolicies);
            }
            finally
            {
                if (ifCleanUpPolicy)
                {
                    Utility.ClearStoredAccessPolicy <CloudTable>(table);
                }
                if (ifCleanUpTable)
                {
                    tableUtil.RemoveTable(table);
                }
            }
        }
コード例 #3
0
 private static void WriteSharedAccessIdentifiers(SharedAccessTablePolicies sharedAccessPolicies, Stream outputStream)
 {
     WriteSharedAccessIdentifiers(sharedAccessPolicies, outputStream, delegate(SharedAccessTablePolicy policy, XmlWriter writer)
     {
         writer.WriteElementString("Start", SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessStartTime));
         writer.WriteElementString("Expiry", SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessExpiryTime));
         writer.WriteElementString("Permission", SharedAccessTablePolicy.PermissionsToString(policy.Permissions));
     });
 }
コード例 #4
0
        public void SetPolicyNoStartTimeNoExpiryTime()
        {
            CloudTable table = tableUtil.CreateTable();

            Utility.ClearStoredAccessPolicy <CloudTable>(table);
            Utility.RawStoredAccessPolicy samplePolicy = Utility.SetUpStoredAccessPolicyData <SharedAccessTablePolicy>(lang == Language.NodeJS)[0];
            double effectiveTime = 30;

            try
            {
                CreateStoredAccessPolicy(samplePolicy.PolicyName, samplePolicy.Permission, samplePolicy.StartTime, samplePolicy.ExpiryTime, table);

                //NoStartTime
                Test.Assert(CommandAgent.SetAzureStorageTableStoredAccessPolicy(table.Name, samplePolicy.PolicyName, null, null, null, true, false),
                            "Set stored access policy with -NoStartTime should succeed");
                Thread.Sleep(TimeSpan.FromSeconds(effectiveTime));
                SharedAccessTablePolicies expectedPolicies = new SharedAccessTablePolicies();
                expectedPolicies.Add(samplePolicy.PolicyName, Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(null, samplePolicy.ExpiryTime, samplePolicy.Permission));
                Utility.ValidateStoredAccessPolicies <SharedAccessTablePolicy>(table.GetPermissions().SharedAccessPolicies, expectedPolicies);
                SharedAccessTablePolicy policy = Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(null, samplePolicy.ExpiryTime, samplePolicy.Permission);
                Collection <Dictionary <string, object> > comp = new Collection <Dictionary <string, object> >();
                comp.Add(Utility.ConstructGetPolicyOutput <SharedAccessTablePolicy>(policy, samplePolicy.PolicyName));
                CommandAgent.OutputValidation(comp);

                //NoExpiryTime
                Test.Assert(CommandAgent.SetAzureStorageTableStoredAccessPolicy(table.Name, samplePolicy.PolicyName, null, null, null, false, true),
                            "Set stored access policy with -NoExpiryTime should succeed");
                Thread.Sleep(TimeSpan.FromSeconds(effectiveTime));
                expectedPolicies = new SharedAccessTablePolicies();
                expectedPolicies.Add(samplePolicy.PolicyName, Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(null, null, samplePolicy.Permission));
                Utility.ValidateStoredAccessPolicies <SharedAccessTablePolicy>(table.GetPermissions().SharedAccessPolicies, expectedPolicies);
                policy = Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(null, null, samplePolicy.Permission);
                comp   = new Collection <Dictionary <string, object> >();
                comp.Add(Utility.ConstructGetPolicyOutput <SharedAccessTablePolicy>(policy, samplePolicy.PolicyName));
                CommandAgent.OutputValidation(comp);

                //both
                Utility.ClearStoredAccessPolicy <CloudTable>(table);
                CreateStoredAccessPolicy(samplePolicy.PolicyName, samplePolicy.Permission, samplePolicy.StartTime, samplePolicy.ExpiryTime, table);

                Test.Assert(CommandAgent.SetAzureStorageTableStoredAccessPolicy(table.Name, samplePolicy.PolicyName, null, null, null, true, true),
                            "Set stored access policy with both -NoStartTime and -NoExpiryTime should succeed");
                Thread.Sleep(TimeSpan.FromSeconds(effectiveTime));
                expectedPolicies = new SharedAccessTablePolicies();
                expectedPolicies.Add(samplePolicy.PolicyName, Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(null, null, samplePolicy.Permission));
                Utility.ValidateStoredAccessPolicies <SharedAccessTablePolicy>(table.GetPermissions().SharedAccessPolicies, expectedPolicies);
                policy = Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(null, null, samplePolicy.Permission);
                comp   = new Collection <Dictionary <string, object> >();
                comp.Add(Utility.ConstructGetPolicyOutput <SharedAccessTablePolicy>(policy, samplePolicy.PolicyName));
                CommandAgent.OutputValidation(comp);
            }
            finally
            {
                tableUtil.RemoveTable(table);
            }
        }
        internal static Task <TablePermissions> ParseGetAclAsync(RESTCommand <TablePermissions> cmd, HttpResponseMessage resp, OperationContext ctx)
        {
            TablePermissions tablePermissions = new TablePermissions();

            CommonUtility.AssertNotNull("permissions", tablePermissions);
            SharedAccessTablePolicies sharedAccessPolicies = tablePermissions.SharedAccessPolicies;

            foreach (KeyValuePair <string, SharedAccessTablePolicy> accessIdentifier in new TableAccessPolicyResponse(cmd.ResponseStream).AccessIdentifiers)
            {
                sharedAccessPolicies.Add(accessIdentifier.Key, accessIdentifier.Value);
            }
            return(Task.FromResult(tablePermissions));
        }
コード例 #6
0
        internal void SetStoredAccessPolicyAndValidate(Utility.RawStoredAccessPolicy policy1, Utility.RawStoredAccessPolicy policy2, string tableName = null, bool ifCleanupPolicy = true, bool ifCleanupTable = true)
        {
            CloudTable table = tableUtil.CreateTable(tableName);

            if (ifCleanupPolicy)
            {
                Utility.ClearStoredAccessPolicy <CloudTable>(table);
            }

            policy2.PolicyName = policy1.PolicyName;

            try
            {
                CommandAgent.NewAzureStorageTableStoredAccessPolicy(table.Name, policy1.PolicyName, policy1.Permission, policy1.StartTime, policy1.ExpiryTime);
                Test.Assert(CommandAgent.SetAzureStorageTableStoredAccessPolicy(table.Name, policy2.PolicyName, policy2.Permission, policy2.StartTime, policy2.ExpiryTime),
                            "Set stored access policy in table should succeed");
                Test.Info("Set stored access policy:{0}", policy2.PolicyName);

                //get the policy and validate
                SharedAccessTablePolicies expectedPolicies = new SharedAccessTablePolicies();
                if (policy2.StartTime == null)
                {
                    policy2.StartTime = policy1.StartTime;
                }
                if (policy2.ExpiryTime == null)
                {
                    policy2.ExpiryTime = policy1.ExpiryTime;
                }
                if (policy2.Permission == null)
                {
                    policy2.Permission = policy1.Permission;
                }

                expectedPolicies.Add(policy2.PolicyName, Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(policy2.StartTime, policy2.ExpiryTime, policy2.Permission));
                Utility.WaitForPolicyBecomeValid <CloudTable>(table, policy2);
                Utility.ValidateStoredAccessPolicies <SharedAccessTablePolicy>(table.GetPermissions().SharedAccessPolicies, expectedPolicies);

                //validate the output
                SharedAccessTablePolicy policy = Utility.SetupSharedAccessPolicy <SharedAccessTablePolicy>(policy2.StartTime, policy2.ExpiryTime, policy2.Permission);
                Collection <Dictionary <string, object> > comp = new Collection <Dictionary <string, object> >();
                comp.Add(Utility.ConstructGetPolicyOutput <SharedAccessTablePolicy>(policy, policy2.PolicyName));
                CommandAgent.OutputValidation(comp);
            }
            finally
            {
                if (ifCleanupTable)
                {
                    tableUtil.RemoveTable(table);
                }
            }
        }
コード例 #7
0
 /// <summary>
 /// Writes a collection of shared access policies to the specified stream in XML format.
 /// </summary>
 /// <param name="sharedAccessPolicies">A collection of shared access policies.</param>
 /// <param name="outputStream">An output stream.</param>
 public static void WriteSharedAccessIdentifiers(SharedAccessTablePolicies sharedAccessPolicies, Stream outputStream)
 {
     Request.WriteSharedAccessIdentifiers(
         sharedAccessPolicies,
         outputStream,
         (policy, writer) =>
     {
         writer.WriteElementString(
             Constants.Start,
             SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessStartTime));
         writer.WriteElementString(
             Constants.Expiry,
             SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessExpiryTime));
         writer.WriteElementString(
             Constants.Permission,
             SharedAccessTablePolicy.PermissionsToString(policy.Permissions));
     });
 }
コード例 #8
0
 /// <summary>
 /// Writes a collection of shared access policies to the specified stream in XML format.
 /// </summary>
 /// <param name="sharedAccessPolicies">A collection of shared access policies.</param>
 /// <param name="outputStream">An output stream.</param>
 public static void WriteSharedAccessIdentifiers(SharedAccessTablePolicies sharedAccessPolicies, Stream outputStream)
 {
     Request.WriteSharedAccessIdentifiers(
         sharedAccessPolicies,
         outputStream,
         (policy, writer) =>
         {
             writer.WriteElementString(
                 Constants.Start,
                 SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessStartTime));
             writer.WriteElementString(
                 Constants.Expiry,
                 SharedAccessSignatureHelper.GetDateTimeOrEmpty(policy.SharedAccessExpiryTime));
             writer.WriteElementString(
                 Constants.Permission,
                 SharedAccessTablePolicy.PermissionsToString(policy.Permissions));
         });
 }
コード例 #9
0
        internal async Task GetAzureTableStoredAccessPolicyAsync(long taskId, IStorageTableManagement localChannel, string tableName, string policyName)
        {
            SharedAccessTablePolicies shareAccessPolicies = await GetPoliciesAsync(localChannel, tableName, policyName).ConfigureAwait(false);

            if (!String.IsNullOrEmpty(policyName))
            {
                if (shareAccessPolicies.Keys.Contains(policyName))
                {
                    OutputStream.WriteObject(taskId, AccessPolicyHelper.ConstructPolicyOutputPSObject <SharedAccessTablePolicy>(shareAccessPolicies, policyName));
                }
                else
                {
                    throw new ResourceNotFoundException(String.Format(CultureInfo.CurrentCulture, Resources.PolicyNotFound, policyName));
                }
            }
            else
            {
                foreach (string key in shareAccessPolicies.Keys)
                {
                    OutputStream.WriteObject(taskId, AccessPolicyHelper.ConstructPolicyOutputPSObject <SharedAccessTablePolicy>(shareAccessPolicies, key));
                }
            }
        }
コード例 #10
0
 public static void WriteSharedAccessIdentifiers(SharedAccessTablePolicies sharedAccessPolicies, Stream outputStream)
 {
     throw new System.NotImplementedException();
 }
コード例 #11
0
 public TablePermissions()
 {
     SharedAccessPolicies = new SharedAccessTablePolicies();
 }