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); } }
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); } } }
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)); }); }
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)); }
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); } } }
/// <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)); }); }
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)); } } }
public static void WriteSharedAccessIdentifiers(SharedAccessTablePolicies sharedAccessPolicies, Stream outputStream) { throw new System.NotImplementedException(); }
public TablePermissions() { SharedAccessPolicies = new SharedAccessTablePolicies(); }