Source code for khoros.utils.tests.test_settings

# -*- coding: utf-8 -*-
"""
:Module:         khoros.utils.tests.test_settings
:Synopsis:       This module is used by pytest to verify the :py:mod:`khoros.objects.settings` functionality.
:Created By:     Jeff Shurtliff
:Last Modified:  Jeff Shurtliff
:Modified Date:  09 Jun 2022
"""

import os
import sys

import pytest

from . import resources
from ...errors import exceptions

# Define a global variable to define when the package path has been set
package_path_defined = False


[docs] def set_package_path(): """This function adds the high-level khoros directory to the sys.path list. .. versionadded:: 4.1.0 .. versionchanged:: 5.0.0 Removed the redundant return statement. """ global package_path_defined if not package_path_defined: sys.path.insert(0, os.path.abspath('../..')) package_path_defined = True
[docs] def test_node_setting_retrieval(): """This function tests the retrieval of API v1 and v2 node settings. .. versionadded:: 4.1.0 """ if not resources.local_test_config_exists() or not resources.local_helper_exists(): pytest.skip("skipping local-only tests") # Instantiate the Khoros object set_package_path() khoros_object = resources.instantiate_with_local_helper() # Define the elements to query test_config = resources.get_testing_config() v1_setting = test_config.get('test_data').get('settings').get('node_v1_setting') v2_setting = test_config.get('test_data').get('settings').get('node_v2_setting') node_id = test_config.get('test_data').get('settings').get('node_id') node_type = test_config.get('test_data').get('settings').get('node_type') # Retrieve and verify the v1 setting setting = khoros_object.settings.get_node_setting(v1_setting, node_id, node_type, convert_json=False) assert isinstance(setting, str) or setting is None # nosec # Retrieve and verify the v2 setting setting = khoros_object.settings.get_node_setting(v2_setting, node_id, node_type, convert_json=True) assert isinstance(setting, dict) or setting is None # nosec
[docs] def test_invalid_node_type_exception(): """This function tests to confirm that invalid nodes will raise the :py:exc:`khoros.errors.exceptions.InvalidNodeTypeError` exception. .. versionadded:: 4.1.0 """ # Instantiate the Khoros object set_package_path() khoros_object = resources.initialize_khoros_object() # Test most common invalid node types for invalid_type in ['boards', 'categories', 'group hubs', 'grouphubs']: with pytest.raises(exceptions.InvalidNodeTypeError): khoros_object.settings.get_node_setting('custom.pretend_setting', 'fake-node', invalid_type) # Test that converting a node to plural also results in the exception node_type = resources.get_structure_collection('board') with pytest.raises(exceptions.InvalidNodeTypeError): khoros_object.settings.get_node_setting('custom.pretend_setting', 'fake-node', node_type)
[docs] def test_sso_status_retrieval(): """This function tests to confirm that the :py:meth:`khoros.core.Khoros.Community.sso_enabled` method is able to return a Boolean value. .. versionadded:: 5.0.0 """ if not resources.local_test_config_exists() or not resources.local_helper_exists(): pytest.skip("skipping local-only tests") # Instantiate the Khoros object set_package_path() khoros_object = resources.instantiate_with_local_helper() # Test the method sso_enabled = khoros_object.communities.sso_enabled() assert sso_enabled is not None