public void TestLiquification()
        {
            ActionHandlerConfig config = new ActionHandlerConfig
            {
                LineRegex  = @"!{%nick%} {%channel%} {%user%}",
                LineAction = this.MessageFunction
            };

            ActionHandler uut = new ActionHandler(
                config
                );

            string expectedMessage = string.Format(
                "!{0} {1} {2}",
                this.ircConfig.Nick,
                this.ircConfig.Channels[0],
                remoteUser
                );

            string ircString = this.GenerateMessage(remoteUser, this.ircConfig.Channels[0], expectedMessage);

            uut.HandleEvent(this.ConstructArgs(ircString));

            Assert.IsNotNull(this.responseReceived);
            Assert.AreEqual(this.ircConfig.Channels[0], this.responseReceived.Channel);
            Assert.AreEqual(remoteUser, this.responseReceived.User);
            Assert.AreEqual(expectedMessage, this.responseReceived.Message);
        }
        public void BlacklistTest()
        {
            ActionHandlerConfig config = new ActionHandlerConfig
            {
                LineRegex  = @"!bot\s+help",
                LineAction = this.MessageFunction
            };

            ActionHandler uut = new ActionHandler(
                config
                );

            const string channel         = "#blacklist";
            const string expectedMessage = "!bot help";

            List <string> blackList = new List <string>()
            {
                channel
            };

            string ircString = this.GenerateMessage(remoteUser, channel, expectedMessage);

            HandlerArgs args = this.ConstructArgs(ircString);

            args.BlackListedChannels = blackList;

            uut.HandleEvent(args);

            Assert.IsNull(this.responseReceived);
        }
        public void TestMisMatchedMessage()
        {
            ActionHandlerConfig config = new ActionHandlerConfig
            {
                LineRegex  = @"!bot\s+help",
                LineAction = this.MessageFunction
            };

            ActionHandler uut = new ActionHandler(
                config
                );

            // Does not match pattern.  No response expected.
            const string expectedMessage = "hello world!";
            string       ircString       = this.GenerateMessage(remoteUser, this.ircConfig.Channels[0], expectedMessage);

            uut.HandleEvent(this.ConstructArgs(ircString));

            Assert.IsNull(this.responseReceived);
        }
        // ---------------- Test Helpers ----------------

        private void DoGoodMessageTest(string user, string channel)
        {
            ActionHandlerConfig config = new ActionHandlerConfig
            {
                LineRegex  = @"!bot\s+help",
                LineAction = this.MessageFunction
            };

            ActionHandler uut = new ActionHandler(
                config
                );

            const string expectedMessage = "!bot help";

            string ircString = this.GenerateMessage(user, channel, expectedMessage);

            uut.HandleEvent(this.ConstructArgs(ircString));

            Assert.AreEqual(channel, this.responseReceived.Channel);
            Assert.AreEqual(user, this.responseReceived.User);
            Assert.AreEqual(expectedMessage, this.responseReceived.Message);
        }
        public void IgnoreMessageTest()
        {
            const string expectedMessage = "!bot help";

            ActionHandlerConfig config = new ActionHandlerConfig
            {
                LineRegex     = @".+",
                LineAction    = this.MessageFunction,
                RespondToSelf = false
            };

            ActionHandler uut = new ActionHandler(
                config
                );

            // Instead of action string, create a message string.
            string ircString = TestHelpers.ConstructMessageString(remoteUser, this.ircConfig.Channels[0], expectedMessage);

            uut.HandleEvent(this.ConstructArgs(ircString));

            Assert.IsNull(this.responseReceived);
        }
