def __given_presence_will_be_confirmed(self, mockMessageBuilder=False):

        if mockMessageBuilder:
            builderMock = Spy()

            with Stub() as RecipientFilter:
                RecipientFilter.presenceConfirmed()
                RecipientFilter.getRequesterJidHandles() >> []
            self.__RecipientFilter = RecipientFilter
        else:
            builderMock = Stub()

        with builderMock as MessageBuilder:
            MessageBuilder.presenceConfirmed()
            MessageBuilder.getRequestConfirmedMessageBody(any()) >> 'something'
            MessageBuilder.getHelpdeskUserConfirmationMessageBody(
            ) >> 'something else'

        self.__MessageBuilder = MessageBuilder

        with Spy() as RecipientChooser:
            JidHandles = [JidHandle.JidHandle('', self.__sender)]
            RecipientChooser.getJidHandleGroupResult(any(), any()) >> Result(
                [JidHandleGroup(JidHandles)])
            RecipientChooser.getJidHandleFromJid(any())
            RecipientChooser.getRecipientListModifierByClass(
                any()) >> self.__RecipientFilter

        self.__RecipientChooser = RecipientChooser

        self.__and_we_have_a_pending_confirmation_request()
    def _sendConfirmationMessage(self, sender):
        confirmationMessageBody = self._MessageBuilder.getImmediateSenderConfirmationMessageBody(
        )
        ConfirmationMessage = Message.Message(
            [JidHandleGroup([JidHandle.JidHandle('', sender)])],
            confirmationMessageBody)

        self._ItBot.sendMessage(ConfirmationMessage)
    def __given_recipient_filter_returns_requester(self):

        JidHandles = [JidHandle.JidHandle('', '*****@*****.**')]
        self.__ExpectedJidHandleGroups = [JidHandleGroup(JidHandles)]
        with Spy() as RecipientFilter:
            RecipientFilter.getRequesterJidHandles() >> JidHandles

        self.__RecipientFilter = RecipientFilter
    def __given_sender_is_current_requested_recipient(self):
        with Stub() as RecipientChooser:
            JidHandles = [JidHandle.JidHandle('', self.__sender)]
            RecipientChooser.getJidHandleGroupResult(any(), any()) >> Result(
                [JidHandleGroup(JidHandles)])
            RecipientChooser.getJidHandleFromJid(any())
            RecipientChooser.getRecipientListModifierByClass(
                any()) >> self.__RecipientFilter

        self.__RecipientChooser = RecipientChooser
Exemple #5
0
    def __given_recipient_chooser_returns_a_jid_handle(self):
        ExpectedRecipientJidHandles = [
            JidHandle.JidHandle("someUserName", "*****@*****.**")
        ]

        self.__ExpectedJidHandleGroups = [
            JidHandleGroup(ExpectedRecipientJidHandles)
        ]

        self.__getMockedRecipientChooser(self.__ExpectedJidHandleGroups)
    def test_does_not_send_a_confirmation_message_if_the_requester_has_already_received_one_this_request(
            self):
        self.__given_requester_has_already_received_confirmation_message()

        BotEventCoordinator = self.__getBotEventCoordinator()
        BotEventCoordinator.handleMessageReceived(self.__sender,
                                                  'some message')

        JidHandles = [JidHandle.JidHandle('', self.__sender)]
        ConfirmationMessage = Message.Message([JidHandleGroup(JidHandles)],
                                              self.__immediateSenderConfMsg)
        verify(
            self.__ItBot).sendMessage(ConfirmationMessage).called(times == 0)
    def __given_sender_is_different_requested_recipient(self):
        with Spy() as RecipientFilter:
            RecipientFilter.getRequesterJidHandles() >> []
            RecipientFilter.addRequester(any())
            RecipientFilter.alreadyMessagedRequester(any()) >> False
        self.__RecipientFilter = RecipientFilter

        with Stub(proxy=self.__RecipientChooser) as RecipientChooser:
            JidHandles = [JidHandle.JidHandle('', '*****@*****.**')]
            RecipientChooser.getJidHandleGroupResult(any(), any()) >> Result(
                [JidHandleGroup(JidHandles)])
            RecipientChooser.getRecipientListModifierByClass(
                any()) >> self.__RecipientFilter

        self.__RecipientChooser = RecipientChooser
