def test_message_headline(self):
        """ Ensure proper handling of a headline stanza. """
        mock_stanza = self.mox.CreateMockAnything()
        mock_subject = self.mox.CreateMockAnything()
        mock_body = self.mox.CreateMockAnything()
        mock_type = self.mox.CreateMockAnything()
        mock_client = self.mox.CreateMockAnything()

        self.mox.StubOutWithMock(CommandHandler, "__init__")
        self.mox.StubOutWithMock(CommandHandler, "parse_body")
        self.mox.StubOutWithMock(CommandHandler, "log_message")

        CommandHandler.__init__(mock_client)

        mock_stanza.get_subject().AndReturn(mock_subject)
        mock_stanza.get_body().AndReturn(mock_body)
        mock_stanza.get_type().AndReturn(mock_type)
        
        CommandHandler.log_message(
                mock_stanza,
                mock_subject,
                mock_body,
                mock_type)

        mock_stanza.get_type().AndReturn("headline")

        self.mox.ReplayAll()

        cmdhandler = CommandHandler(mock_client)
        self.assertEqual(True, cmdhandler.message(mock_stanza))
    def test_parse_none_body(self):
        """ Ensure proper behavior when parsing a nonexisting message body. """
        mock_client = self.mox.CreateMockAnything()
        self.mox.StubOutWithMock(CommandHandler, "__init__")

        CommandHandler.__init__(mock_client)

        self.mox.ReplayAll()

        cmdhandler = CommandHandler(mock_client)
        self.assertEqual(None, cmdhandler.parse_body(None))
    def test_do_command_no_command_no_args(self):
        """ Ensure proper behavior when when a None command. """
        mock_client = self.mox.CreateMockAnything()
        self.mox.StubOutWithMock(CommandHandler, "__init__")

        CommandHandler.__init__(mock_client)

        self.mox.ReplayAll()

        cmdhandler = CommandHandler(mock_client)
        cmdhandler.do_command(None)
    def test_do_command_no_args(self):
        """ Test handling of commands with no arguments. """
        mock_command = self.mox.CreateMockAnything()
        mock_client = self.mox.CreateMockAnything()
        self.mox.StubOutWithMock(CommandHandler, "__init__")

        CommandHandler.__init__(mock_client)

        self.mox.ReplayAll()

        cmdhandler = CommandHandler(mock_client)
        cmdhandler.do_command(mock_command)
    def test_parse_body(self):
        """ Test the default message body parsing. """
        mock_body = self.mox.CreateMockAnything()
        mock_client = self.mox.CreateMockAnything()
        self.mox.StubOutWithMock(CommandHandler, "__init__")

        CommandHandler.__init__(mock_client)

        self.mox.ReplayAll()

        cmdhandler = CommandHandler(mock_client)
        self.assertEqual(mock_body, cmdhandler.parse_body(mock_body))
    def test_presence_control(self):
        """ Test the handling of presence stanzas. """
        mock_stanza = self.mox.CreateMockAnything()
        mock_client = self.mox.CreateMockAnything()
        self.mox.StubOutWithMock(CommandHandler, "__init__")
        self.mox.StubOutWithMock(CommandHandler, "log_presence_control")

        CommandHandler.__init__(mock_client)
        CommandHandler.log_presence_control(mock_stanza)
        mock_stanza.make_accept_response().AndReturn(True)

        self.mox.ReplayAll()

        cmdhandler = CommandHandler(mock_client)
        self.assertTrue(cmdhandler.presence_control(mock_stanza))
    def test_message_subject(self):
        """ Ensure proper handling of a subject stanza. """
        mock_stanza = self.mox.CreateMockAnything()
        mock_body = self.mox.CreateMockAnything()
        mock_client = self.mox.CreateMockAnything()

        self.mox.StubOutWithMock(CommandHandler, "__init__")
        self.mox.StubOutWithMock(CommandHandler, "parse_body")
        self.mox.StubOutWithMock(CommandHandler, "log_message")

        self.mox.StubOutWithMock(Message, "__init__")
        self.mox.StubOutWithMock(Message, "__del__")

        CommandHandler.__init__(mock_client)

        mock_stanza.get_subject().AndReturn("subject")
        mock_stanza.get_body().AndReturn(mock_body)
        mock_stanza.get_type().AndReturn("body")
        
        CommandHandler.log_message(mock_stanza, "subject", mock_body, "body")

        mock_stanza.get_type().AndReturn("body")

        CommandHandler.parse_body(mock_body).AndReturn("response")

        mock_stanza.get_from().AndReturn("from")
        mock_stanza.get_to().AndReturn("to")

        Message.__init__(
                to_jid = "from",
                from_jid = "to",
                stanza_type = "body",
                subject = u"Re: subject",
                body = "response")

        Message.__del__()

        self.mox.ReplayAll()

        cmdhandler = CommandHandler(mock_client)
        self.assertNotEqual(None, cmdhandler.message(mock_stanza))
    def test_message_no_response(self):
        """ Test a mesage that does not yield a parse result. """
        mock_stanza = self.mox.CreateMockAnything()
        mock_body = self.mox.CreateMockAnything()
        mock_client = self.mox.CreateMockAnything()
        self.mox.StubOutWithMock(CommandHandler, "__init__")
        self.mox.StubOutWithMock(CommandHandler, "parse_body")
        self.mox.StubOutWithMock(CommandHandler, "log_message")

        self.mox.StubOutWithMock(Message, "__init__")
        self.mox.StubOutWithMock(Message, "__del__")

        CommandHandler.__init__(mock_client)

        mock_stanza.get_subject()
        mock_stanza.get_body().AndReturn(mock_body)
        mock_stanza.get_type().AndReturn("body")
        
        CommandHandler.log_message(mock_stanza, None, mock_body, "body")

        mock_stanza.get_type().AndReturn("body")

        CommandHandler.parse_body(mock_body).AndReturn(None)

        mock_stanza.get_from().AndReturn("from")
        mock_stanza.get_to().AndReturn("to")

        Message.__init__(
                to_jid = "from",
                from_jid = "to",
                stanza_type = "body",
                subject = None,
                body = "unknown command")

        self.mox.ReplayAll()

        cmdhandler = CommandHandler(mock_client)
        self.assertNotEqual(None, cmdhandler.message(mock_stanza))