Exemplo n.º 1
0
        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;
            });
        }
Exemplo n.º 2
0
        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);
            }
        }