Exemplo n.º 1
0
        public async Task MessageReceived_Test()
        {
            var cremaHost       = app.GetService(typeof(ICremaHost)) as ICremaHost;
            var authentication1 = await this.TestContext.LoginRandomAsync();

            var authentication2 = await this.TestContext.LoginRandomAsync();

            var user1 = await userCollection.GetUserAsync(authentication1.ID);

            var user2 = await userCollection.GetUserAsync(authentication2.ID);

            var actualMessage     = string.Empty;
            var actualMessageType = MessageType.Notification;
            var actualUserID      = string.Empty;
            var actualSenderID    = string.Empty;
            var expectedMessage   = RandomUtility.NextString();
            await userCollection.AddMessageReceivedEventHandlerAsync(UserCollection_MessageReceived);

            await user2.SendMessageAsync(authentication1, expectedMessage);

            Assert.AreEqual(expectedMessage, actualMessage);
            Assert.AreEqual(MessageType.None, actualMessageType);
            Assert.AreEqual(user2.ID, actualUserID);
            Assert.AreEqual(user1.ID, actualSenderID);
            await userCollection.RemoveMessageReceivedEventHandlerAsync(UserCollection_MessageReceived);

            await user1.SendMessageAsync(authentication2, RandomUtility.NextString());

            Assert.AreEqual(expectedMessage, actualMessage);
            Assert.AreEqual(MessageType.None, actualMessageType);
            Assert.AreEqual(user2.ID, actualUserID);
            Assert.AreEqual(user1.ID, actualSenderID);

            void UserCollection_MessageReceived(object sender, MessageEventArgs e)
            {
                var user = e.Items.Single();

                actualUserID      = user.ID;
                actualSenderID    = e.InvokeID;
                actualMessage     = e.Message;
                actualMessageType = e.MessageType;
            }
        }