コード例 #1
0
def test_basic():
    chat_feed = SpoofChatFeed()
    chat_feed.push(sender_name='Jason', content='Hello Milly')
    chat_feed.push(sender_name='Milly', content='Hi', )
    chat_feed.push(sender_name='Jason',
                   content='You set the nickname for Milly to M.')
    chat_feed.push(sender_name='Milly', content='M set your nickname to J.')
    chat_feed.push(sender_name='Milly',
                   content='M set the nickname for Wendy to W.')

    chat = demuxfb.build_chat(chat_feed, 'Jason')
    messages = chat.messages
    jason = chat.get_participant('Jason')
    milly = chat.get_participant('Milly')
    wendy = chat.get_participant('Wendy')

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.TextMessage)
    assert message.content == 'Hello Milly'
    assert message.sender == jason

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.TextMessage)
    assert message.content == 'Hi'
    assert message.sender == milly

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.sender == jason
    assert message.setter == jason
    assert message.subject == milly
    assert message.new_nickname == 'M'

    assert chat.participants == {jason, milly, wendy}
コード例 #2
0
ファイル: test_3_rules.py プロジェクト: nick-killeen/demuxfb
def test_match_empty_message():
    chat_feed = SpoofChatFeed()
    chat_feed.push()

    chat = demuxfb.build_chat(chat_feed, 'John Smith')
    messages = chat.messages

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.EmptyMessage)
コード例 #3
0
ファイル: test_3_rules.py プロジェクト: nick-killeen/demuxfb
def test_match_chat_settings_change_message():
    chat_feed = SpoofChatFeed()
    chat_feed.push(content='Jacob named the group Saturday Hangout.')
    chat_feed.push(content='Jacob changed the group photo.')
    chat_feed.push(content='Jacob changed the chat theme.')
    chat_feed.push(content=r'Jacob set the emoji to \u00f0\u009f\u008d\u00ba.')
    chat_feed.push(content='Jacob turned on member approval and will review'
                   ' requests to join the group.')
    chat_feed.push(content='Jacob turned off member approval. Anyone with the'
                   ' link can join the group.')

    chat = demuxfb.build_chat(chat_feed, 'John Smith')
    messages = chat.messages

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.ChatSettingsChangeMessage)
    assert message.settings_type == demuxfb.message.ChatSettingsType.CHANGE_NAME
    assert message.new_name == 'Saturday Hangout'
    assert message.new_emoji is None
    assert message.new_approval_is_required_policy is None

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.ChatSettingsChangeMessage)
    assert message.settings_type == \
        demuxfb.message.ChatSettingsType.CHANGE_PHOTO
    assert message.new_name is None

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.ChatSettingsChangeMessage)
    assert message.settings_type == \
        demuxfb.message.ChatSettingsType.CHANGE_THEME

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.ChatSettingsChangeMessage)
    assert message.settings_type == \
        demuxfb.message.ChatSettingsType.CHANGE_EMOJI
    assert message.new_emoji == r'\u00f0\u009f\u008d\u00ba'

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.ChatSettingsChangeMessage)
    assert message.settings_type == \
        demuxfb.message.ChatSettingsType.CHANGE_MEMBERSHIP_POLICY
    assert message.new_approval_is_required_policy

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.ChatSettingsChangeMessage)
    assert message.settings_type == \
        demuxfb.message.ChatSettingsType.CHANGE_MEMBERSHIP_POLICY
    assert message.new_approval_is_required_policy is not None
    assert not message.new_approval_is_required_policy
コード例 #4
0
ファイル: test_3_rules.py プロジェクト: nick-killeen/demuxfb
def test_plan_messages():
    chat_feed = SpoofChatFeed()
    chat_feed.push(content='Joseph responded ')
    chat_feed.push(content='Jacob started a plan.')
    chat_feed.push(content='Jacob named the plan Saturday Hangout.')
    chat_feed.push(content='Jacob updated the plan to Sat, Aug 5 at 12 PM.')
    chat_feed.push(content='Joseph responded ')
    chat_feed.push(content='Jacob deleted the plan Saturday Hangout for Sat,'
                   ' Aug 5 at 12 PM.')

    chat_feed.push(content='Joseph responded ')

    chat = demuxfb.build_chat(chat_feed, 'John Smith')
    messages = chat.messages

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.TextMessage)

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.PlanCreationMessage)

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.PlanUpdateMessage)
    assert message.new_plan_title == 'Saturday Hangout'
    assert message.new_plan_time is None

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.PlanUpdateMessage)
    assert message.new_plan_title is None
    assert message.new_plan_time == 'Sat, Aug 5 at 12 PM'

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.PlanRespondencyMessage)

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.PlanDeletionMessage)
    assert message.plan_title == 'Saturday Hangout'
    assert message.plan_time == 'Sat, Aug 5 at 12 PM'

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.TextMessage)
コード例 #5
0
ファイル: test_3_rules.py プロジェクト: nick-killeen/demuxfb
def test_call_messages():
    chat_feed = SpoofChatFeed()
    chat_feed.push(content='John started a video chat.')
    chat_feed.push(content='John joined the video chat.')
    chat_feed.push(content='The video chat ended.')
    chat_feed.push(content='John started a call.')
    chat_feed.push(content='John joined the call.')
    chat_feed.push(content='The call ended.')

    chat_feed.push(content='John started a call.')
    chat_feed.push(content='John joined the call.')
    chat_feed.push(content='The call ended.')

    chat = demuxfb.build_chat(chat_feed, 'Jake Smith')
    messages = chat.messages

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.CallStartMessage)
    assert message.call_type == demuxfb.message.CallType.VIDEO

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.CallJoinMessage)
    assert message.call_type == demuxfb.message.CallType.VIDEO

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.CallEndMessage)
    assert message.call_type == demuxfb.message.CallType.VIDEO

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.CallStartMessage)
    assert message.call_type == demuxfb.message.CallType.AUDIO

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.CallJoinMessage)
    assert message.call_type == demuxfb.message.CallType.AUDIO

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.CallEndMessage)
    assert message.call_type == demuxfb.message.CallType.AUDIO
