def test_get_slack_users_no_users(monkeypatch):
    class SlackUsersMock:
        def __init__(*args, **kwargs):
            return

        def json(self):
            return {'ok': True, 'members': []}

    monkeypatch.setattr(requests, 'get', SlackUsersMock)
    assert isinstance(controller.get_slack_users(), HTTPResponse)
    assert controller.get_slack_users().status == 200
    data = json.loads(controller.get_slack_users().body)
    assert data == {'data': [], 'ok': True}
def test_get_slack_users_slack_api_error(monkeypatch):
    class SlackUsersMock:
        def __init__(*args, **kwargs):
            return

        def json(self):
            return {'ok': False, 'members': []}

    monkeypatch.setattr(requests, 'get', SlackUsersMock)
    assert isinstance(controller.get_slack_users(), HTTPResponse)
    assert controller.get_slack_users().status == 504
    data = json.loads(controller.get_slack_users().body)
    assert data == {'message': 'Slack API error', 'ok': False}
def test_get_slack_users_filters_deleted_and_blacklisted(monkeypatch):
    class SlackUsersMock:
        def __init__(*args, **kwargs):
            return

        def json(self):
            return {
                'ok':
                True,
                'members': [{
                    'deleted': True,
                    'name': 'snax',
                    'profile': {
                        'real_name_normalized': 'Hot Dog',
                        'image_192': 'https://fakeurl.coolbeans'
                    }
                }, {
                    'deleted': False,
                    'name': 'testuser',
                    'profile': {
                        'real_name_normalized': 'Will BeFiltered',
                        'image_192': 'https://fakeurl.coolbeans'
                    }
                }, {
                    'deleted': False,
                    'name': 'real_user',
                    'profile': {
                        'real_name_normalized': 'Bloop Bloop',
                        'image_192': 'https://fakeurl.coolbeans'
                    }
                }]
            }

    monkeypatch.setattr(requests, 'get', SlackUsersMock)
    assert isinstance(controller.get_slack_users(), HTTPResponse)
    assert controller.get_slack_users().status == 200
    data = json.loads(controller.get_slack_users().body)
    assert data == {
        'data': [{
            'username': '******',
            'realname': 'Bloop Bloop',
            'avatar': 'https://fakeurl.coolbeans',
        }],
        'ok':
        True
    }
def test_add_user(monkeypatch):
    class SlackUsersMock:
        def __init__(*args, **kwargs):
            return

        def json(self):
            return {
                'ok':
                True,
                'members': [{
                    'deleted': False,
                    'name': 'snax',
                    'profile': {
                        'real_name_normalized': 'Hot Dog',
                        'image_192': 'https://fakeurl.coolbeans'
                    }
                }, {
                    'deleted': False,
                    'name': 'fail',
                    'profile': {
                        'real_name_normalized': 'I should throw',
                        'image_192': 'https://fakeurl.coolbeans'
                    }
                }]
            }

    monkeypatch.setattr(requests, 'get', SlackUsersMock)
    response = controller.get_slack_users()
    assert isinstance(response, HTTPResponse)
    assert response.status == 200

    mockRequest = {"username": "******", "password": "******"}
    noSlackResult = json.loads(controller.add_user(mockRequest, None).body)
    assert noSlackResult["ok"] == False
    assert noSlackResult["message"] == "No Slack user four-o-four"

    mockRequest = {"username": "******", "password": "******"}
    someSlackResult = json.loads(
        controller.add_user(mockRequest, mocks.MockAdderDatabase()).body)
    assert someSlackResult["ok"]
    assert someSlackResult["data"] == "Successfully added User snax"

    mockRequest = {"username": "******", "password": "******"}
    failSlackResult = json.loads(
        controller.add_user(mockRequest, mocks.MockAdderDatabase()).body)
    assert failSlackResult["ok"] == False
示例#5
0
async def slack_users(request):
    return controller.get_slack_users(request)