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); }
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); } }