Exemple #8
0
    def __given_message_builder_returns_a_sender_confirmation_and_relay_message_body(
            self):
        expectedMessageBody = "Successfully forwarded."
        with Spy() as MockedMessageBuilder:
            MockedMessageBuilder.getImmediateSenderConfirmationMessageBody(
            ) >> expectedMessageBody
            MockedMessageBuilder.getRelayMessageBody(
                self.__sender, 'some message') >> 'some message'

        self.__MessageBuilder = MockedMessageBuilder

        self.__ExpectedRelayMessage = Message.Message(
            self.__ExpectedJidHandleGroups, 'some message')

        self.__ExpectedMessage._Message__RecipientJidHandleGroups = [
            JidHandleGroup([JidHandle.JidHandle('', self.__sender)])
        ]
        self.__ExpectedMessage._Message__messageBody = expectedMessageBody
    def setUp(self):
        unittest.TestCase.setUp(self)
        self.__sender = "*****@*****.**"

        JidHandles = [JidHandle.JidHandle('', self.__sender)]
        self.__ExpectedMessage = Message.Message([JidHandleGroup(JidHandles)],
                                                 "")
        self.__RequesterConfMessage = Message.Message([], "")

        with Spy() as ItBot:
            pass
        self.__ItBot = ItBot

        self.__nobodyAvailableMsg = 'nobody available!'
        self.__immediateSenderConfMsg = 'someone will assist you shortly!'

        with Spy() as MessageBuilder:
            MessageBuilder.getImmediateSenderConfirmationMessageBody(
            ) >> self.__immediateSenderConfMsg
            MessageBuilder.getNobodyAvailableMessageBody(
            ) >> self.__nobodyAvailableMsg
            MessageBuilder.getRelayMessageBody(any(), any()) >> ""
        self.__MessageBuilder = MessageBuilder

        with Spy() as PresenceConfManager:
            PresenceConfManager.hasPendingRequest() >> True
        self.__PresenceConfirmationManager = PresenceConfManager

        with Spy() as RecipientFilter:
            RecipientFilter.getRequesterJidHandles() >> []
            RecipientFilter.addRequester(any())
            RecipientFilter.alreadyMessagedRequester(any()) >> True
        self.__RecipientFilter = RecipientFilter

        with Spy() as RecipientChooser:
            RecipientChooser.getJidHandleGroupResult(any(), any()) >> Result(
                [])
            RecipientChooser.getJidHandleFromJid(any())
            RecipientChooser.getRecipientListModifierByClass(
                any()) >> self.__RecipientFilter
        self.__RecipientChooser = RecipientChooser

        Spy.__calls__ = [
        ]  #hack job to reset spy call recording in between tests
Exemple #10
0
    def __getJidHandleGroups(self):
        JidHandleGroups = []

        idString = 'jid_handle_group_file_location='

        fileLocations = self.__ConfigParser.findConfigLinesBetween(
            self.START_JID_FILE_LOCATIONS_KEY, self.END_JID_FILE_LOCATIONS_KEY)
        fileLocations = [
            fileLocation.replace(idString, '')
            for fileLocation in fileLocations
        ]

        for fileLocation in fileLocations:
            JidHandleConfigParser = ConfigParser(
                os.path.join(self.__currentDir, fileLocation))

            jidHandleLines = JidHandleConfigParser.findConfigLinesBetween(
                self.START_JID_HANDLES_KEY, self.END_JID_HANDLES_KEY)
            JidHandles = []
            for jidHandleLine in jidHandleLines:
                jidHandleLine = jidHandleLine.split(':')
                jid = jidHandleLine.pop().strip()
                userName = jidHandleLine.pop().strip()
                JidHandles.append(JidHandle.JidHandle(userName, jid))

            ignoredListModifierLines = JidHandleConfigParser.findConfigLinesBetween(
                self.START_IGNORED_LIST_MODIFIERS_KEY,
                self.END_IGNORED_LIST_MODIFIERS_KEY)
            IgnoredListModifiers = [
                self.__getClassFromModuleString(listModifierLine)
                for listModifierLine in ignoredListModifierLines
                if listModifierLine.strip()
            ]

            groupIdentifierString = JidHandleConfigParser.findConfigLine(
                'group_identifier_string')
            JidHandleGroups.append(
                JidHandleGroup(JidHandles, IgnoredListModifiers,
                               groupIdentifierString))

        return JidHandleGroups
    def __and_message_builder_returns_a_helpdesk_user_confirmation_message(
            self):
        expectedMessageBody = "Presence confirmed."

        with Spy() as MessageBuilder:
            MessageBuilder.getHelpdeskUserConfirmationMessageBody(
            ) >> expectedMessageBody

        self.__MessageBuilder = MessageBuilder

        SenderJidHandle = [JidHandle.JidHandle('', self.__sender)]
        SenderJidHandleGroup = [JidHandleGroup(SenderJidHandle)]
        with Stub() as RecipientChooser:
            RecipientChooser.getJidHandleGroupResult(
                any(), any()) >> Result(SenderJidHandleGroup)
            RecipientChooser.getJidHandleFromJid(any())
            RecipientChooser.getRecipientListModifierByClass(
                any()) >> self.__RecipientFilter

        self.__RecipientChooser = RecipientChooser

        self.__ExpectedMessage = Message.Message(SenderJidHandleGroup,
                                                 expectedMessageBody)
Exemple #12
0
    def __given_recipient_chooser_returns_no_jid_handles(self):
        self.__getMockedRecipientChooser([])

        self.__ExpectedJidHandleGroups = [
            JidHandleGroup([JidHandle.JidHandle('', self.__sender)])
        ]
    def _handleNobodyAvailable(self, Result, sender, receivedMessageBody):
        messageBody = self._MessageBuilder.getNobodyAvailableMessageBody()
        NobodyAvailableMessage = Message.Message(
            [JidHandleGroup([JidHandle.JidHandle('', sender)])], messageBody)

        self._ItBot.sendMessage(NobodyAvailableMessage)