From 825b8955dfbcc972032eafde850d9ad05356bc04 Mon Sep 17 00:00:00 2001 From: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Date: Tue, 14 Feb 2023 09:56:03 +0000 Subject: [PATCH] Set guest by default and put authentication behind environment variable (#4197) * small bug * small bug on routines list * guest as default * limit logout to users2 * simpler this way * add logout * move logout to account & add env var * put authentication under env var * fix tests * remove login * remove openbb vars on login * ruff * revert .toml * Delete Icon * Update .env * fix sdk guest not loading keys * ruff * remove press enter & --login * ruff * move env load * load env * move dot env loading to terminal.py * fix user sdk login mixing .env with user * now it works * fix reset * fix tests * ruff * Login on the SDK using the OpenBB Personal Access Token (#4206) * openbb key on keys menu * adding sdk endpoints * adding login via token to the sdk * base url * rename to personal access token * added docstrings and examples * openbb is special * removing extra break line * making keys working with the personal access token * resolve conflicting tests * Revert "resolve conflicting tests" This reverts commit 2fca2c0ec3a0517ebf9166efcce7f124bc48bc78. * using custom requests * tests * tests * tests * using process_session_response instead * rewriting some tests * Fix sdk guest not loading keys (#4207) * fix sdk guest not loading keys * ruff * remove comment * tests --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Diogo Sousa Co-authored-by: James Maslek * test record mode vcr none * remove yes from tests yml * specify modules to reload * try disable check api * UPdate spec file * Small stocks bug * avoid reloading in test mode * will this work? * skip session tests * try with env var as well * mock sdk reload * pylint * bump poetry on python 3.8 * adapt to python 3.8 * adapt to python 3.8 remaining tests * Tests : update cassettes * Fix linting * Makes login conditions simpler * Tests : txt --------- Co-authored-by: James Maslek Co-authored-by: Chavithra Co-authored-by: Henrique Joaquim --- .github/workflows/mac.yml | 2 +- .github/workflows/unit-test.yml | 13 +- .github/workflows/windows.yml | 2 +- build/pyinstaller/terminal.spec | 4 - openbb_terminal/account/account_controller.py | 23 + openbb_terminal/base_helpers.py | 68 +- openbb_terminal/config_terminal.py | 6 + openbb_terminal/core/config/paths.py | 16 - openbb_terminal/keys_controller.py | 99 +- openbb_terminal/keys_model.py | 94 +- openbb_terminal/miscellaneous/i18n/en.yml | 2 + .../miscellaneous/library/trail_map.csv | 2 + openbb_terminal/parent_classes.py | 36 +- openbb_terminal/sdk.py | 9 +- openbb_terminal/session/hub_model.py | 52 +- openbb_terminal/session/sdk_session.py | 72 +- openbb_terminal/session/session_controller.py | 36 +- openbb_terminal/session/session_model.py | 64 +- openbb_terminal/session/user.py | 15 +- openbb_terminal/stocks/stocks_controller.py | 2 +- openbb_terminal/stocks/stocks_view.py | 4 +- openbb_terminal/terminal_controller.py | 56 +- openbb_terminal/terminal_helper.py | 24 +- terminal.py | 17 +- tests/conftest.py | 5 + .../account/test_account_controller.py | 15 + .../test_print_help.txt | 3 + ...rgs0-False-True-defined, test failed].yaml | 38 + ...gs1-False-False-defined, test failed].yaml | 38 + ...args2-True-True-defined, test failed].yaml | 38 + tests/openbb_terminal/session/conftest.py | 7 + .../openbb_terminal/session/test_hub_model.py | 88 + .../session/test_sdk_session.py | 129 +- .../session/test_session_controller.py | 12 - .../session/test_session_model.py | 150 +- .../txt/test_sdk_session/test_whoami.txt | 3 + .../test_sdk_session/test_whoami_guest.txt | 3 + .../test_get_user_input.txt | 2 +- .../test_get_user_input_with_save.txt | 2 +- .../txt/test_user/test_whoami[True-True].txt | 3 +- .../test_price_target_from_analysts_plt.yaml | 2485 +++++++---------- .../test_call_func[display_info].yaml | 2 +- .../test_price_target_from_analysts_raw.txt | 4 +- .../test_call_func[display_info].txt | 2 +- tests/openbb_terminal/test_base_helpers.py | 32 + tests/openbb_terminal/test_keys_controller.py | 17 + tests/openbb_terminal/test_keys_model.py | 50 + tests/openbb_terminal/test_sdk.py | 8 +- ...args0-False-True-defined, test failed].txt | 1 + ...rgs1-False-False-defined, test failed].txt | 0 ...[args2-True-True-defined, test failed].txt | 1 + ...enbb_key[args3-False-True-not defined].txt | 1 + 52 files changed, 2099 insertions(+), 1758 deletions(-) create mode 100644 tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args0-False-True-defined, test failed].yaml create mode 100644 tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args1-False-False-defined, test failed].yaml create mode 100644 tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args2-True-True-defined, test failed].yaml create mode 100644 tests/openbb_terminal/session/conftest.py create mode 100644 tests/openbb_terminal/session/txt/test_sdk_session/test_whoami.txt create mode 100644 tests/openbb_terminal/session/txt/test_sdk_session/test_whoami_guest.txt create mode 100644 tests/openbb_terminal/test_base_helpers.py create mode 100644 tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args0-False-True-defined, test failed].txt create mode 100644 tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args1-False-False-defined, test failed].txt create mode 100644 tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args2-True-True-defined, test failed].txt create mode 100644 tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args3-False-True-not defined].txt diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 8483930a7b8..2bca5fa0910 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -90,4 +90,4 @@ jobs: - name: Start Terminal and exit shell: bash -l {0} - run: yes "" | python terminal.py + run: python terminal.py diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 6f1f1487b85..86deb8e4c50 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -6,6 +6,7 @@ env: OPENBB_USE_ION: false OPENBB_USE_PROMPT_TOOLKIT: false OPENBB_FILE_OVERWRITE: true + OPENBB_ENABLE_CHECK_API: false PIP_DEFAULT_TIMEOUT: 100 on: @@ -102,7 +103,7 @@ jobs: - name: Start Terminal and exit run: | source $VENV - yes "" | python terminal.py + python terminal.py tests-python: name: Vanilla Python Tests - ${{ matrix.python-version }} @@ -129,7 +130,7 @@ jobs: - name: Install Poetry uses: snok/install-poetry@v1 with: - version: 1.1.13 + version: 1.3.2 virtualenvs-create: true virtualenvs-in-project: true @@ -160,7 +161,7 @@ jobs: - name: Start Terminal and exit run: | source $VENV - yes "" | python terminal.py + python terminal.py full-test: name: Full Test Suite - (${{ matrix.python-version }}, ${{ matrix.os }}) @@ -188,7 +189,7 @@ jobs: - name: Install Poetry uses: snok/install-poetry@v1 with: - version: 1.1.13 + version: 1.3.2 virtualenvs-create: true virtualenvs-in-project: true @@ -219,7 +220,7 @@ jobs: - name: Start Terminal and exit run: | source $VENV - yes "" | python terminal.py + python terminal.py tests-conda: name: Anaconda Python Tests - (${{ matrix.python-version }}, ${{ matrix.os }}) @@ -324,4 +325,4 @@ jobs: - name: Start Terminal and exit shell: bash -l {0} - run: yes "" | python terminal.py + run: python terminal.py diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 830a78fd3cb..6c5763f28b4 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -104,4 +104,4 @@ jobs: - name: Start Terminal and exit shell: bash -l {0} - run: yes "" | python terminal.py + run: python terminal.py diff --git a/build/pyinstaller/terminal.spec b/build/pyinstaller/terminal.spec index ee082b05d61..ac874175a91 100644 --- a/build/pyinstaller/terminal.spec +++ b/build/pyinstaller/terminal.spec @@ -69,10 +69,6 @@ added_files = [ os.path.join(pathex, "statsmodels", "datasets"), os.path.join("statsmodels", "datasets"), ), - ( - os.path.join(pathex, "investpy", "resources"), - os.path.join("investpy", "resources"), - ), ( os.path.join(pathex, "debugpy", "_vendored"), os.path.join("debugpy", "_vendored"), diff --git a/openbb_terminal/account/account_controller.py b/openbb_terminal/account/account_controller.py index ca2faefaa2f..56581a0e371 100644 --- a/openbb_terminal/account/account_controller.py +++ b/openbb_terminal/account/account_controller.py @@ -21,6 +21,7 @@ from openbb_terminal.session import ( hub_model as Hub, local_model as Local, ) +from openbb_terminal.session.session_model import logout from openbb_terminal.session.user import User logger = logging.getLogger(__name__) @@ -30,6 +31,7 @@ class AccountController(BaseController): """Account Controller Class""" CHOICES_COMMANDS = [ + "logout", "sync", "pull", "clear", @@ -88,8 +90,29 @@ class AccountController(BaseController): mt.add_cmd("upload") mt.add_cmd("download") mt.add_cmd("delete") + mt.add_raw("\n") + mt.add_info("_authentication_") + mt.add_cmd("logout") console.print(text=mt.menu_text, menu="Account") + @log_start_end(log=logger) + def call_logout(self, other_args: List[str]) -> None: + """Process logout command.""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="logout", + description="Logout from current session.", + ) + ns_parser = self.parse_known_args_and_warn(parser, other_args) + if ns_parser: + logout( + auth_header=User.get_auth_header(), + token=User.get_token(), + guest=User.is_guest(), + cls=True, + ) + @log_start_end(log=logger) def call_sync(self, other_args: List[str]): """Sync""" diff --git a/openbb_terminal/base_helpers.py b/openbb_terminal/base_helpers.py index e3f9e6266cc..66b4c542fb9 100644 --- a/openbb_terminal/base_helpers.py +++ b/openbb_terminal/base_helpers.py @@ -1,9 +1,19 @@ # This is for helpers that do NOT import any OpenBB Modules +import importlib +import logging import os -from typing import Any, Callable, Literal +import sys +from typing import Any, Callable, List, Literal, Optional +from dotenv import load_dotenv from rich.console import Console +from openbb_terminal.core.config.paths import ( + PACKAGE_ENV_FILE, + REPOSITORY_ENV_FILE, + USER_ENV_FILE, +) + console = Console() menus = Literal["", "featflags", "settings"] @@ -85,3 +95,59 @@ def strtobool(val): raise ValueError(f"invalid truth value {val}") return output + + +def load_dotenv_and_reload_configs(): + """Loads the dotenv files in the following order: + 1. Repository .env file + 2. Package .env file + 3. User .env file + + This allows the user to override the package settings with their own + settings, and the package to override the repository settings. + + openbb_terminal modules are reloaded to refresh config files with new env, + otherwise they will use cache with old variables. + """ + load_dotenv(REPOSITORY_ENV_FILE, override=True) + load_dotenv(PACKAGE_ENV_FILE, override=True) + load_dotenv(USER_ENV_FILE, override=True) + + reload_openbb_config_modules() + + +def reload_openbb_config_modules(): + """Reloads openbb config modules""" + + reload_modules( + to_reload=[ + "openbb_terminal.config_plot", + "openbb_terminal.config_terminal", + "openbb_terminal.feature_flags", + "openbb_terminal.core.config", + ] + ) + + +def reload_modules(to_reload: List[str]): + """Reloads modules""" + modules = sys.modules.copy() + for module in modules: + if module in to_reload: + importlib.reload(sys.modules[module]) + + +def remove_log_handlers(): + """Remove the log handlers - needs to be done before reloading modules.""" + for handler in logging.root.handlers[:]: + logging.root.removeHandler(handler) + + +def clear_openbb_env_vars(exceptions: Optional[List[str]] = None): + """Clear openbb environment variables.""" + for v in os.environ: + if v.startswith("OPENBB"): + if not exceptions: + os.environ.pop(v) + elif v not in exceptions: + os.environ.pop(v) diff --git a/openbb_terminal/config_terminal.py b/openbb_terminal/config_terminal.py index 473b43f022d..3cb690f5369 100644 --- a/openbb_terminal/config_terminal.py +++ b/openbb_terminal/config_terminal.py @@ -3,6 +3,7 @@ import os # IMPORTATION INTERNAL from openbb_terminal.base_helpers import load_env_vars, strtobool + from .helper_classes import TerminalStyle as _TerminalStyle SENSITIVE_KEYS = [ @@ -194,5 +195,10 @@ API_TOKEN_TERMINAL_KEY = os.getenv("OPENBB_API_TOKEN_TERMINAL_KEY") or "REPLACE_ # https://stocksera.pythonanywhere.com/accounts/developers API_STOCKSERA_KEY = os.getenv("OPENBB_API_STOCKSERA_KEY") or "REPLACE_ME" +# https://my.openbb.co +OPENBB_PERSONAL_ACCESS_TOKEN = ( + os.getenv("OPENBB_OPENBB_PERSONAL_ACCESS_TOKEN") or "REPLACE_ME" +) + # https://intrinio.com/starter-plan API_INTRINIO_KEY = os.getenv("OPENBB_API_INTRINIO_KEY") or "REPLACE_ME" diff --git a/openbb_terminal/core/config/paths.py b/openbb_terminal/core/config/paths.py index 296bfe641ae..6cbf00611d0 100644 --- a/openbb_terminal/core/config/paths.py +++ b/openbb_terminal/core/config/paths.py @@ -2,22 +2,6 @@ import os from pathlib import Path -from dotenv import load_dotenv - - -def load_dotenv_with_priority(): - """Loads the dotenv files in the following order: - 1. Repository .env file - 2. Package .env file - 3. User .env file - - This allows the user to override the package settings with their own - settings, and the package to override the repository settings. - """ - load_dotenv(REPOSITORY_ENV_FILE, override=True) - load_dotenv(PACKAGE_ENV_FILE, override=True) - load_dotenv(USER_ENV_FILE, override=True) - def get_user_data_directory(): """Gets user data path from .env file or returns default path""" diff --git a/openbb_terminal/keys_controller.py b/openbb_terminal/keys_controller.py index 047d05049a4..8c46cbcd7db 100644 --- a/openbb_terminal/keys_controller.py +++ b/openbb_terminal/keys_controller.py @@ -54,7 +54,14 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods def check_keys_status(self) -> None: """Check keys status""" for api in optional_rich_track(self.API_LIST, desc="Checking keys status"): - self.status_dict[api] = getattr(keys_model, "check_" + str(api) + "_key")() + if api == "openbb": + self.status_dict[api] = getattr( + keys_model, "check_" + str(api) + "_personal_access_token" + )() + else: + self.status_dict[api] = getattr( + keys_model, "check_" + str(api) + "_key" + )() def print_help(self): """Print help""" @@ -136,7 +143,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods ) if not other_args: console.print( - "For your API Key, visit: https://www.alphavantage.co/support/#api-key\n" + "For your API Key, visit: https://www.alphavantage.co/support/#api-key" ) return @@ -165,9 +172,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print( - "For your API Key, visit: https://financialmodelingprep.com\n" - ) + console.print("For your API Key, visit: https://financialmodelingprep.com") return if other_args and "-" not in other_args[0][0]: @@ -195,7 +200,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://www.quandl.com\n") + console.print("For your API Key, visit: https://www.quandl.com") return if other_args and "-" not in other_args[0][0]: @@ -223,7 +228,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://polygon.io\n") + console.print("For your API Key, visit: https://polygon.io") return if other_args and "-" not in other_args[0][0]: @@ -281,7 +286,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://fred.stlouisfed.org\n") + console.print("For your API Key, visit: https://fred.stlouisfed.org") return if other_args and "-" not in other_args[0][0]: @@ -309,7 +314,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://newsapi.org\n") + console.print("For your API Key, visit: https://newsapi.org") return if other_args and "-" not in other_args[0][0]: @@ -337,7 +342,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://developer.tradier.com\n") + console.print("For your API Key, visit: https://developer.tradier.com") return if other_args and "-" not in other_args[0][0]: @@ -365,7 +370,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://coinmarketcap.com\n") + console.print("For your API Key, visit: https://coinmarketcap.com") return if other_args and "-" not in other_args[0][0]: other_args.insert(0, "-k") @@ -392,7 +397,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://finnhub.io\n") + console.print("For your API Key, visit: https://finnhub.io") return if other_args and "-" not in other_args[0][0]: other_args.insert(0, "-k") @@ -453,7 +458,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods nargs="+", ) if not other_args: - console.print("For your API Key, visit: https://www.reddit.com\n") + console.print("For your API Key, visit: https://www.reddit.com") return ns_parser = self.parse_simple_args(parser, other_args) if ns_parser: @@ -506,7 +511,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods required="-h" not in other_args, ) if not other_args: - console.print("For your API Key, visit: https://developer.twitter.com\n") + console.print("For your API Key, visit: https://developer.twitter.com") return ns_parser = self.parse_simple_args(parser, other_args) if ns_parser: @@ -542,7 +547,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="password", ) if not other_args: - console.print("For your API Key, visit: https://robinhood.com/us/en/\n") + console.print("For your API Key, visit: https://robinhood.com/us/en/") return ns_parser = self.parse_simple_args(parser, other_args) if ns_parser: @@ -587,7 +592,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods default="", ) if not other_args: - console.print("For your API Key, visit: https://www.degiro.fr\n") + console.print("For your API Key, visit: https://www.degiro.fr") return ns_parser = self.parse_simple_args(parser, other_args) if ns_parser: @@ -630,7 +635,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="account type ('live' or 'practice')", ) if not other_args: - console.print("For your API Key, visit: https://developer.oanda.com\n") + console.print("For your API Key, visit: https://developer.oanda.com") return ns_parser = self.parse_simple_args(parser, other_args) if ns_parser: @@ -668,7 +673,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods required="-h" not in other_args, ) if not other_args: - console.print("For your API Key, visit: https://binance.com\n") + console.print("For your API Key, visit: https://binance.com") return ns_parser = self.parse_simple_args(parser, other_args) if ns_parser: @@ -696,7 +701,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://bitquery.io/\n") + console.print("For your API Key, visit: https://bitquery.io/") return if other_args and "-" not in other_args[0][0]: other_args.insert(0, "-k") @@ -740,7 +745,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods required="-h" not in other_args, ) if not other_args: - console.print("For your API Key, visit: https://docs.pro.coinbase.com/\n") + console.print("For your API Key, visit: https://docs.pro.coinbase.com/") return ns_parser = self.parse_simple_args(parser, other_args) if ns_parser: @@ -769,7 +774,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://docs.whale-alert.io/\n") + console.print("For your API Key, visit: https://docs.whale-alert.io/") return if other_args and "-" not in other_args[0][0]: other_args.insert(0, "-k") @@ -797,7 +802,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods ) if not other_args: console.print( - "For your API Key, visit: https://docs.glassnode.com/basic-api/api-key#how-to-get-an-api-key/\n" + "For your API Key, visit: https://docs.glassnode.com/basic-api/api-key#how-to-get-an-api-key/" ) return if other_args and "-" not in other_args[0][0]: @@ -826,7 +831,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods ) if not other_args: console.print( - "For your API Key, visit: https://coinglass.github.io/API-Reference/#api-key\n" + "For your API Key, visit: https://coinglass.github.io/API-Reference/#api-key" ) return if other_args and "-" not in other_args[0][0]: @@ -855,7 +860,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods ) if not other_args: console.print( - "For your API Key, visit: https://cryptopanic.com/developers/api/\n" + "For your API Key, visit: https://cryptopanic.com/developers/api/" ) return if other_args and "-" not in other_args[0][0]: @@ -884,7 +889,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods ) if not other_args: console.print( - "For your API Key, visit: https://github.com/EverexIO/Ethplorer/wiki/Ethplorer-API\n" + "For your API Key, visit: https://github.com/EverexIO/Ethplorer/wiki/Ethplorer-API" ) return if other_args and "-" not in other_args[0][0]: @@ -921,7 +926,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods required="-h" not in other_args, ) if not other_args: - console.print("For your API Key, visit: https://www.smartstake.io\n") + console.print("For your API Key, visit: https://www.smartstake.io") return ns_parser = self.parse_simple_args(parser, other_args) @@ -951,7 +956,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods ) if not other_args: console.print( - "For your API Key, visit: https://docs.github.com/en/rest/guides/getting-started-with-the-rest-api\n" + "For your API Key, visit: https://docs.github.com/en/rest/guides/getting-started-with-the-rest-api" ) return @@ -980,7 +985,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://messari.io/api/docs\n") + console.print("For your API Key, visit: https://messari.io/api/docs") return if other_args and "-" not in other_args[0][0]: @@ -1009,7 +1014,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods ) if not other_args: console.print( - "For your API Key, visit: https://eodhistoricaldata.com/r/?ref=869U7F4J\n" + "For your API Key, visit: https://eodhistoricaldata.com/r/?ref=869U7F4J" ) return if other_args and "-" not in other_args[0][0]: @@ -1039,7 +1044,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods if not other_args: console.print( "For your API Key, visit: " - "https://academy.santiment.net/products-and-plans/create-an-api-key\n" + "https://academy.santiment.net/products-and-plans/create-an-api-key" ) return if other_args and "-" not in other_args[0][0]: @@ -1068,7 +1073,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods ) if not other_args: console.print( - "For your API Key, visit: https://sdk.flipsidecrypto.xyz/shroomdk\n" + "For your API Key, visit: https://sdk.flipsidecrypto.xyz/shroomdk" ) return @@ -1097,7 +1102,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods help="key", ) if not other_args: - console.print("For your API Key, visit: https://tokenterminal.com/\n") + console.print("For your API Key, visit: https://tokenterminal.com/") return if other_args and "-" not in other_args[0][0]: @@ -1126,7 +1131,7 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods ) if not other_args: console.print( - "For your API Key, https://stocksera.pythonanywhere.com/accounts/developers\n" + "For your API Key, https://stocksera.pythonanywhere.com/accounts/developers" ) return @@ -1137,3 +1142,31 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods self.status_dict["stocksera"] = keys_model.set_stocksera_key( key=ns_parser.key, persist=True, show_output=True ) + + @log_start_end(log=logger) + def call_openbb(self, other_args: List[str]): + """Process openbb command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="openbb", + description="Set OpenBB Personal Access Token. ", + ) + parser.add_argument( + "-k", + "--key", + type=str, + dest="key", + help="key", + ) + if not other_args: + console.print("For your Personal Access Token, visit: https://openbb.co/") + return + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-k") + ns_parser = self.parse_simple_args(parser, other_args) + if ns_parser: + self.status_dict["openbb"] = keys_model.set_openbb_personal_access_token( + key=ns_parser.key, persist=True, show_output=True + ) diff --git a/openbb_terminal/keys_model.py b/openbb_terminal/keys_model.py index cc851ec8866..c0f3ef79c7d 100644 --- a/openbb_terminal/keys_model.py +++ b/openbb_terminal/keys_model.py @@ -5,6 +5,7 @@ __docformat__ = "numpy" import contextlib import io +import json import logging import os import sys @@ -35,7 +36,8 @@ from openbb_terminal.cryptocurrency.coinbase_helpers import ( from openbb_terminal.helper_funcs import request from openbb_terminal.portfolio.brokers.degiro.degiro_model import DegiroModel from openbb_terminal.rich_config import console -from openbb_terminal.session.hub_model import patch_user_configs +from openbb_terminal.session.hub_model import BASE_URL, patch_user_configs +from openbb_terminal.session.local_model import SESSION_FILE_PATH from openbb_terminal.session.user import User from openbb_terminal.terminal_helper import suppress_stdout @@ -66,6 +68,7 @@ API_DICT: Dict = { "rh": "ROBINHOOD", "degiro": "DEGIRO", "oanda": "OANDA", + "openbb": "OPENBB", "binance": "BINANCE", "bitquery": "BITQUERY", "coinbase": "COINBASE", @@ -243,7 +246,7 @@ def set_key(env_var_name: str, env_var_value: str, persist: bool = False) -> Non not User.is_guest() and User.is_sync_enabled() and env_var_name not in cfg.SENSITIVE_KEYS - and env_var_name.startswith("API_") + and (env_var_name.startswith("API_") or env_var_name.startswith("OPENBB_")) ): patch_user_configs( key=env_var_name, @@ -280,14 +283,17 @@ def get_keys(show: bool = False) -> pd.DataFrame: # TODO: Refactor api variables without prefix API_ and extend API_SOURCE_KEY format - var_list = [v for v in dir(cfg) if v.startswith("API_")] + var_list = [v for v in dir(cfg) if v.startswith("API_") or v.startswith("OPENBB_")] current_keys = {} for cfg_var_name in var_list: cfg_var_value = getattr(cfg, cfg_var_name) if cfg_var_value != "REPLACE_ME": - current_keys[cfg_var_name[4:]] = cfg_var_value + if cfg_var_name.startswith("OPENBB_"): + current_keys[cfg_var_name] = cfg_var_value + else: + current_keys[cfg_var_name[4:]] = cfg_var_value if current_keys: df = pd.DataFrame.from_dict(current_keys, orient="index") @@ -2485,6 +2491,86 @@ def check_stocksera_key(show_output: bool = False): return str(status) +def set_openbb_personal_access_token( + key: str, persist: bool = False, show_output: bool = False +): + """Set OpenBB Personal Access Token. + + Parameters + ---------- + key: str + Personal Access Token + persist: bool, optional + If False, api key change will be contained to where it was changed. For example, a Jupyter notebook session. + If True, api key change will be global, i.e. it will affect terminal environment variables. + By default, False. + show_output: bool, optional + Display status string or not. By default, False. + + Returns + ------- + str + Status of key set + + Examples + -------- + >>> from openbb_terminal.sdk import openbb + >>> openbb.keys.openbb(key="example_key") + """ + set_key("OPENBB_OPENBB_PERSONAL_ACCESS_TOKEN", key, persist) + return check_openbb_personal_access_token(show_output) + + +def check_openbb_personal_access_token(show_output: bool = False): + """Check OpenBB Personal Access Token + + Returns + ------- + str + Status of key set + """ + if cfg.OPENBB_PERSONAL_ACCESS_TOKEN == "REPLACE_ME": + logger.info("OpenBB Personal Access Token not defined") + status = KeyStatus.NOT_DEFINED + else: + try: + access_token = "" + + # TODO: is there a better way to test the key? + # This requires a valid session file + + if os.path.isfile(SESSION_FILE_PATH): + with open(SESSION_FILE_PATH) as f: + access_token = json.load(f).get("access_token") + + headers = { + "Authorization": f"Bearer {access_token}", + "Content-Type": "application/json", + } + response = request( + url=f"{BASE_URL}sdk/token", method="GET", headers=headers + ) + + token = response.json().get("token") + + if ( + response.status_code == 200 + and token == cfg.OPENBB_PERSONAL_ACCESS_TOKEN + ): + logger.info("OpenBB Personal Access Token defined, test passed") + status = KeyStatus.DEFINED_TEST_PASSED + else: + logger.warning("OpenBB Personal Access Token. defined, test failed") + status = KeyStatus.DEFINED_TEST_FAILED + except requests.exceptions.RequestException: + logger.warning("OpenBB Personal Access Token. defined, test failed") + status = KeyStatus.DEFINED_TEST_FAILED + + if show_output: + console.print(status.colorize()) + return str(status) + + def set_intrinio_key(key: str, persist: bool = False, show_output: bool = False) -> str: """Set Intrinio key diff --git a/openbb_terminal/miscellaneous/i18n/en.yml b/openbb_terminal/miscellaneous/i18n/en.yml index 4d171bffeb7..412ec954128 100644 --- a/openbb_terminal/miscellaneous/i18n/en.yml +++ b/openbb_terminal/miscellaneous/i18n/en.yml @@ -18,6 +18,8 @@ en: exe: execute .openbb routine scripts (use exe --example for an example) _configure_: Configure your own terminal _main_menu_: Main menu + account/_authentication_: Authentication + account/logout: Log out from OpenBB account account/_info_: Cloud storage of keys, settings and feature flags account/sync: Turns the cloud synchronization on/off account/pull: Pull data from cloud diff --git a/openbb_terminal/miscellaneous/library/trail_map.csv b/openbb_terminal/miscellaneous/library/trail_map.csv index bd5bdd4a5be..4dcfb6c61bf 100644 --- a/openbb_terminal/miscellaneous/library/trail_map.csv +++ b/openbb_terminal/miscellaneous/library/trail_map.csv @@ -533,6 +533,7 @@ keys.santiment,openbb_terminal.keys_model.set_santiment_key, keys.tokenterminal,openbb_terminal.keys_model.set_tokenterminal_key, keys.shroom,openbb_terminal.keys_model.set_shroom_key, keys.stocksera,openbb_terminal.keys_model.set_stocksera_key, +keys.openbb,openbb_terminal.keys_model.set_openbb_personal_access_token, futures.search,openbb_terminal.futures.yfinance_model.get_search_futures, futures.historical,openbb_terminal.futures.yfinance_model.get_historical_futures,openbb_terminal.futures.yfinance_view.display_historical futures.curve,openbb_terminal.futures.yfinance_model.get_curve_futures,openbb_terminal.futures.yfinance_view.display_curve @@ -541,3 +542,4 @@ stocks.disc.filings,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_fi stocks.fa.sec_fmp,openbb_terminal.stocks.fundamental_analysis.fmp_model.get_filings,openbb_terminal.stocks.fundamental_analysis.fmp_view.display_filings login,openbb_terminal.session.sdk_session.login, logout,openbb_terminal.session.sdk_session.logout, +whoami,openbb_terminal.session.sdk_session.whoami, \ No newline at end of file diff --git a/openbb_terminal/parent_classes.py b/openbb_terminal/parent_classes.py index a2ecc76b3bc..37ee3ad994f 100644 --- a/openbb_terminal/parent_classes.py +++ b/openbb_terminal/parent_classes.py @@ -45,10 +45,9 @@ from openbb_terminal.helper_funcs import ( ) from openbb_terminal.menu import session from openbb_terminal.rich_config import console, get_ordered_list_sources -from openbb_terminal.session.session_model import logout from openbb_terminal.session.user import User from openbb_terminal.stocks import stocks_helper -from openbb_terminal.terminal_helper import open_openbb_documentation +from openbb_terminal.terminal_helper import is_auth_enabled, open_openbb_documentation logger = logging.getLogger(__name__) @@ -96,10 +95,11 @@ class BaseController(metaclass=ABCMeta): "record", "stop", "screenshot", - "logout", - "whoami", ] + if is_auth_enabled(): + CHOICES_COMMON += ["whoami"] + CHOICES_COMMANDS: List[str] = [] CHOICES_MENUS: List[str] = [] SUPPORT_CHOICES: dict = {} @@ -385,6 +385,9 @@ class BaseController(metaclass=ABCMeta): self.log_queue() + if not self.queue or (self.queue and self.queue[0] not in ("quit", "help")): + console.print() + return self.queue @log_start_end(log=logger) @@ -675,25 +678,6 @@ class BaseController(metaclass=ABCMeta): if ns_parser: screenshot() - @log_start_end(log=logger) - def call_logout(self, other_args: List[str]) -> None: - """Process logout command.""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="logout", - description="Logout from OpenBB", - ) - ns_parser = self.parse_simple_args(parser, other_args) - - if ns_parser: - logout( - auth_header=User.get_auth_header(), - token=User.get_token(), - guest=User.is_guest(), - cls=True, - ) - @log_start_end(log=logger) def call_whoami(self, other_args: List[str]) -> None: """Process whoami command.""" @@ -707,7 +691,6 @@ class BaseController(metaclass=ABCMeta): if ns_parser: User.whoami() - console.print("") @staticmethod def parse_simple_args(parser: argparse.ArgumentParser, other_args: List[str]): @@ -964,11 +947,6 @@ class BaseController(metaclass=ABCMeta): if an_input == "logout": return ["logout"] - if not self.queue or ( - self.queue and self.queue[0] not in ("quit", "help") - ): - console.print() - except SystemExit: if not self.contains_keys(an_input): logger.exception( diff --git a/openbb_terminal/sdk.py b/openbb_terminal/sdk.py index d5170741de6..1425ff761ad 100644 --- a/openbb_terminal/sdk.py +++ b/openbb_terminal/sdk.py @@ -1,13 +1,18 @@ # pylint: disable=unused-import from openbb_terminal import helper_funcs as helper # noqa: F401 +from openbb_terminal.base_helpers import load_dotenv_and_reload_configs from openbb_terminal.config_terminal import theme # noqa: F401 from openbb_terminal.core.library.breadcrumb import Breadcrumb, MetadataBuilder from openbb_terminal.core.library.trail_map import TrailMap -from openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model import ( # noqa: F401 - Coin, +from openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model import ( + Coin, # noqa: F401 ) from openbb_terminal.helper_classes import TerminalStyle from openbb_terminal.reports import widget_helpers as widgets # noqa: F401 +from openbb_terminal.session.user import User + +if User.is_guest(): + load_dotenv_and_reload_configs() TerminalStyle().applyMPLstyle() trail = "" diff --git a/openbb_terminal/session/hub_model.py b/openbb_terminal/session/hub_model.py index 9d00fd6f152..d2b29a45aaf 100644 --- a/openbb_terminal/session/hub_model.py +++ b/openbb_terminal/session/hub_model.py @@ -4,8 +4,9 @@ import requests from openbb_terminal.rich_config import console -REGISTER_LINK = "https://my.openbb.dev/register" +REGISTER_URL = "https://my.openbb.dev/register" BASE_URL = "https://payments.openbb.dev/" +# BASE_URL = "http://127.0.0.1:8000/" TIMEOUT = 15 CONNECTION_ERROR_MSG = "[red]Connection error.[/red]" @@ -51,6 +52,36 @@ def create_session( return None +def create_session_from_token( + token: str, base_url: str = BASE_URL, timeout: int = TIMEOUT +): + """Create a session from token. + + Parameters + ---------- + token : str + The token. + base_url : str + The base url, by default BASE_URL + timeout : int + The timeout, by default TIMEOUT + """ + try: + data = { + "token": token, + } + return requests.post(url=base_url + "sdk/login", json=data, timeout=timeout) + except requests.exceptions.ConnectionError: + console.print("\n[red]Connection error.[/red]") + return None + except requests.exceptions.Timeout: + console.print("\n[red]Connection timeout.[/red]") + return None + except Exception: + console.print("\n[red]Failed to request login info.[/red]") + return None + + def delete_session( auth_header: str, token: str, base_url: str = BASE_URL, timeout: int = TIMEOUT ) -> Optional[requests.Response]: @@ -140,6 +171,25 @@ def get_session(email: str, password: str) -> dict: return process_session_response(response) +def get_session_from_token(token: str) -> dict: + """Get the session info from token. + + Parameters + ---------- + token : str + The token. + + Returns + ------- + dict + The session info. + """ + response = create_session_from_token(token) + if response is None: + return {} + return process_session_response(response) + + def fetch_user_configs( session: dict, base_url: str = BASE_URL, timeout: int = TIMEOUT ) -> Optional[requests.Response]: diff --git a/openbb_terminal/session/sdk_session.py b/openbb_terminal/session/sdk_session.py index 8c82129e07a..3edbe7d3dd6 100644 --- a/openbb_terminal/session/sdk_session.py +++ b/openbb_terminal/session/sdk_session.py @@ -6,31 +6,89 @@ from openbb_terminal.session import ( from openbb_terminal.session.user import User -def get_session(email: str, password: str, save: bool): - session = session_model.create_session(email, password, save) +def get_session(email: str, password: str, token: str, save: bool): + session = "" + + if token: + console.print("Creating session from token.") + session = session_model.create_session_from_token(token, save) + + if not session: + console.print("Creating session from email and password.") + session = session_model.create_session(email, password, save) + if not (isinstance(session, dict) and session): - raise Exception("Failed to create session") + raise Exception("Failed to create session.") + return session -def login(email: str = "", password: str = "", keep_session: bool = False): +def login( + email: str = "", password: str = "", token: str = "", keep_session: bool = False +): + """ + Login and load user info. + If there is a saved session it will be used (this can be achieved by `keep_session=True`). + If there's not a local session, + the user can use either email and password or the OpenBB Personal Access Token. + + Parameters + ---------- + email : str + The email. + password : str + The password. + token : str + The OpenBB Personal Access Token. + keep_session : bool + Keep the session, i.e., next time the user logs in, + there is no need to enter the email and password or the token. + + Examples + -------- + >>> from openbb_terminal.sdk import openbb + >>> openbb.login(email="your_email", password="your_password") + """ + session = Local.get_session() if not session: - session = get_session(email, password, keep_session) + session = get_session(email, password, token, keep_session) + else: + console.print("Using saved session to login.") if session_model.login(session) in [ session_model.LoginStatus.FAILED, session_model.LoginStatus.NO_RESPONSE, ]: - raise Exception("Login failed") + raise Exception("Login failed.") - console.print("[green]Login successful[/green]") + console.print("[green]Login successful.[/green]") def logout(): + """ + Logout and clear session. + + Examples + -------- + >>> from openbb_terminal.sdk import openbb + >>> openbb.logout() + """ session_model.logout( auth_header=User.get_auth_header(), token=User.get_token(), guest=User.is_guest(), ) + + +def whoami(): + """ + Display user info. + + Examples + -------- + >>> from openbb_terminal.sdk import openbb + >>> openbb.whoami() + """ + User.whoami() diff --git a/openbb_terminal/session/session_controller.py b/openbb_terminal/session/session_controller.py index e9631fa9b85..c269f710a9a 100644 --- a/openbb_terminal/session/session_controller.py +++ b/openbb_terminal/session/session_controller.py @@ -6,7 +6,7 @@ import openbb_terminal.session.local_model as Local from openbb_terminal import terminal_controller from openbb_terminal.core.config.paths import PACKAGE_DIRECTORY from openbb_terminal.rich_config import console -from openbb_terminal.session.hub_model import REGISTER_LINK +from openbb_terminal.session.hub_model import REGISTER_URL from openbb_terminal.session.session_model import ( LoginStatus, create_session, @@ -18,7 +18,7 @@ def display_welcome_message(): """Display welcome message""" with open(PACKAGE_DIRECTORY / "session" / "banner.txt") as f: console.print(f"[menu]{f.read()}[/menu]\n") - console.print(f"Register : [cmds]{REGISTER_LINK}[/cmds]") + console.print(f"Register : [cmds]{REGISTER_URL}[/cmds]") console.print("Ask support : [cmds]https://openbb.co/support[/cmds]") console.print( "[yellow]\nWARNING: This is a pre-release version published for testing.[/yellow]" @@ -34,9 +34,7 @@ def get_user_input() -> Tuple[str, str, bool]: Tuple[str, str, bool] The user email, password and save login option. """ - console.print( - "[info]\nPlease enter your credentials or press enter for guest mode:[/info]" - ) + console.print("[info]\nPlease enter your credentials:[/info]") s: PromptSession = PromptSession() @@ -58,7 +56,7 @@ def get_user_input() -> Tuple[str, str, bool]: return email, password, save -def prompt(welcome=True, guest_allowed=False): +def prompt(welcome=True): """Prompt and launch terminal if login is successful. Parameters @@ -72,13 +70,11 @@ def prompt(welcome=True, guest_allowed=False): while True: email, password, save = get_user_input() if not email or not password: - if guest_allowed: - return launch_terminal() continue session = create_session(email, password, save) if isinstance(session, dict) and session: - return login_and_launch(session=session, guest_allowed=guest_allowed) + return login_and_launch(session=session) def launch_terminal(): @@ -86,38 +82,30 @@ def launch_terminal(): terminal_controller.parse_args_and_run() -def login_and_launch(session: dict, guest_allowed: bool = True): +def login_and_launch(session: dict): """Login and launch terminal. Parameters ---------- session : dict The session info. - guest_allowed : bool, optional - Allow guest login, by default True """ status = login(session) if status == LoginStatus.SUCCESS: launch_terminal() elif status == LoginStatus.FAILED: - prompt(welcome=False, guest_allowed=guest_allowed) + prompt(welcome=False) else: - prompt(welcome=True, guest_allowed=guest_allowed) + prompt(welcome=True) -def main(guest_allowed: bool = True): - """Main function - - Parameters - ---------- - guest_allowed : bool, optional - Allow guest login, by default True - """ +def main(): + """Main function""" local_session = Local.get_session() if not local_session: - prompt(guest_allowed=guest_allowed) + prompt() else: - login_and_launch(session=local_session, guest_allowed=guest_allowed) + login_and_launch(session=local_session) if __name__ == "__main__": diff --git a/openbb_terminal/session/session_model.py b/openbb_terminal/session/session_model.py index dd23c5ff836..c4482efc9d6 100644 --- a/openbb_terminal/session/session_model.py +++ b/openbb_terminal/session/session_model.py @@ -1,8 +1,4 @@ -import importlib import json -import logging -import os -import sys from enum import Enum from typing import Optional @@ -10,6 +6,11 @@ import matplotlib.pyplot as plt import openbb_terminal.session.hub_model as Hub import openbb_terminal.session.local_model as Local +from openbb_terminal.base_helpers import ( + clear_openbb_env_vars, + reload_openbb_config_modules, + remove_log_handlers, +) from openbb_terminal.helper_funcs import system_clear from openbb_terminal.rich_config import console from openbb_terminal.session.user import User @@ -42,6 +43,23 @@ def create_session(email: str, password: str, save: bool) -> dict: return session +def create_session_from_token(token: str, save: bool) -> dict: + """Create a session from token. + + Parameters + ---------- + token : str + The token. + save : bool + Save the session. + """ + + session = Hub.get_session_from_token(token) + if session and save: + Local.save_session(session) + return session + + def login(session: dict) -> LoginStatus: """Login and load user info. @@ -50,6 +68,8 @@ def login(session: dict) -> LoginStatus: session : dict The session info. """ + clear_openbb_env_vars(exceptions=["OPENBB_ENABLE_AUTHENTICATION"]) + reload_openbb_config_modules() response = Hub.fetch_user_configs(session) if response is not None: if response.status_code == 200: @@ -99,39 +119,19 @@ def logout( r = Hub.delete_session(auth_header, token) if not r or r.status_code != 200: success = False - User.clear() + User.clear() - clear_openbb_env_vars() - remove_log_handlers() - reload_openbb_modules() - - if not Local.remove_session_file(): - success = False + if not Local.remove_session_file(): + success = False if not Local.remove_cli_history_file(): success = False + + clear_openbb_env_vars() + remove_log_handlers() + reload_openbb_config_modules() + plt.close("all") if success: console.print("[green]\nLogout successful.[/green]") - - -def clear_openbb_env_vars(): - """Clear openbb environment variables.""" - for v in os.environ: - if v.startswith("OPENBB"): - os.environ.pop(v) - - -def remove_log_handlers(): - """Remove the log handlers - needs to be done before reloading modules.""" - for handler in logging.root.handlers[:]: - logging.root.removeHandler(handler) - - -def reload_openbb_modules(): - """Reload all openbb modules to clear memorized variables.""" - modules = sys.modules.copy() - for module in modules: - if module.startswith("openbb"): - importlib.reload(sys.modules[module]) diff --git a/openbb_terminal/session/user.py b/openbb_terminal/session/user.py index ad50700684b..f53993dd45d 100644 --- a/openbb_terminal/session/user.py +++ b/openbb_terminal/session/user.py @@ -1,6 +1,6 @@ import openbb_terminal.feature_flags as obbff from openbb_terminal.rich_config import console -from openbb_terminal.session.hub_model import REGISTER_LINK +from openbb_terminal.session.hub_model import REGISTER_URL class User: @@ -58,10 +58,7 @@ class User: sync = "OFF" console.print(f"[info]sync:[/info] {sync}") else: - console.print( - "[info]You are currently logged as a guest.\n" - f"Create an account here {REGISTER_LINK}.[/info]" - ) + User.print_guest_message() @classmethod def clear(cls): @@ -91,3 +88,11 @@ class User: def get_token(cls): """Get token.""" return cls._token + + @classmethod + def print_guest_message(cls): + """Print guest message.""" + console.print( + "[info]You are currently logged as a guest.\n" + f"[info]Register: [/info][cmds]{REGISTER_URL}\n[/cmds]" + ) diff --git a/openbb_terminal/stocks/stocks_controller.py b/openbb_terminal/stocks/stocks_controller.py index a4a1fe266c2..a630978cf37 100644 --- a/openbb_terminal/stocks/stocks_controller.py +++ b/openbb_terminal/stocks/stocks_controller.py @@ -315,7 +315,7 @@ class StocksController(StockBaseController): self.custom_load_wrapper([self.ticker]) stocks_view.display_quote( - ns_parser.s_ticker, + self.ticker, ns_parser.export, " ".join(ns_parser.sheet_name) if ns_parser.sheet_name else None, ) diff --git a/openbb_terminal/stocks/stocks_view.py b/openbb_terminal/stocks/stocks_view.py index 05b303aac0f..bfe361e7527 100644 --- a/openbb_terminal/stocks/stocks_view.py +++ b/openbb_terminal/stocks/stocks_view.py @@ -28,7 +28,9 @@ def display_quote(symbol: str, export: str = "", sheet_name: str = None): if quote.empty: console.print("[red]Data not found[/red]\n") else: - print_rich_table(quote, headers=[""], title=f"{symbol} Quote", show_index=True) + print_rich_table( + quote, headers=[""], title=f"{symbol.upper()} Quote", show_index=True + ) export_data( export, diff --git a/openbb_terminal/terminal_controller.py b/openbb_terminal/terminal_controller.py index 2e6c336ad42..0d94eedfcc4 100644 --- a/openbb_terminal/terminal_controller.py +++ b/openbb_terminal/terminal_controller.py @@ -5,7 +5,6 @@ __docformat__ = "numpy" import argparse import contextlib import difflib -import importlib import logging import os import re @@ -33,7 +32,6 @@ from openbb_terminal.core.config.paths import ( USER_DATA_DIRECTORY, USER_ENV_FILE, USER_ROUTINES_DIRECTORY, - load_dotenv_with_priority, ) from openbb_terminal.core.log.generation.custom_logger import log_terminal from openbb_terminal.helper_funcs import ( @@ -48,12 +46,11 @@ from openbb_terminal.parent_classes import BaseController from openbb_terminal.reports.reports_model import ipykernel_launcher from openbb_terminal.rich_config import MenuText, console from openbb_terminal.session import session_controller -from openbb_terminal.session.hub_model import REGISTER_LINK from openbb_terminal.session.user import User from openbb_terminal.terminal_helper import ( bootup, check_for_updates, - is_installer, + is_auth_enabled, is_packaged_application, is_reset, print_goodbye, @@ -82,7 +79,6 @@ class TerminalController(BaseController): """Terminal Controller class.""" CHOICES_COMMANDS = [ - "account", "keys", "settings", "survey", @@ -110,6 +106,9 @@ class TerminalController(BaseController): "funds", ] + if is_auth_enabled(): + CHOICES_MENUS.append("account") + PATH = "/" GUESS_TOTAL_TRIES = 0 @@ -173,7 +172,8 @@ class TerminalController(BaseController): mt.add_cmd("news") mt.add_raw("\n") mt.add_info("_configure_") - mt.add_menu("account") + if is_auth_enabled(): + mt.add_menu("account") mt.add_menu("keys") mt.add_menu("featflags") mt.add_menu("sources") @@ -369,10 +369,7 @@ class TerminalController(BaseController): from openbb_terminal.account.account_controller import AccountController if User.is_guest(): - console.print( - "[info]You need to be logged in to use this menu.\n" - f"Create an account here {REGISTER_LINK}.[/info]\n" - ) + User.print_guest_message() return self.queue = self.load_class(AccountController, self.queue) @@ -836,13 +833,6 @@ class TerminalController(BaseController): def terminal(jobs_cmds: List[str] = None, test_mode=False): """Terminal Menu.""" - if User.is_guest(): - load_dotenv_with_priority() - modules = sys.modules.copy() - for module in modules: - if module.startswith("openbb"): - importlib.reload(sys.modules[module]) - log_terminal(test_mode=test_mode) if jobs_cmds is not None and jobs_cmds: @@ -949,6 +939,9 @@ def terminal(jobs_cmds: List[str] = None, test_mode=False): an_input = input(f"{get_flair()} / $ ") try: + if an_input == "logout": + break + # Process the input command t_controller.queue = t_controller.switch(an_input) @@ -963,9 +956,6 @@ def terminal(jobs_cmds: List[str] = None, test_mode=False): print_goodbye() break - if an_input == "logout": - break - except SystemExit: logger.exception( "The command '%s' doesn't exist on the / menu.", @@ -998,7 +988,7 @@ def terminal(jobs_cmds: List[str] = None, test_mode=False): t_controller.queue.insert(0, an_input) if an_input == "logout": - return session_controller.main(guest_allowed=not is_installer()) + return session_controller.main() def insert_start_slash(cmds: List[str]) -> List[str]: @@ -1217,15 +1207,6 @@ def parse_args_and_run(): type=lambda s: [str(item) for item in s.split(",")], default=None, ) - # The args -m, -f and --HistoryManager.hist_file are used only in reports menu - # by papermill and that's why they have suppress help. - parser.add_argument( - "-m", - help=argparse.SUPPRESS, - dest="module", - default="", - type=str, - ) parser.add_argument( "-t", "--test", @@ -1235,6 +1216,21 @@ def parse_args_and_run(): " to see testing argument options." ), ) + if is_auth_enabled(): + parser.add_argument( + "--login", + action="store_true", + help="Go to login prompt.", + ) + # The args -m, -f and --HistoryManager.hist_file are used only in reports menu + # by papermill and that's why they have suppress help. + parser.add_argument( + "-m", + help=argparse.SUPPRESS, + dest="module", + default="", + type=str, + ) parser.add_argument( "-f", help=argparse.SUPPRESS, diff --git a/openbb_terminal/terminal_helper.py b/openbb_terminal/terminal_helper.py index 5dab70d3d17..ba09db3238c 100644 --- a/openbb_terminal/terminal_helper.py +++ b/openbb_terminal/terminal_helper.py @@ -24,6 +24,7 @@ from openbb_terminal import ( from openbb_terminal.config_terminal import LOGGING_APP_NAME, LOGGING_COMMIT_HASH from openbb_terminal.helper_funcs import request from openbb_terminal.rich_config import console +from openbb_terminal.session.user import User # pylint: disable=too-many-statements,no-member,too-many-branches,C0302 @@ -229,6 +230,21 @@ def is_packaged_application() -> bool: return LOGGING_APP_NAME == "gst_packaged" +def is_auth_enabled() -> bool: + """Tell whether or not authentication is enabled. + + Returns + ------- + bool + If authentication is enabled + """ + # TODO: This function is a temporary way to block authentication + return ( + str(os.getenv("OPENBB_ENABLE_AUTHENTICATION")).lower() == "true" + or "--login" in sys.argv[1:] + ) + + def is_installer() -> bool: """Tell whether or not it is a packaged version.""" # TODO: Merge this with is_packaged_application @@ -338,15 +354,19 @@ def reset(queue: List[str] = None): logger.info("resetting") plt.close("all") + flag = "" + if not User.is_guest(): + flag = " --login" + if queue and len(queue) > 0: completed_process = subprocess.run( # nosec - f"{sys.executable} terminal.py {'/'.join(queue) if len(queue) > 0 else ''}", + f"{sys.executable} terminal.py {'/'.join(queue) if len(queue) > 0 else ''}{flag}", shell=True, check=False, ) else: completed_process = subprocess.run( # nosec - f"{sys.executable} terminal.py", shell=True, check=False + f"{sys.executable} terminal.py{flag}", shell=True, check=False ) if completed_process.returncode != 0: console.print("Unfortunately, resetting wasn't possible!\n") diff --git a/terminal.py b/terminal.py index a3a5684ec80..048e06c345b 100644 --- a/terminal.py +++ b/terminal.py @@ -1,14 +1,23 @@ import multiprocessing import sys -from openbb_terminal.core.integration_tests import integration_controller -from openbb_terminal.session import session_controller -from openbb_terminal.terminal_helper import is_installer +from openbb_terminal.base_helpers import load_dotenv_and_reload_configs +from openbb_terminal.terminal_helper import is_auth_enabled if __name__ == "__main__": multiprocessing.freeze_support() sent_args = sys.argv[1:] + + load_dotenv_and_reload_configs() + if "-t" in sent_args or "--test" in sent_args: + from openbb_terminal.core.integration_tests import integration_controller + integration_controller.main() else: - session_controller.main(guest_allowed=not is_installer()) + from openbb_terminal.session import session_controller + + if is_auth_enabled(): + session_controller.main() + else: + session_controller.launch_terminal() diff --git a/tests/conftest.py b/tests/conftest.py index 0fc7e537791..c23d495b278 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -323,6 +323,11 @@ def pytest_addoption(parser: Parser): action="store_true", help="To run tests with the marker : @pytest.mark.optimization", ) + parser.addoption( + "--session", + action="store_true", + help="To run tests with the marker : @pytest.mark.session", + ) parser.addoption( "--rewrite-expected", action="store_true", diff --git a/tests/openbb_terminal/account/test_account_controller.py b/tests/openbb_terminal/account/test_account_controller.py index 2d0722c9a85..fd6d4a64561 100644 --- a/tests/openbb_terminal/account/test_account_controller.py +++ b/tests/openbb_terminal/account/test_account_controller.py @@ -250,6 +250,7 @@ def test_call_func_expect_queue(expected_queue, func, queue): @pytest.mark.parametrize( "func", [ + "call_logout", "call_sync", "call_pull", "call_clear", @@ -273,6 +274,20 @@ def test_call_func_no_parser(func, mocker): controller.parse_known_args_and_warn.assert_called_once() +def test_call_logout(mocker): + controller = account_controller.AccountController(queue=None) + path_controller = "openbb_terminal.account.account_controller" + + mock_logout = mocker.patch( + target=f"{path_controller}.logout", + ) + + controller.call_logout([]) + + assert controller.queue == [] + mock_logout.assert_called_once() + + @pytest.mark.vcr @pytest.mark.record_stdout @pytest.mark.parametrize( diff --git a/tests/openbb_terminal/account/txt/test_account_controller/test_print_help.txt b/tests/openbb_terminal/account/txt/test_account_controller/test_print_help.txt index 34afd44238b..01858e13064 100644 --- a/tests/openbb_terminal/account/txt/test_account_controller/test_print_help.txt +++ b/tests/openbb_terminal/account/txt/test_account_controller/test_print_help.txt @@ -9,3 +9,6 @@ Cloud storage of routines: download Download routine delete Delete routine +Authentication: + logout Log out from OpenBB account + diff --git a/tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args0-False-True-defined, test failed].yaml b/tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args0-False-True-defined, test failed].yaml new file mode 100644 index 00000000000..63c003431c1 --- /dev/null +++ b/tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args0-False-True-defined, test failed].yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer a4eaa48d-299c-4305-973f-4398e40eeb49 + Connection: + - keep-alive + Content-Type: + - application/json + User-Agent: + - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:82.1) Gecko/20100101 Firefox/82.1 + method: GET + uri: https://payments.openbb.dev/sdk/token + response: + body: + string: '{"detail":"Could not validate credentials"}' + headers: + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + Date: + - Mon, 13 Feb 2023 10:31:27 GMT + Server: + - nginx/1.22.1 + www-authenticate: + - Bearer + status: + code: 401 + message: Unauthorized +version: 1 diff --git a/tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args1-False-False-defined, test failed].yaml b/tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args1-False-False-defined, test failed].yaml new file mode 100644 index 00000000000..7b6f42217cd --- /dev/null +++ b/tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args1-False-False-defined, test failed].yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer a4eaa48d-299c-4305-973f-4398e40eeb49 + Connection: + - keep-alive + Content-Type: + - application/json + User-Agent: + - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:84.0) Gecko/20100101 Firefox/84.0 + method: GET + uri: https://payments.openbb.dev/sdk/token + response: + body: + string: '{"detail":"Could not validate credentials"}' + headers: + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + Date: + - Mon, 13 Feb 2023 10:31:28 GMT + Server: + - nginx/1.22.1 + www-authenticate: + - Bearer + status: + code: 401 + message: Unauthorized +version: 1 diff --git a/tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args2-True-True-defined, test failed].yaml b/tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args2-True-True-defined, test failed].yaml new file mode 100644 index 00000000000..a3afa991726 --- /dev/null +++ b/tests/openbb_terminal/cassettes/test_keys_model/test_set_openbb_key[args2-True-True-defined, test failed].yaml @@ -0,0 +1,38 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Authorization: + - Bearer a4eaa48d-299c-4305-973f-4398e40eeb49 + Connection: + - keep-alive + Content-Type: + - application/json + User-Agent: + - Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.10; rv:86.1) Gecko/20100101 Firefox/86.1 + method: GET + uri: https://payments.openbb.dev/sdk/token + response: + body: + string: '{"detail":"Could not validate credentials"}' + headers: + Connection: + - keep-alive + Content-Length: + - '43' + Content-Type: + - application/json + Date: + - Mon, 13 Feb 2023 10:31:29 GMT + Server: + - nginx/1.22.1 + www-authenticate: + - Bearer + status: + code: 401 + message: Unauthorized +version: 1 diff --git a/tests/openbb_terminal/session/conftest.py b/tests/openbb_terminal/session/conftest.py new file mode 100644 index 00000000000..b6bb01ca9cf --- /dev/null +++ b/tests/openbb_terminal/session/conftest.py @@ -0,0 +1,7 @@ +import pytest +from _pytest.nodes import Node + + +def pytest_runtest_setup(item: Node): + if not item.config.getoption("--session"): + pytest.skip(msg="Runs only with option : --session") diff --git a/tests/openbb_terminal/session/test_hub_model.py b/tests/openbb_terminal/session/test_hub_model.py index 8549c262317..1aad4b7363a 100644 --- a/tests/openbb_terminal/session/test_hub_model.py +++ b/tests/openbb_terminal/session/test_hub_model.py @@ -61,6 +61,44 @@ def test_create_session_exception(email, password): assert response is None +@pytest.mark.parametrize("token", [("test_token")]) +def test_create_session_from_token_success(token): + with patch("requests.post") as mock_post: + mock_post.return_value.json.return_value = TEST_RESPONSE + response = hub_model.create_session_from_token(token) + assert response.json() == TEST_RESPONSE + + mock_post.assert_called_once_with( + url=hub_model.BASE_URL + "sdk/login", + json={"token": token}, + timeout=hub_model.TIMEOUT, + ) + + +@pytest.mark.parametrize("token", [("test_token")]) +def test_create_session_from_token_connection_error(token): + with patch("requests.post") as mock_post: + mock_post.side_effect = requests.exceptions.ConnectionError + response = hub_model.create_session_from_token(token) + assert response is None + + +@pytest.mark.parametrize("token", [("test_token")]) +def test_create_session_from_token_timeout(token): + with patch("requests.post") as mock_post: + mock_post.side_effect = requests.exceptions.Timeout + response = hub_model.create_session_from_token(token) + assert response is None + + +@pytest.mark.parametrize("token", [("test_token")]) +def test_create_session_from_token_exception(token): + with patch("requests.post") as mock_post: + mock_post.side_effect = Exception + response = hub_model.create_session_from_token(token) + assert response is None + + @pytest.mark.parametrize("auth_header, token", TEST_HEADER_TOKEN) def test_delete_session_success(auth_header, token): with patch("requests.post") as mock_post: @@ -186,6 +224,56 @@ def test_get_session_failed_to_request(): create_session_mock.assert_called_once_with("email", "password") +def test_get_session_from_token(): + mock_response = MagicMock(spec=requests.Response) + mock_response.status_code = 200 + mock_response.json.return_value = {"session": "info"} + + with patch( + "openbb_terminal.session.hub_model.create_session_from_token", + return_value=mock_response, + ) as create_session_mock: + result = hub_model.get_session_from_token("token") + assert result == {"session": "info"} + create_session_mock.assert_called_once_with("token") + + +def test_get_session_from_token_401(): + mock_response = MagicMock(spec=requests.Response) + mock_response.status_code = 401 + + with patch( + "openbb_terminal.session.hub_model.create_session_from_token", + return_value=mock_response, + ) as create_session_mock: + result = hub_model.get_session_from_token("token") + assert result == {} + create_session_mock.assert_called_once_with("token") + + +def test_get_session_from_token_403(): + mock_response = MagicMock(spec=requests.Response) + mock_response.status_code = 403 + + with patch( + "openbb_terminal.session.hub_model.create_session_from_token", + return_value=mock_response, + ) as create_session_mock: + result = hub_model.get_session_from_token("token") + assert result == {} + create_session_mock.assert_called_once_with("token") + + +def test_get_session_from_token_failed_to_request(): + with patch( + "openbb_terminal.session.hub_model.create_session_from_token", + return_value=None, + ) as create_session_mock: + result = hub_model.get_session_from_token("token") + assert result == {} + create_session_mock.assert_called_once_with("token") + + @pytest.mark.parametrize("token_type, access_token", [("TokenType", "AccessToken")]) def test_fetch_user_configs_success(token_type, access_token): mock_response = MagicMock(spec=requests.Response) diff --git a/tests/openbb_terminal/session/test_sdk_session.py b/tests/openbb_terminal/session/test_sdk_session.py index 9e320a743d2..7d200272ab0 100644 --- a/tests/openbb_terminal/session/test_sdk_session.py +++ b/tests/openbb_terminal/session/test_sdk_session.py @@ -18,51 +18,83 @@ TEST_SESSION = { @pytest.mark.parametrize( - "email, password, save", + "email, password, token, save", [ ( "test_email", "test_pass", + "test_token", True, ), ], ) -def test_get_session_exception(email: str, password: str, save: bool): +def test_get_session_exception(email: str, password: str, token: str, save: bool): path = "openbb_terminal.session.sdk_session." with patch(path + "session_model.create_session") as mock_create_session: - mock_create_session.return_value = {} + with patch( + path + "session_model.create_session_from_token" + ) as mock_create_session_from_token: + mock_create_session.return_value = {} + mock_create_session_from_token.return_value = {} - with pytest.raises(Exception): - sdk_session.get_session(email=email, password=password, save=save) + with pytest.raises(Exception): + sdk_session.get_session( + email=email, password=password, token=token, save=save + ) - mock_create_session.assert_called_once_with(email, password, save) + mock_create_session.assert_called_once_with(email, password, save) + mock_create_session_from_token.assert_called_once_with(token, save) @pytest.mark.parametrize( - "email, password, save", + "email, password, token, save", [ ( "test_email", "test_pass", + "test_token", True, ), ], ) -def test_get_session(email: str, password: str, save: bool): +def test_get_session(email: str, password: str, token: str, save: bool): path = "openbb_terminal.session.sdk_session." with patch(path + "session_model.create_session") as mock_create_session: mock_create_session.return_value = TEST_SESSION - sdk_session.get_session(email=email, password=password, save=save) + sdk_session.get_session(email=email, password=password, token=token, save=save) mock_create_session.assert_called_once_with(email, password, save) @pytest.mark.parametrize( - "email, password, keep_session, has_session, status", + "email, password, token, save", [ ( "test_email", "test_pass", + "test_token", + True, + ), + ], +) +def test_get_session_from_token(email: str, password: str, token: str, save: bool): + path = "openbb_terminal.session.sdk_session." + with patch( + path + "session_model.create_session_from_token" + ) as mock_create_session_from_token: + mock_create_session_from_token.return_value = TEST_SESSION + + sdk_session.get_session(email=email, password=password, token=token, save=save) + mock_create_session_from_token.assert_called_once_with(token, save) + + +@pytest.mark.parametrize( + "email, password, token, keep_session, has_session, status", + [ + ( + "test_email", + "test_pass", + "test_token", True, False, LoginStatus.SUCCESS, @@ -70,6 +102,7 @@ def test_get_session(email: str, password: str, save: bool): ( "test_email", "test_pass", + "test_token", True, True, LoginStatus.SUCCESS, @@ -77,6 +110,7 @@ def test_get_session(email: str, password: str, save: bool): ( "test_email", "test_pass", + "test_token", True, False, LoginStatus.FAILED, @@ -84,6 +118,7 @@ def test_get_session(email: str, password: str, save: bool): ( "test_email", "test_pass", + "test_token", True, False, LoginStatus.NO_RESPONSE, @@ -91,40 +126,48 @@ def test_get_session(email: str, password: str, save: bool): ], ) def test_login( + mocker, email: str, password: str, + token: str, keep_session: bool, has_session: bool, status: LoginStatus, ): path = "openbb_terminal.session.sdk_session." - with ( - patch(path + "session_model.login") as mock_login, - patch(path + "Local.get_session") as mock_local_get_session, - patch(path + "get_session") as mock_hub_get_session, - ): - if has_session: - mock_local_get_session.return_value = TEST_SESSION - else: - mock_local_get_session.return_value = None + mock_login = mocker.patch(path + "session_model.login") + mock_local_get_session = mocker.patch(path + "Local.get_session") + mock_hub_get_session = mocker.patch(path + "get_session") - mock_hub_get_session.return_value = TEST_SESSION - mock_login.return_value = status + if has_session: + mock_local_get_session.return_value = TEST_SESSION + else: + mock_local_get_session.return_value = None - if status in [LoginStatus.FAILED, LoginStatus.NO_RESPONSE]: - with pytest.raises(Exception): - sdk_session.login( - email=email, password=password, keep_session=keep_session - ) - else: - sdk_session.login(email=email, password=password, keep_session=keep_session) + mock_hub_get_session.return_value = TEST_SESSION + mock_login.return_value = status - mock_local_get_session.assert_called_once() - if has_session: - mock_hub_get_session.assert_not_called() - else: - mock_hub_get_session.assert_called_once_with(email, password, keep_session) - mock_login.assert_called_once_with(TEST_SESSION) + if status in [LoginStatus.FAILED, LoginStatus.NO_RESPONSE]: + with pytest.raises(Exception): + sdk_session.login( + email=email, + password=password, + token=token, + keep_session=keep_session, + ) + else: + sdk_session.login( + email=email, password=password, token=token, keep_session=keep_session + ) + + mock_local_get_session.assert_called_once() + if has_session: + mock_hub_get_session.assert_not_called() + else: + mock_hub_get_session.assert_called_once_with( + email, password, token, keep_session + ) + mock_login.assert_called_once_with(TEST_SESSION) def test_logout(): @@ -137,3 +180,21 @@ def test_logout(): token=User.get_token(), guest=User.is_guest(), ) + + +@pytest.mark.record_stdout +def test_whoami_guest(): + sdk_session.whoami() + + +@pytest.mark.record_stdout +def test_whoami(): + User.load_user_info( + { + "token_type": "MOCK_TOKEN_TYPE", + "access_token": "MOCK_ACCESS_TOKEN", + "uuid": "MOCK_UUID", + }, + email="MOCK_EMAIL", + ) + sdk_session.whoami() diff --git a/tests/openbb_terminal/session/test_session_controller.py b/tests/openbb_terminal/session/test_session_controller.py index 49ea20d2e34..66a65762ef8 100644 --- a/tests/openbb_terminal/session/test_session_controller.py +++ b/tests/openbb_terminal/session/test_session_controller.py @@ -47,18 +47,6 @@ def test_prompt(): assert create_session_mock.call_count == 1 -def test_prompt_guest_allowed(): - with patch( - "openbb_terminal.session.session_controller.get_user_input", - return_value=(None, None, False), - ) as get_user_input_mock, patch( - "openbb_terminal.session.session_controller.launch_terminal", return_value=True - ) as launch_terminal_mock: - session_controller.prompt(guest_allowed=True) - assert get_user_input_mock.call_count == 1 - assert launch_terminal_mock.call_count == 1 - - def test_launch_terminal(): with patch( "openbb_terminal.session.session_controller.terminal_controller.parse_args_and_run", diff --git a/tests/openbb_terminal/session/test_session_model.py b/tests/openbb_terminal/session/test_session_model.py index 51b005f2b64..17690dd5e67 100644 --- a/tests/openbb_terminal/session/test_session_model.py +++ b/tests/openbb_terminal/session/test_session_model.py @@ -2,8 +2,6 @@ # IMPORTATION THIRDPARTY import json -import os -from unittest.mock import patch import pytest from requests import Response @@ -47,14 +45,13 @@ CONFIGS = { ), ], ) -def test_create_session(email, password, save): +def test_create_session(mocker, email, password, save): path = "openbb_terminal.session.session_model." - with ( - patch(path + "Hub.get_session") as mock_get_session, - patch(path + "Local.save_session") as mock_save_session, - ): - mock_get_session.return_value = TEST_SESSION - session = session_model.create_session(email, password, save) + mock_get_session = mocker.patch(path + "Hub.get_session") + mock_save_session = mocker.patch(path + "Local.save_session") + + mock_get_session.return_value = TEST_SESSION + session = session_model.create_session(email, password, save) assert session == TEST_SESSION @@ -63,63 +60,76 @@ def test_create_session(email, password, save): mock_save_session.assert_called_once_with(session) -def test_login_no_response(): +def test_login_no_response(mocker): path = "openbb_terminal.session.session_model." - with ( - patch(path + "Hub.fetch_user_configs") as mock_fetch_user_configs, - patch(path + "Local.apply_configs") as mock_apply_configs, - patch(path + "User.load_user_info") as mock_load_user_info, - patch(path + "User.update_flair") as mock_update_flair, - ): - mock_fetch_user_configs.return_value = None + mock_clear_openbb_env_vars = mocker.patch(path + "clear_openbb_env_vars") + mock_reload_openbb_config_modules = mocker.patch( + path + "reload_openbb_config_modules" + ) + mock_fetch_user_configs = mocker.patch(path + "Hub.fetch_user_configs") + mock_apply_configs = mocker.patch(path + "Local.apply_configs") + mock_load_user_info = mocker.patch(path + "User.load_user_info") + mock_update_flair = mocker.patch(path + "User.update_flair") - assert ( - session_model.login(TEST_SESSION) == session_model.LoginStatus.NO_RESPONSE - ) + mock_fetch_user_configs.return_value = None + assert session_model.login(TEST_SESSION) == session_model.LoginStatus.NO_RESPONSE + + mock_clear_openbb_env_vars.assert_called_once() + mock_reload_openbb_config_modules.assert_called_once() mock_fetch_user_configs.assert_called_once_with(TEST_SESSION) mock_apply_configs.assert_not_called() mock_load_user_info.assert_not_called() mock_update_flair.assert_not_called() -def test_login_fail_response(): +def test_login_fail_response(mocker): path = "openbb_terminal.session.session_model." - with ( - patch(path + "Hub.fetch_user_configs") as mock_fetch_user_configs, - patch(path + "Local.apply_configs") as mock_apply_configs, - patch(path + "User.load_user_info") as mock_load_user_info, - patch(path + "User.update_flair") as mock_update_flair, - ): - response = Response() - response.status_code = 400 - mock_fetch_user_configs.return_value = response + mock_clear_openbb_env_vars = mocker.patch(path + "clear_openbb_env_vars") + mock_reload_openbb_config_modules = mocker.patch( + path + "reload_openbb_config_modules" + ) + mock_fetch_user_configs = mocker.patch(path + "Hub.fetch_user_configs") + mock_apply_configs = mocker.patch(path + "Local.apply_configs") + mock_load_user_info = mocker.patch(path + "User.load_user_info") + mock_update_flair = mocker.patch(path + "User.update_flair") - assert session_model.login(TEST_SESSION) == session_model.LoginStatus.FAILED + response = Response() + response.status_code = 400 + mock_fetch_user_configs.return_value = response + assert session_model.login(TEST_SESSION) == session_model.LoginStatus.FAILED + + mock_clear_openbb_env_vars.assert_called_once() + mock_reload_openbb_config_modules.assert_called_once() mock_fetch_user_configs.assert_called_once_with(TEST_SESSION) mock_apply_configs.assert_not_called() mock_load_user_info.assert_not_called() mock_update_flair.assert_not_called() -def test_login_success_response(): +def test_login_success_response(mocker): path = "openbb_terminal.session.session_model." - with ( - patch(path + "Hub.fetch_user_configs") as mock_fetch_user_configs, - patch(path + "Local.apply_configs") as mock_apply_configs, - patch(path + "User.load_user_info") as mock_load_user_info, - patch(path + "User.update_flair") as mock_update_flair, - ): - response = Response() - response.status_code = 200 - response._content = json.dumps( # pylint: disable=protected-access - CONFIGS - ).encode("utf-8") - mock_fetch_user_configs.return_value = response + mock_clear_openbb_env_vars = mocker.patch(path + "clear_openbb_env_vars") + mock_reload_openbb_config_modules = mocker.patch( + path + "reload_openbb_config_modules" + ) + mock_fetch_user_configs = mocker.patch(path + "Hub.fetch_user_configs") + mock_apply_configs = mocker.patch(path + "Local.apply_configs") + mock_load_user_info = mocker.patch(path + "User.load_user_info") + mock_update_flair = mocker.patch(path + "User.update_flair") - assert session_model.login(TEST_SESSION) == session_model.LoginStatus.SUCCESS + response = Response() + response.status_code = 200 + response._content = json.dumps(CONFIGS).encode( # pylint: disable=protected-access + "utf-8" + ) + mock_fetch_user_configs.return_value = response + assert session_model.login(TEST_SESSION) == session_model.LoginStatus.SUCCESS + + mock_clear_openbb_env_vars.assert_called_once() + mock_reload_openbb_config_modules.assert_called_once() mock_fetch_user_configs.assert_called_once_with(TEST_SESSION) mock_apply_configs.assert_called_once() mock_load_user_info.assert_called_once() @@ -133,43 +143,27 @@ def test_login_success_response(): True, ], ) -def test_logout_user(guest): +def test_logout_user(mocker, guest): path = "openbb_terminal.session.session_model." - with ( - patch(path + "Hub.delete_session") as mock_delete_session, - patch(path + "Local.remove_session_file") as mock_remove_session_file, - patch(path + "Local.remove_cli_history_file") as mock_remove_cli_history_file, - patch(path + "reload_openbb_modules") as mock_reload_openbb_modules, - patch(path + "clear_openbb_env_vars") as mock_clear_openbb_env_vars, - patch(path + "User.clear") as mock_clear_user, - patch(path + "plt.close") as mock_plt_close, - ): - auth_header = "Bearer test_token" - token = "test_token" - session_model.logout(auth_header, token, guest) + mock_delete_session = mocker.patch(path + "Hub.delete_session") + mock_remove_session_file = mocker.patch(path + "Local.remove_session_file") + mock_remove_cli_history_file = mocker.patch(path + "Local.remove_cli_history_file") + mock_reload_openbb_config_modules = mocker.patch( + path + "reload_openbb_config_modules" + ) + mock_clear_openbb_env_vars = mocker.patch(path + "clear_openbb_env_vars") + mock_clear_user = mocker.patch(path + "User.clear") + mock_plt_close = mocker.patch(path + "plt.close") + + auth_header = "Bearer test_token" + token = "test_token" + session_model.logout(auth_header, token, guest) if not guest: mock_delete_session.assert_called_once_with(auth_header, token) - mock_clear_user.assert_called_once() + mock_clear_user.assert_called_once() + mock_remove_session_file.assert_called_once() mock_clear_openbb_env_vars.assert_called_once() - mock_reload_openbb_modules.assert_called_once() - mock_remove_session_file.assert_called_once() + mock_reload_openbb_config_modules.assert_called_once() mock_remove_cli_history_file.assert_called_once() mock_plt_close.assert_called_once() - - -def test_clear_openbb_env_vars(): - mock_env = {"OPENBB_TEST": "test", "OPENBB_TEST2": "test2", "TEST": "test"} - with patch.dict("openbb_terminal.session.session_model.os.environ", mock_env): - session_model.clear_openbb_env_vars() - - assert "OPENBB_TEST" not in os.environ - assert "OPENBB_TEST2" not in os.environ - assert "TEST" in os.environ - - -def test_reload_openbb_modules(): - with patch("openbb_terminal.session.session_model.importlib.reload") as mock_reload: - session_model.reload_openbb_modules() - - mock_reload.assert_called() diff --git a/tests/openbb_terminal/session/txt/test_sdk_session/test_whoami.txt b/tests/openbb_terminal/session/txt/test_sdk_session/test_whoami.txt new file mode 100644 index 00000000000..36fb5e544f3 --- /dev/null +++ b/tests/openbb_terminal/session/txt/test_sdk_session/test_whoami.txt @@ -0,0 +1,3 @@ +[info]email:[/info] MOCK_EMAIL +[info]uuid:[/info] MOCK_UUID +[info]sync:[/info] ON diff --git a/tests/openbb_terminal/session/txt/test_sdk_session/test_whoami_guest.txt b/tests/openbb_terminal/session/txt/test_sdk_session/test_whoami_guest.txt new file mode 100644 index 00000000000..49e66764b03 --- /dev/null +++ b/tests/openbb_terminal/session/txt/test_sdk_session/test_whoami_guest.txt @@ -0,0 +1,3 @@ +[info]email:[/info] test@email.com +[info]uuid:[/info] test_uuid +[info]sync:[/info] ON diff --git a/tests/openbb_terminal/session/txt/test_session_controller/test_get_user_input.txt b/tests/openbb_terminal/session/txt/test_session_controller/test_get_user_input.txt index 0c17b3a6f94..5b74d9dff68 100644 --- a/tests/openbb_terminal/session/txt/test_session_controller/test_get_user_input.txt +++ b/tests/openbb_terminal/session/txt/test_session_controller/test_get_user_input.txt @@ -1,2 +1,2 @@ [info] -Please enter your credentials or press enter for guest mode:[/info] +Please enter your credentials:[/info] diff --git a/tests/openbb_terminal/session/txt/test_session_controller/test_get_user_input_with_save.txt b/tests/openbb_terminal/session/txt/test_session_controller/test_get_user_input_with_save.txt index 0c17b3a6f94..5b74d9dff68 100644 --- a/tests/openbb_terminal/session/txt/test_session_controller/test_get_user_input_with_save.txt +++ b/tests/openbb_terminal/session/txt/test_session_controller/test_get_user_input_with_save.txt @@ -1,2 +1,2 @@ [info] -Please enter your credentials or press enter for guest mode:[/info] +Please enter your credentials:[/info] diff --git a/tests/openbb_terminal/session/txt/test_user/test_whoami[True-True].txt b/tests/openbb_terminal/session/txt/test_user/test_whoami[True-True].txt index 805bc8bd83b..649eeb33cbe 100644 --- a/tests/openbb_terminal/session/txt/test_user/test_whoami[True-True].txt +++ b/tests/openbb_terminal/session/txt/test_user/test_whoami[True-True].txt @@ -1,2 +1,3 @@ [info]You are currently logged as a guest. -Create an account here https://my.openbb.dev/register.[/info] +[info]Register: [/info][cmds]https://my.openbb.dev/register +[/cmds] diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_business_insider_view/test_price_target_from_analysts_plt.yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_business_insider_view/test_price_target_from_analysts_plt.yaml index 08425de4cd0..53a7d49e16e 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_business_insider_view/test_price_target_from_analysts_plt.yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_business_insider_view/test_price_target_from_analysts_plt.yaml @@ -12,10 +12,10 @@ interactions: uri: https://query2.finance.yahoo.com/v8/finance/chart/TSLA?range=1d&interval=1d response: body: - string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"TSLA","exchangeName":"NMS","instrumentType":"EQUITY","firstTradeDate":1277818200,"regularMarketTime":1676062804,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":196.89,"chartPreviousClose":207.32,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","end":1676298600,"start":1676278800,"gmtoffset":-18000},"regular":{"timezone":"EST","end":1676322000,"start":1676298600,"gmtoffset":-18000},"post":{"timezone":"EST","end":1676336400,"start":1676322000,"gmtoffset":-18000}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1676039400],"indicators":{"quote":[{"volume":[204193800],"low":[192.88999938964844],"high":[206.1999969482422],"open":[202.22999572753906],"close":[196.88999938964844]}],"adjclose":[{"adjclose":[196.88999938964844]}]}}],"error":null}}' + string: '{"chart":{"result":[{"meta":{"currency":"USD","symbol":"TSLA","exchangeName":"NMS","instrumentType":"EQUITY","firstTradeDate":1277818200,"regularMarketTime":1676322005,"gmtoffset":-18000,"timezone":"EST","exchangeTimezoneName":"America/New_York","regularMarketPrice":194.64,"chartPreviousClose":196.89,"priceHint":2,"currentTradingPeriod":{"pre":{"timezone":"EST","start":1676365200,"end":1676385000,"gmtoffset":-18000},"regular":{"timezone":"EST","start":1676385000,"end":1676408400,"gmtoffset":-18000},"post":{"timezone":"EST","start":1676408400,"end":1676422800,"gmtoffset":-18000}},"dataGranularity":"1d","range":"1d","validRanges":["1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max"]},"timestamp":[1676298600],"indicators":{"quote":[{"high":[196.3000030517578],"close":[194.63999938964844],"open":[194.4199981689453],"low":[187.61000061035156],"volume":[172139900]}],"adjclose":[{"adjclose":[194.63999938964844]}]}}],"error":null}}' headers: Age: - - '1' + - '0' Connection: - keep-alive Expect-CT: @@ -33,25 +33,25 @@ interactions: cache-control: - public, max-age=10, stale-while-revalidate=20 content-length: - - '947' + - '946' content-type: - application/json;charset=utf-8 date: - - Mon, 13 Feb 2023 10:35:18 GMT + - Tue, 14 Feb 2023 08:41:10 GMT server: - ATS vary: - Origin,Accept-Encoding x-envoy-decorator-operation: - - finance-chart-api--mtls-baseline-production-ir2.finance-k8s.svc.yahoo.local:4080/* + - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* x-envoy-upstream-service-time: - '2' x-request-id: - - 488c423c-86f3-44c1-9f36-b13e4073de3f + - 2f352f52-2417-4d27-b7ba-0d16aeb68722 x-yahoo-request-id: - - 9k87m7dhuk4j6 + - 6uber8lhumi96 y-rid: - - 9k87m7dhuk4j6 + - 6uber8lhumi96 status: code: 200 message: OK @@ -65,162 +65,162 @@ interactions: Connection: - keep-alive method: GET - uri: https://query2.finance.yahoo.com/v8/finance/chart/TSLA?period1=1638680400&period2=1676264400&interval=1d&includePrePost=False&events=div%2Csplits%2CcapitalGains + uri: https://query2.finance.yahoo.com/v8/finance/chart/TSLA?period1=1638680400&period2=1676350800&interval=1d&includePrePost=False&events=div%2Csplits%2CcapitalGains response: body: string: !!binary | - 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 headers: Age: - '0' @@ -247,7 +247,7 @@ interactions: content-type: - application/json;charset=utf-8 date: - - Mon, 13 Feb 2023 10:35:19 GMT + - Tue, 14 Feb 2023 08:41:10 GMT server: - ATS vary: @@ -255,13 +255,13 @@ interactions: x-envoy-decorator-operation: - finance-chart-api--mtls-production-ir2.finance-k8s.svc.yahoo.local:4080/* x-envoy-upstream-service-time: - - '7' + - '6' x-request-id: - - b8ba28e6-a7d8-4068-a743-b223d937accc + - 4b4cc706-99a6-4c7b-aba1-51329f6bb221 x-yahoo-request-id: - - a0bnubthuk4j7 + - 2g0k6ethumi96 y-rid: - - a0bnubthuk4j7 + - 2g0k6ethumi96 status: code: 200 message: OK @@ -279,1257 +279,898 @@ interactions: response: body: string: !!binary | - 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 + NEiCHhv/9vEdOb8x8v7CfSsW8+gH7SAi/w5RBAA= headers: Accept-Ranges: - bytes Age: - - '28' + - '16' Cache-Control: - public, max-age=120 Connection: @@ -1537,26 +1178,26 @@ interactions: Content-Encoding: - gzip Content-Length: - - '71016' + - '50531' Content-Type: - text/html; charset=utf-8 Date: - - Mon, 13 Feb 2023 10:35:19 GMT + - Tue, 14 Feb 2023 08:41:10 GMT ETag: - - W/"546a8-HrESlSxrI1M3pQMASbB3YConDxw" + - W/"4510e-z16yDRyscvbVCAUyOGz0+YkuQXA" Last-Modified: - - Mon, 13 Feb 2023 10:34:51 GMT + - Tue, 14 Feb 2023 08:40:55 GMT Vary: - Accept-Encoding, Authorization, Fastly-SSL, X-Device, X-Continent-Code, X-Piano-Disabled, X-User-Logged-In, X-User-Has-Access Via: - 1.1 varnish, 1.1 varnish X-Cache: - - HIT, HIT + - HIT, MISS X-Cache-Hits: - - 1, 1 + - 1, 0 X-Country-Code: - - PT + - FR X-Forwarded-For: - MI X-Frame-Options: @@ -1564,9 +1205,9 @@ interactions: X-Powered-By: - Fenrir X-Served-By: - - cache-iad-kcgs7200148-IAD, cache-lis1490026-LIS + - cache-iad-kcgs7200148-IAD, cache-cdg20742-CDG X-Timer: - - S1676284519.183005,VS0,VE1 + - S1676364071.788763,VS0,VE80 status: code: 200 message: OK diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_yahoo_finance_view/test_call_func[display_info].yaml b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_yahoo_finance_view/test_call_func[display_info].yaml index d42f72c086d..d63886b706b 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_yahoo_finance_view/test_call_func[display_info].yaml +++ b/tests/openbb_terminal/stocks/fundamental_analysis/cassettes/test_yahoo_finance_view/test_call_func[display_info].yaml @@ -208,7 +208,7 @@ interactions: HSr/n476/3TU/6l01E+UkXp8evrwdPeL95/fvv3pp/8BRKYJwViiAAA= headers: Age: - - '1' + - '0' Connection: - keep-alive Expect-CT: diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_business_insider_view/test_price_target_from_analysts_raw.txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_business_insider_view/test_price_target_from_analysts_raw.txt index f3f0983c4ae..b90a0e28016 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_business_insider_view/test_price_target_from_analysts_raw.txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_business_insider_view/test_price_target_from_analysts_raw.txt @@ -1,4 +1,6 @@ -Loading Daily data for TSLA with starting period 2020-02-10. + +1 Failed download: +- TSLA: No data found for this date range, symbol may be delisted Company Rating Price Target Date 2023-02-06 Wedbush Morgan Securities Inc. BUY 225.000000 diff --git a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_yahoo_finance_view/test_call_func[display_info].txt b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_yahoo_finance_view/test_call_func[display_info].txt index cb7de7c8a01..5d169bc5a61 100644 --- a/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_yahoo_finance_view/test_call_func[display_info].txt +++ b/tests/openbb_terminal/stocks/fundamental_analysis/txt/test_yahoo_finance_view/test_call_func[display_info].txt @@ -16,6 +16,6 @@ Ten day average volume 3.910 M Three month average volume 4.860 M Timezone America/New_York Two hundred day average 97.606 -Year change -0.063 +Year change -0.067 Year high 112.480 Year low 82.850 diff --git a/tests/openbb_terminal/test_base_helpers.py b/tests/openbb_terminal/test_base_helpers.py new file mode 100644 index 00000000000..7f9fbaa2ce5 --- /dev/null +++ b/tests/openbb_terminal/test_base_helpers.py @@ -0,0 +1,32 @@ +# IMPORTATION STANDARD +import os + +# IMPORTATION THIRDPARTY +from unittest.mock import patch + +import pytest + +# IMPORTATION INTERNAL +from openbb_terminal import base_helpers + + +@pytest.mark.parametrize( + "key, value", + [ + ("OPENBB_NOT_TO_REMOVE", "value"), + ], +) +def test_clear_openbb_env_vars(key, value): + mock_env = { + "OPENBB_TEST": "test", + "OPENBB_TEST2": "test2", + "TEST": "test", + key: value, + } + with patch.dict("openbb_terminal.base_helpers.os.environ", mock_env): + base_helpers.clear_openbb_env_vars(exceptions=[key]) + + assert "OPENBB_TEST" not in os.environ + assert "OPENBB_TEST2" not in os.environ + assert "TEST" in os.environ + assert key in os.environ diff --git a/tests/openbb_terminal/test_keys_controller.py b/tests/openbb_terminal/test_keys_controller.py index 7457eb27fe2..77ece779074 100644 --- a/tests/openbb_terminal/test_keys_controller.py +++ b/tests/openbb_terminal/test_keys_controller.py @@ -234,3 +234,20 @@ def test_call_tokenterminal(other): @pytest.mark.parametrize("other", [[], ["-k", "1234", "-t", "456"]]) def test_call_shroom(other): controller.call_shroom(other) + + +@pytest.mark.vcr +@pytest.mark.parametrize("other", [[], ["-k", "1234", "-t", "456"]]) +def test_call_openbb(mocker, other): + # MOCK GET + attrs = { + "status_code": 200, + "json.return_value": {"token": "MOCK_TOKEN"}, + } + mock_response = mocker.Mock(**attrs) + mocker.patch( + target="openbb_terminal.keys_model.request", + new=mocker.Mock(return_value=mock_response), + ) + + controller.call_openbb(other) diff --git a/tests/openbb_terminal/test_keys_model.py b/tests/openbb_terminal/test_keys_model.py index e252074a738..7050812605c 100644 --- a/tests/openbb_terminal/test_keys_model.py +++ b/tests/openbb_terminal/test_keys_model.py @@ -1563,3 +1563,53 @@ def test_set_shroom_key( ) assert_keys_and_status(args, persist, expected, env_var_name_list, status) + + +@patch.dict(os.environ, {}) +@pytest.mark.vcr +@pytest.mark.record_stdout +@pytest.mark.parametrize( + "args, persist, show_output, expected", + [ + ( + ["test_key"], + False, + True, + keys_model.KeyStatus.DEFINED_TEST_FAILED, + ), + ( + ["test_key"], + False, + False, + keys_model.KeyStatus.DEFINED_TEST_FAILED, + ), + ( + ["test_key"], + True, + True, + keys_model.KeyStatus.DEFINED_TEST_FAILED, + ), + ( + ["REPLACE_ME"], + False, + True, + keys_model.KeyStatus.NOT_DEFINED, + ), + ], +) +def test_set_openbb_key( + args: List[str], persist: bool, show_output: bool, expected: str +): + env_var_name_list = [ + "OPENBB_OPENBB_PERSONAL_ACCESS_TOKEN", + ] + + set_naive_environment(env_var_name_list) + + status = keys_model.set_openbb_personal_access_token( + key=args[0], + persist=persist, + show_output=show_output, + ) + + assert_keys_and_status(args, persist, expected, env_var_name_list, status) diff --git a/tests/openbb_terminal/test_sdk.py b/tests/openbb_terminal/test_sdk.py index 51e9209e1bd..74206a4c804 100644 --- a/tests/openbb_terminal/test_sdk.py +++ b/tests/openbb_terminal/test_sdk.py @@ -1,8 +1,12 @@ -from openbb_terminal.sdk import openbb +# pylint: disable=import-outside-toplevel -def test_openbb(): +def test_openbb(mocker): """Test the openbb function""" + mock = mocker.patch("openbb_terminal.base_helpers.load_dotenv_and_reload_configs") + from openbb_terminal.sdk import openbb + + mock.assert_called_once() assert "stocks" in dir(openbb) diff --git a/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args0-False-True-defined, test failed].txt b/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args0-False-True-defined, test failed].txt new file mode 100644 index 00000000000..d2044fb0153 --- /dev/null +++ b/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args0-False-True-defined, test failed].txt @@ -0,0 +1 @@ +[red]defined, test failed[/red] diff --git a/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args1-False-False-defined, test failed].txt b/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args1-False-False-defined, test failed].txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args2-True-True-defined, test failed].txt b/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args2-True-True-defined, test failed].txt new file mode 100644 index 00000000000..d2044fb0153 --- /dev/null +++ b/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args2-True-True-defined, test failed].txt @@ -0,0 +1 @@ +[red]defined, test failed[/red] diff --git a/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args3-False-True-not defined].txt b/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args3-False-True-not defined].txt new file mode 100644 index 00000000000..1241e24c3f9 --- /dev/null +++ b/tests/openbb_terminal/txt/test_keys_model/test_set_openbb_key[args3-False-True-not defined].txt @@ -0,0 +1 @@ +[grey30]not defined[/grey30]