예제 #1
0
def test_message_str_without_info():
    m = Message([{
        "type": "user_typing",
        "channel": "C0DEW8K45",
        "user": "******"
    }])
    m.match_info = {'name': 'bot'}
    assert str(
        m
    ) == "<Message user_typing user=U0DF0B546 channel=C0DEW8K45 info={'name': 'bot'}>"
예제 #2
0
    def validate_message(self, request: Message) -> bool:
        if not request.text or not isinstance(request.text, str):
            return False

        result = search(self.route, request.text)
        if not result:
            return False

        request.match_info = result.named
        request.info = result.fixed
        return True
예제 #3
0
def test_message_match_info():
    m = Message([{
        "type": "user_typing",
        "channel": "C0DEW8K45",
        "user": "******"
    }])
    assert m._match_info == {}
    assert m.match_info == {}
    m.match_info = {'name': 'bot'}
    assert m._match_info == {'name': 'bot'}
    assert m.match_info == {'name': 'bot'}
예제 #4
0
    def validate_users(self, request: Message) -> bool:
        if not request.user_id or request.is_bot_message():
            return False

        if not self.users:
            return True

        return bool(request.user_id in self.users)
예제 #5
0
def test_message_str_with_info():
    m = Message([{
        "type": "user_typing",
        "channel": "C0DEW8K45",
        "user": "******"
    }])
    assert str(
        m) == '<Message user_typing user=U0DF0B546 channel=C0DEW8K45 info={}>'
예제 #6
0
def test_hello_action_message_attributes():
    m = Message([{
        "type": "user_typing",
        "channel": "C0DEW8K45",
        "user": "******"
    }])
    assert m.user_id == 'U0DF0B546'
    assert m.user == '<@U0DF0B546>'
    assert m.type == 'user_typing'
    assert m.channel == 'C0DEW8K45'
    assert m.subtype is None
    assert m.client_msg_id is None
    assert m.team is None
    assert m.event_ts is None
    assert m.ts is None
예제 #7
0
    def _process_message(self, raw_msg: List[dict]) -> bool:
        if not raw_msg:
            return False

        # parse message and find need handler
        msg = Message(raw_msg)
        route = self._routers.find_route(msg)
        if route is None:
            return False

        # send response to slack
        response = route.handler(msg)
        if not isinstance(response, Response):
            raise TypeError('Handler must be return instance Response class')

        return self._send(response)
예제 #8
0
def test_base_message_attributes():
    m = Message([{
        "client_msg_id": "eb4cbc49-e1a8-4c47-b501-0ac0dbbc2c4a",
        "suppress_notification": False,
        "type": "message",
        "text": "as",
        "user": "******",
        "team": "T0DF1FYHE",
        "channel": "C0DEW8K45",
        "event_ts": "1555937221.001500",
        "ts": "1555937221.001500"
    }])
    assert m.user_id == 'U0DF0B546'
    assert m.user == '<@U0DF0B546>'
    assert m.type == 'message'
    assert m.subtype is None
    assert m.client_msg_id == 'eb4cbc49-e1a8-4c47-b501-0ac0dbbc2c4a'
    assert m.team == 'T0DF1FYHE'
    assert m.channel == 'C0DEW8K45'
    assert m.event_ts == '1555937221.001500'
    assert m.ts == '1555937221.001500'
예제 #9
0
def test_edited_message_attributes():
    m = Message([{
        "type": "message",
        "subtype": "message_changed",
        "hidden": True,
        "message": {
            "client_msg_id": "eb4cbc49-e1a8-4c47-b501-0ac0dbbc2c4a",
            "type": "message",
            "text": "ass",
            "user": "******",
            "edited": {
                "user": "******",
                "ts": "1555937291.000000"
            },
            "ts": "1555937221.001500"
        },
        "channel": "C0DEW8K45",
        "previous_message": {
            "client_msg_id": "eb4cbc49-e1a8-4c47-b501-0ac0dbbc2c4a",
            "type": "message",
            "text": "as",
            "user": "******",
            "ts": "1555937221.001500"
        },
        "event_ts": "1555937291.001600",
        "ts": "1555937291.001600"
    }])
    assert m.user_id == 'U0DF0B546'
    assert m.user == '<@U0DF0B546>'
    assert m.type == 'message'
    assert m.subtype == 'message_changed'
    assert m.client_msg_id == 'eb4cbc49-e1a8-4c47-b501-0ac0dbbc2c4a'
    assert m.team is None
    assert m.channel == 'C0DEW8K45'
    assert m.event_ts == '1555937291.001600'
    assert m.ts == '1555937291.001600'
예제 #10
0
def test_message_is_type_message(raw, exp_result):
    m = Message(raw)
    assert m.is_type_message() is exp_result
예제 #11
0
def test_message_init(raw):
    m = Message(raw)
    assert isinstance(m._raw, type(raw))
    assert isinstance(m._raw_message, dict)
    assert m._raw_message
    assert m._match_info == {}
예제 #12
0
def test_message_is_suppress_notification(raw, exp_result):
    m = Message(raw)
    assert m.is_suppress_notification() is exp_result