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
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
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
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)
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)