public static async Task <Authentication> LoginRandomAsync(this TestContext context, Authority authority, Func <IUser, bool> predicate)
        {
            var authentications = context.Properties[authenticationKey] as HashSet <Authentication>;
            var app             = context.Properties[appKey] as TestApplication;
            var cremaHost       = context.Properties[cremaHostKey] as ICremaHost;
            var userFlags       = AuthorityUtility.ToUserFlags(authority) | UserFlags.NotBanned | UserFlags.Offline;
            var userFilter      = new UserFilter(userFlags, predicate);
            var user            = await userFilter.GetUserAsync(app);

            var password            = user.GetPassword();
            var authenticationToken = await cremaHost.LoginAsync(user.ID, password);

            var authentication = await cremaHost.AuthenticateAsync(authenticationToken);

            authentications.Add(authentication);
            return(authentication);
        }
示例#2
0
        private async Task InitializeAccessAsync(IServiceProvider serviceProvider, IDataBase dataBase, Authentication authentication)
        {
            var isLoaded    = dataBase.IsLoaded;
            var userFlags   = UserFlags.Offline | UserFlags.NotBanned;
            var excludeList = new List <string>()
            {
                authentication.ID
            };

            if (isLoaded == false)
            {
                await dataBase.LoadAsync(authentication);
            }
            await dataBase.SetPrivateAsync(authentication);

            {
                foreach (var item in new[] { UserFlags.Admin })
                {
                    var userFilter = new UserFilter(userFlags | item)
                    {
                        ExcludedUserIDs = excludeList.ToArray()
                    };
                    var user = await userFilter.GetUserAsync(serviceProvider);

                    await dataBase.AddAccessMemberAsync(authentication, user.ID, AccessType.Master);

                    excludeList.Add(user.ID);
                }
            }
            {
                foreach (var item in new[] { UserFlags.Admin, UserFlags.Member })
                {
                    var userFilter = new UserFilter(userFlags | item)
                    {
                        ExcludedUserIDs = excludeList.ToArray()
                    };
                    var user = await userFilter.GetUserAsync(serviceProvider);

                    await dataBase.AddAccessMemberAsync(authentication, user.ID, AccessType.Developer);

                    excludeList.Add(user.ID);
                }
            }
            {
                foreach (var item in new[] { UserFlags.Admin, UserFlags.Member })
                {
                    var userFilter = new UserFilter(userFlags | item)
                    {
                        ExcludedUserIDs = excludeList.ToArray()
                    };
                    var user = await userFilter.GetUserAsync(serviceProvider);

                    await dataBase.AddAccessMemberAsync(authentication, user.ID, AccessType.Editor);

                    excludeList.Add(user.ID);
                }
            }
            {
                foreach (var item in new[] { UserFlags.Admin, UserFlags.Member, UserFlags.Guest })
                {
                    var userFilter = new UserFilter(userFlags | item)
                    {
                        ExcludedUserIDs = excludeList.ToArray()
                    };
                    var user = await userFilter.GetUserAsync(serviceProvider);

                    await dataBase.AddAccessMemberAsync(authentication, user.ID, AccessType.Guest);

                    excludeList.Add(user.ID);
                }
            }
            if (isLoaded == false)
            {
                await dataBase.UnloadAsync(authentication);
            }
        }