private static Func <ISession <PrivateAuthentication>, ITest, Task <List <AclSpec> > > UpdateAcl(List <AclSpec> spec) { return(async(session, test) => { if (spec == null) { return new List <AclSpec>(); } // read current settings var request = AclRequest.GetFieldPhaseInfo().Fields(spec.Select(x => x.Field).ToArray()); var read = new { Task = session.CallAsync(request), Data = spec }; await read.Task; Assume.That(read.Task.Result, Is.Not.Empty, "Data was not found. Please check for typoes"); var data = spec.Select(x => { var fieldsToSave = read.Task.Result[x.Field].Single(item => string.Equals(item.Group.Name, x.AclGroupName, StringComparison.OrdinalIgnoreCase)); return new AclSpec { Field = x.Field, AclGroupName = x.AclGroupName, OptionIdToAccessTypeMap = fieldsToSave.PhasePermission.ToDictionary(item => item.Key, item => item.Value), GeneralFieldAccessType = fieldsToSave.Permission }; }).ToList(); // update the fields if (spec.Count == 1) { var singleItem = spec.Single(); if (singleItem.OptionIdToAccessTypeMap == null || !singleItem.OptionIdToAccessTypeMap.Any()) { session.Call(AclRequest.UpdateFieldPhaseInfo(singleItem.Field, singleItem.AclGroupName, singleItem.OptionAliasToAccessTypeMap, singleItem.GeneralFieldAccessType)); } else { session.Call(AclRequest.UpdateFieldPhaseInfo(singleItem.Field, singleItem.AclGroupName, singleItem.OptionIdToAccessTypeMap, singleItem.GeneralFieldAccessType)); } } else { session.Call(AclRequest.UpdateFieldPhaseInfo(spec.Select(x => new FieldPhaseInfoUpdateRequest.FieldPhaseInfoUpdateRequestItem ( aclGroupName: x.AclGroupName, field: x.Field, permission: x.GeneralFieldAccessType, optionAliasToAccessTypeMap: x.OptionAliasToAccessTypeMap, optionIdToAccessTypeMap: x.OptionIdToAccessTypeMap )))); } return data; }); }
private void SetAclAccessLevelForAllPhases(AccessType accessType) { var data = CollectAclInfo(accessType); var request = AclRequest.UpdateFieldPhaseInfo(data.Select(x => new FieldPhaseInfoUpdateRequest.FieldPhaseInfoUpdateRequestItem( aclGroupName: x.AclGroupName, field: x.Field, permission: x.GeneralFieldAccessType, optionIdToAccessTypeMap: x.OptionIdToAccessTypeMap, optionAliasToAccessTypeMap: null))); var authInfo = TestContext.CurrentContext.Test.Properties[PrivateFixtureExecutorAttribute.AuthenticationInfoPropertyName][0] as MultiItemAuthenticationInfo; var userInfo = authInfo.Users["defaultUser"]; using (var session = TestBase.PrivateAuthentication.GetPrivateSession(userInfo.Company.Name, userInfo.Login, userInfo.Password)) { session.Call(request); } }