summaryrefslogtreecommitdiffstats
path: root/openbb_platform/core/tests/api/test_auth/test_user_auth.py
blob: 22a8ccd9cd09ca567bd567eda19465ab8b5b4f60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""Test the user module."""

# ruff: noqa: S105 S106

import asyncio
from unittest.mock import MagicMock, patch

import pytest
from fastapi.security import HTTPBasicCredentials
from openbb_core.api.auth.user import (
    UserSettings,
    authenticate_user,
    get_user_service,
    get_user_settings,
)


@pytest.mark.parametrize(
    "error, correct, received",
    [
        (True, (None, None), ("user", "pass")),
        (True, ("user", "pass"), ("", "")),
        (True, ("user", "pass"), ("random", "pass")),
        (True, ("user", "pass"), ("user", "random")),
        (False, ("", ""), ("", "")),
        (False, ("user", "pass"), ("user", "pass")),
    ],
)
@patch("openbb_core.api.auth.user.Env")
@patch("openbb_core.api.auth.user.HTTPBasicCredentials")
def test_authenticate_user(mock_credentials, mock_env, error, correct, received):
    """Test authenticate user."""
    mock_env.return_value.API_USERNAME = correct[0]
    mock_env.return_value.API_PASSWORD = correct[1]
    mock_credentials = HTTPBasicCredentials(username=received[0], password=received[1])

    if error:
        with pytest.raises(Exception):
            result = asyncio.run(authenticate_user(mock_credentials))
    else:
        result = asyncio.run(authenticate_user(mock_credentials))
        assert result is None


@patch("openbb_core.api.auth.user.UserService")
def test_get_user_service(mock_user_service):
    """Test get_user_service."""

    mock_user_service.return_value = MagicMock()

    asyncio.run(get_user_service())

    mock_user_service.assert_called_once_with()


@patch("openbb_core.api.auth.user.UserService")
def test_get_user_settings_(mock_user_service):
    """Test get_user."""
    mock_user_settings = MagicMock(spec=UserSettings, profile=MagicMock(active=True))
    mock_user_service.default_user_settings = mock_user_settings
    mock_user_service.return_value = mock_user_service
    result = asyncio.run(get_user_settings(MagicMock(), mock_user_service))  # type: ignore[arg-type]

    assert result == mock_user_settings