コード例 #6
0
ファイル: test_3_rules.py プロジェクト: nick-killeen/demuxfb
def test_match_media_message():
    chat_feed = SpoofChatFeed()
    chat_feed.push(photos=[{
        'uri': 'messages/inbox/convo/photos/blah.png',
        'creation_timestamp': 1000
    }])
    chat_feed.push(content='What do these mean?',
                   photos=[{
                       'uri': 'messages/inbox/convo/photos/blah.png',
                       'creation_timestamp': 1000
                   }, {
                       'uri': 'messages/inbox/convo/photos/blah1.png',
                       'creation_timestamp': 2000
                   }])
    chat_feed.push(gifs=[{'uri': 'messages/inbox/convo/gifs/blah.gif'}])
    chat_feed.push(audio_files=[{
        'uri': 'messages/inbox/convo/audio/blah.mp4',
        'creation_timestamp': 1000
    }])
    chat_feed.push(videos=[{
        'uri': 'messages/inbox/convo/videos/blah.mp4',
        'creation_timestamp': 1000,
        'thumbnail': {
            'uri': 'messages/inbox/convo//videos/thumbnails'
            '/blarg.jpg'
        }
    }])
    chat_feed.push(files=[{
        'uri': 'messages/inbox/convo/videos/blah.mp4',
        'creation_timestamp': 1000
    }])
    chat_feed.push(sticker={'uri': 'messages/stickers_used/blah.png'})

    chat = demuxfb.build_chat(chat_feed, 'John Smith')
    messages = chat.messages

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.MediaMessage)
    assert message.content is None
    assert len(message.photos) == 1
    assert len(message.gifs) == 0
    assert len(message.audio_files) == 0
    assert len(message.videos) == 0
    assert len(message.attachment_files) == 0
    assert len(message.stickers) == 0

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.MediaMessage)
    assert message.content == 'What do these mean?'
    assert len(message.photos) == 2

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.MediaMessage)
    assert len(message.photos) == 0
    assert len(message.gifs) == 1

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.MediaMessage)
    assert len(message.audio_files) == 1

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.MediaMessage)
    assert len(message.videos) == 1

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.MediaMessage)
    assert len(message.attachment_files) == 1

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.MediaMessage)
    assert len(message.stickers) == 1
コード例 #7
0
ファイル: test_3_rules.py プロジェクト: nick-killeen/demuxfb
def test_match_nickname_change_message():
    chat_feed = SpoofChatFeed()
    chat_feed.push(sender_name='Joseph',
                   content='Joseph cleared his own nickname.')
    chat_feed.push(sender_name='Joseph',
                   content='Joseph cleared your nickname.')
    chat_feed.push(sender_name='Joseph',
                   content='Joseph cleared the nickname for Jacob.')
    chat_feed.push(sender_name='Joseph',
                   content='Joseph set the nickname for Jacob to Jake.')
    chat_feed.push(sender_name='Joseph',
                   content='Joseph set your nickname to John.')
    chat_feed.push(sender_name='Joseph',
                   content='Joseph set their own nickname to Joe.')
    chat_feed.push(content='You cleared your nickname.')
    chat_feed.push(content='You cleared the nickname for Joseph.')
    chat_feed.push(content='You set the nickname for Joseph to Joe.')
    chat_feed.push(content='You set your nickname to John.')

    chat = demuxfb.build_chat(chat_feed, 'John Smith')
    messages = chat.messages

    joseph = chat.get_participant('Joseph')
    jacob = chat.get_participant('Jacob')

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter == joseph
    assert message.subject == joseph
    assert message.new_nickname is None

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter == joseph
    assert message.subject.is_me()
    assert message.new_nickname is None

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter == joseph
    assert message.subject == jacob
    assert message.new_nickname is None

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter == joseph
    assert message.subject == jacob
    assert message.new_nickname == 'Jake'

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter == joseph
    assert message.subject.is_me()
    assert message.new_nickname == 'John'

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter == joseph
    assert message.subject == joseph
    assert message.new_nickname == 'Joe'

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter.is_me()
    assert message.subject.is_me()
    assert message.new_nickname is None

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter.is_me()
    assert message.subject == joseph
    assert message.new_nickname is None

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter.is_me()
    assert message.subject == joseph
    assert message.new_nickname == 'Joe'

    message = messages.pop(0)
    assert isinstance(message, demuxfb.message.NicknameChangeMessage)
    assert message.setter.is_me()
    assert message.subject.is_me()
    assert message.new_nickname == 'John'