Exemple #6
0
        public void GoodConfigTest()
        {
            // Let's hope that the pseudo-random numbers are the same for all .NET versions, or this is
            // going to end pooly.
            Random random = new Random(1);

            IList <IIrcHandler> handlers = XmlLoader.LoadXmlBotConfig(goodConfig, this.testConfig, random);

            // Slot 0 should be a Message Handler
            {
                MessageHandler handler0 = handlers[0] as MessageHandler;
                Assert.IsNotNull(handler0);

                Assert.AreEqual(0, handler0.CoolDown);
                Assert.AreEqual("[Hh]ello {%nick%}", handler0.LineRegex);
                Assert.AreEqual(ResponseOptions.ChannelAndPms, handler0.ResponseOption);

                string ircString = TestHelpers.ConstructMessageString(remoteUser, this.testConfig.Channels[0], "Hello " + this.testConfig.Nick);

                // Expect a message to go out.
                {
                    string expectedMessage = "Hello " + remoteUser + "!";
                    this.mockIrcWriter.Setup(w => w.SendMessage(expectedMessage, this.testConfig.Channels[0]));

                    handler0.HandleEvent(this.ConstructArgs(ircString));
                    this.mockIrcWriter.VerifyAll();
                }

                {
                    string expectedMessage = "Hello " + remoteUser + "!";
                    this.mockIrcWriter.Setup(w => w.SendMessage(expectedMessage, this.testConfig.Channels[0]));

                    handler0.HandleEvent(this.ConstructArgs(ircString));
                    this.mockIrcWriter.VerifyAll();
                }

                {
                    string expectedMessage = "Greetings " + remoteUser + "!";
                    this.mockIrcWriter.Setup(w => w.SendMessage(expectedMessage, this.testConfig.Channels[0]));

                    handler0.HandleEvent(this.ConstructArgs(ircString));
                    this.mockIrcWriter.VerifyAll();
                }
            }

            // Slot 1 should be a Message Handler
            {
                MessageHandler handler1 = handlers[1] as MessageHandler;
                Assert.IsNotNull(handler1);

                Assert.AreEqual(1, handler1.CoolDown);
                Assert.AreEqual(@"[Mm]y\s+name\s+is\s+(?<name>\w+)", handler1.LineRegex);
                Assert.AreEqual(ResponseOptions.ChannelOnly, handler1.ResponseOption);

                // Expect a message to go out.
                string expectedMessage = "Hello Seth!";
                this.mockIrcWriter.Setup(w => w.SendMessage(expectedMessage, this.testConfig.Channels[0]));

                string ircString = TestHelpers.ConstructMessageString(remoteUser, this.testConfig.Channels[0], "My name is Seth");
                handler1.HandleEvent(this.ConstructArgs(ircString));
            }

            // Slot 2 should be a message Handler
            {
                MessageHandler handler2 = handlers[2] as MessageHandler;
                Assert.IsNotNull(handler2);

                Assert.AreEqual(0, handler2.CoolDown);
                Assert.AreEqual(@"^!{%nick%} {%channel%} {%user%}", handler2.LineRegex);
                Assert.AreEqual(ResponseOptions.ChannelAndPms, handler2.ResponseOption);

                // Expect a message to go out.
                string expectedMessage = string.Format(
                    "Hello {0}, I am {1} on channel {2}!",
                    remoteUser,
                    this.testConfig.Nick,
                    this.testConfig.Channels
                    );
                this.mockIrcWriter.Setup(w => w.SendMessage(expectedMessage, this.testConfig.Channels[0]));

                string command = string.Format(
                    "!{0} {1} {2}",
                    this.testConfig.Nick,
                    this.testConfig.Channels,
                    remoteUser
                    );

                string ircString = TestHelpers.ConstructMessageString(remoteUser, this.testConfig.Channels[0], command);

                handler2.HandleEvent(this.ConstructArgs(ircString));
            }

            // Slot 3 should be a message Handler
            {
                MessageHandler handler3 = handlers[3] as MessageHandler;
                Assert.IsNotNull(handler3);

                Assert.AreEqual(0, handler3.CoolDown);
                Assert.AreEqual(@"[Ww]hat is a(?<an>n)? (?<thing>\w+)", handler3.LineRegex);
                Assert.AreEqual(ResponseOptions.ChannelAndPms, handler3.ResponseOption);

                // Expect a message to go out.
                {
                    string expectedMessage = "A mouse is a thing!";
                    this.mockIrcWriter.Setup(w => w.SendMessage(expectedMessage, this.testConfig.Channels[0]));

                    string command = "What is a mouse";

                    string ircString = TestHelpers.ConstructMessageString(remoteUser, this.testConfig.Channels[0], command);
                    handler3.HandleEvent(this.ConstructArgs(ircString));
                }

                {
                    string expectedMessage = "An acorn is a thing!";
                    this.mockIrcWriter.Setup(w => w.SendMessage(expectedMessage, this.testConfig.Channels[0]));

                    string command   = "What is an acorn";
                    string ircString = TestHelpers.ConstructMessageString(remoteUser, this.testConfig.Channels[0], command);
                    handler3.HandleEvent(this.ConstructArgs(ircString));
                }
            }

            // Slot 4 should be an action handler
            {
                ActionHandler handler4 = handlers[4] as ActionHandler;
                Assert.IsNotNull(handler4);

                Assert.AreEqual(0, handler4.CoolDown);
                Assert.AreEqual(@"^sighs$", handler4.LineRegex);
                Assert.AreEqual(ResponseOptions.ChannelAndPms, handler4.ResponseOption);

                // Expect a message to go out.
                {
                    string expectedMessage = $"@{remoteUser} - What's wrong?";
                    this.mockIrcWriter.Setup(w => w.SendMessage(expectedMessage, this.testConfig.Channels[0]));

                    string command = "sighs";

                    string ircString = TestHelpers.ConstructActionString(remoteUser, this.testConfig.Channels[0], command);
                    handler4.HandleEvent(this.ConstructArgs(ircString));
                }
            }
        }