コード例 #1
0
        public async Task UsersBanChanged_TestAsync()
        {
            var authentication = await this.TestContext.LoginRandomAsync(Authority.Admin);

            var userFilter1 = new UserFilter(UserFlags.Member | UserFlags.Guest | UserFlags.NotBanned);
            var user1       = await userFilter1.GetUserAsync(app);

            var userFilter2 = new UserFilter(UserFlags.Member | UserFlags.Guest | UserFlags.Banned)
            {
                ExcludedUserIDs = new[] { user1.ID }
            };
            var user2 = await userFilter2.GetUserAsync(app);

            var actualUserID    = string.Empty;
            var actualMessage   = string.Empty;
            var actualBanType   = BanChangeType.Unban;
            var expectedMessage = RandomUtility.NextString();
            await userCollection.AddUsersBanChangedEventHandlerAsync(UserCollection_UsersBanChanged);

            await user1.BanAsync(authentication, expectedMessage);

            Assert.AreEqual(user1.ID, actualUserID);
            Assert.AreEqual(expectedMessage, actualMessage);
            Assert.AreEqual(BanChangeType.Ban, actualBanType);
            await userCollection.RemoveUsersBanChangedEventHandlerAsync(UserCollection_UsersBanChanged);

            await user2.UnbanAsync(authentication);

            Assert.AreEqual(user1.ID, actualUserID);
            Assert.AreEqual(expectedMessage, actualMessage);
            Assert.AreEqual(BanChangeType.Ban, actualBanType);
            Assert.AreNotEqual(actualUserID, user2.ID);

            void UserCollection_UsersBanChanged(object sender, ItemsEventArgs <IUser> e)
            {
                var user     = e.Items.Single();
                var metaData = e.MetaData as object[];

                actualUserID  = user.ID;
                actualBanType = (BanChangeType)metaData[0];
                actualMessage = (metaData[1] as string[]).Single();
            }
        }