예제 #1
0
def test_remove_command_non_added_user(remove_command_event,
                                       non_added_user_response,
                                       telegram_test_user_entity, mock_setup):
    # pylint: disable=no-member
    app.dynamodb.get_item.return_value = non_added_user_response
    app.TelegramClient.return_value = telegram_test_user_entity

    ret = app.lambda_handler(remove_command_event, "")

    assert ret['statusCode'] == 200
    app.dynamodb.get_item.assert_called_once_with(
        TableName='Roles',
        Key={
            'pk': {
                'S': 'user_{}'.format(TEST_USER_ID)
            },
            'sk': {
                'S': 'role_blacklist'
            }
        })
    app.clients[BOT_KEY].get_entity.assert_called_once_with('@test_user')
    assert app.dynamodb.delete_item.call_count == 0
    requests.post.assert_called_once_with(
        'https://api.telegram.org/bot{}/sendMessage'.format(BOT_KEY),
        data={
            'chat_id': 99999999,
            'reply_to_message_id': 13,
            'text': '@test_user ({}) is not added'.format(TEST_USER_ID)
        })
예제 #2
0
def test_public_command(public_command_event, mock_setup):
    # pylint: disable=no-member
    ret = app.lambda_handler(public_command_event, "")

    assert ret['statusCode'] == 200
    assert app.dynamodb.get_item.call_count == 0
    assert requests.post.call_count == 0
예제 #3
0
def test_command_from_non_admin(remove_non_admin_command_event, mock_setup):
    # pylint: disable=no-member

    ret = app.lambda_handler(remove_non_admin_command_event, "")

    assert ret['statusCode'] == 200
    assert app.dynamodb.get_item.call_count == 0
    assert requests.post.call_count == 0
예제 #4
0
def test_non_banned_user(new_member_event, non_added_user_response,
                         mock_setup):
    # pylint: disable=no-member
    app.dynamodb.get_item.return_value = non_added_user_response

    ret = app.lambda_handler(new_member_event, "")

    assert ret['statusCode'] == 200
    assert app.dynamodb.get_item.call_count == 1
    assert requests.post.call_count == 0
예제 #5
0
def test_unknown_command(unknown_command_event, mock_setup):
    # pylint: disable=no-member
    ret = app.lambda_handler(unknown_command_event, "")

    assert ret['statusCode'] == 200
    assert app.dynamodb.get_item.call_count == 0
    requests.post.assert_called_once_with(
        'https://api.telegram.org/bot{}/sendMessage'.format(BOT_KEY),
        data={
            'chat_id': 99999999,
            'reply_to_message_id': 13,
            'text': 'Unknown command'
        })
예제 #6
0
def test_bot_new_chat_event(bot_new_chat_event, mock_setup):
    # pylint: disable=no-member
    ret = app.lambda_handler(bot_new_chat_event, "")

    assert ret['statusCode'] == 200
    assert app.dynamodb.get_item.call_count == 0
    requests.post.assert_called_once_with(
        'https://api.telegram.org/bot{}/sendMessage'.format(BOT_KEY),
        data={
            'chat_id':
            -1009999992388,
            'text':
            'Hello from the @FurryPartyOfArtAndLabor. In order for this bot to be operational in this chat, it'
            ' must be made an admin.'
        })
예제 #7
0
def test_start_command_event(start_command_event, mock_setup):
    # pylint: disable=no-member
    ret = app.lambda_handler(start_command_event, "")

    assert ret['statusCode'] == 200
    assert app.dynamodb.get_item.call_count == 0
    requests.post.assert_called_once_with(
        'https://api.telegram.org/bot{}/sendMessage'.format(BOT_KEY),
        data={
            'chat_id':
            99999999,
            'text':
            'Hello from the @FurryPartyOfArtAndLabor. This bot was created and released to the public to help'
            ' room owners secure their rooms from raids and alt-right recruiters. Simply add to your room and'
            ' the bot will autoblock any Nazifur on its list of users from your room before any trouble can'
            ' start.'
        })
예제 #8
0
def test_whitelisted_user(new_member_whitelist_event,
                          added_user_whitelist_response, mock_setup):
    # pylint: disable=no-member
    app.dynamodb.get_item.return_value = added_user_whitelist_response

    ret = app.lambda_handler(new_member_whitelist_event, "")

    assert ret['statusCode'] == 200
    app.dynamodb.get_item.assert_called_once_with(TableName='Roles',
                                                  Key={
                                                      'pk': {
                                                          'S': 'user_999999402'
                                                      },
                                                      'sk': {
                                                          'S': 'role_whitelist'
                                                      }
                                                  })
    assert requests.post.call_count == 0
예제 #9
0
def test_blacklisted_user(new_member_event, added_user_response, mock_setup):
    # pylint: disable=no-member
    app.dynamodb.get_item.return_value = added_user_response

    ret = app.lambda_handler(new_member_event, "")

    assert ret['statusCode'] == 200
    app.dynamodb.get_item.assert_called_once_with(TableName='Roles',
                                                  Key={
                                                      'pk': {
                                                          'S': 'user_999999402'
                                                      },
                                                      'sk': {
                                                          'S': 'role_blacklist'
                                                      }
                                                  })
    requests.post.assert_called_once_with(
        'https://api.telegram.org/bot{}/kickChatMember'.format(BOT_KEY),
        data={
            'chat_id': -1009999992388,
            'user_id': 999999402
        })
예제 #10
0
def test_bad_ssm_config(message_event, mock_bad_setup):
    with pytest.raises(Exception):
        app.lambda_handler(message_event, "")

    assert app.config is None