chore: remove bok choy settings
This commit is contained in:
@@ -1,154 +0,0 @@
|
||||
"""
|
||||
Settings for Bok Choy tests that are used when running LMS.
|
||||
|
||||
Bok Choy uses two different settings files:
|
||||
1. test_static_optimized is used when invoking collectstatic
|
||||
2. bok_choy is used when running the tests
|
||||
|
||||
Note: it isn't possible to have a single settings file, because Django doesn't
|
||||
support both generating static assets to a directory and also serving static
|
||||
from the same directory.
|
||||
"""
|
||||
|
||||
|
||||
# Silence noisy logs
|
||||
import logging
|
||||
import os
|
||||
from tempfile import mkdtemp
|
||||
|
||||
from django.utils.translation import gettext_lazy
|
||||
from path import Path as path
|
||||
|
||||
from openedx.core.release import RELEASE_LINE
|
||||
from xmodule.modulestore.modulestore_settings import update_module_store_settings # lint-amnesty, pylint: disable=wrong-import-order
|
||||
|
||||
CONFIG_ROOT = path(__file__).abspath().dirname()
|
||||
TEST_ROOT = CONFIG_ROOT.dirname().dirname() / "test_root"
|
||||
|
||||
########################## Prod-like settings ###################################
|
||||
# These should be as close as possible to the settings we use in production.
|
||||
# As in prod, we read in environment and auth variables from JSON files.
|
||||
# Unlike in prod, we use the JSON files stored in this repo.
|
||||
# This is a convenience for ensuring (a) that we can consistently find the files
|
||||
# and (b) that the files are the same in Jenkins as in local dev.
|
||||
os.environ['SERVICE_VARIANT'] = 'bok_choy_docker' if 'BOK_CHOY_HOSTNAME' in os.environ else 'bok_choy'
|
||||
os.environ['LMS_CFG'] = str.format("{config_root}/{service_variant}.yml",
|
||||
config_root=CONFIG_ROOT, service_variant=os.environ['SERVICE_VARIANT'])
|
||||
os.environ['REVISION_CFG'] = f"{CONFIG_ROOT}/revisions.yml"
|
||||
|
||||
from .production import * # pylint: disable=wildcard-import, unused-wildcard-import, wrong-import-position
|
||||
|
||||
|
||||
######################### Testing overrides ####################################
|
||||
|
||||
# Redirect to the test_root folder within the repo
|
||||
GITHUB_REPO_ROOT = (TEST_ROOT / "data").abspath()
|
||||
LOG_DIR = (TEST_ROOT / "log").abspath()
|
||||
|
||||
# Configure modulestore to use the test folder within the repo
|
||||
update_module_store_settings(
|
||||
MODULESTORE,
|
||||
module_store_options={
|
||||
'fs_root': (TEST_ROOT / "data").abspath(),
|
||||
},
|
||||
xml_store_options={
|
||||
'data_dir': (TEST_ROOT / "data").abspath(),
|
||||
},
|
||||
default_store=os.environ.get('DEFAULT_STORE', 'draft'),
|
||||
)
|
||||
|
||||
PLATFORM_NAME = gettext_lazy("édX")
|
||||
PLATFORM_DESCRIPTION = gettext_lazy("Open édX Platform")
|
||||
|
||||
############################ STATIC FILES #############################
|
||||
|
||||
# Serve static files at /static directly from the staticfiles directory under test root
|
||||
# Note: optimized files for testing are generated with settings from test_static_optimized
|
||||
STATIC_URL = "/static/"
|
||||
STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder']
|
||||
STATICFILES_DIRS = [
|
||||
(TEST_ROOT / "staticfiles" / "lms").abspath(),
|
||||
]
|
||||
|
||||
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
|
||||
MEDIA_ROOT = TEST_ROOT / "uploads"
|
||||
|
||||
# Webpack loader must use webpack output setting
|
||||
WEBPACK_LOADER['DEFAULT']['STATS_FILE'] = TEST_ROOT / "staticfiles" / "lms" / "webpack-stats.json"
|
||||
|
||||
# Don't use compression during tests
|
||||
PIPELINE['JS_COMPRESSOR'] = None
|
||||
|
||||
###################### Grades ######################
|
||||
GRADES_DOWNLOAD = {
|
||||
'STORAGE_TYPE': 'localfs',
|
||||
'BUCKET': 'edx-grades',
|
||||
'ROOT_PATH': os.path.join(mkdtemp(), 'edx-s3', 'grades'),
|
||||
}
|
||||
|
||||
|
||||
LOG_OVERRIDES = [
|
||||
('track.middleware', logging.CRITICAL),
|
||||
('common.djangoapps.edxmako.shortcuts', logging.ERROR),
|
||||
('edx.discussion', logging.CRITICAL),
|
||||
]
|
||||
for log_name, log_level in LOG_OVERRIDES:
|
||||
logging.getLogger(log_name).setLevel(log_level)
|
||||
|
||||
|
||||
YOUTUBE_HOSTNAME = os.environ.get('BOK_CHOY_HOSTNAME', '127.0.0.1')
|
||||
# Point the URL used to test YouTube availability to our stub YouTube server
|
||||
YOUTUBE_PORT = 9080
|
||||
YOUTUBE['TEST_TIMEOUT'] = 5000
|
||||
YOUTUBE['API'] = f"http://{YOUTUBE_HOSTNAME}:{YOUTUBE_PORT}/get_youtube_api/"
|
||||
YOUTUBE['METADATA_URL'] = f"http://{YOUTUBE_HOSTNAME}:{YOUTUBE_PORT}/test_youtube/"
|
||||
|
||||
############################# SECURITY SETTINGS ################################
|
||||
# Default to advanced security in common.py, so tests can reset here to use
|
||||
# a simpler security model
|
||||
|
||||
# Path at which to store the mock index
|
||||
MOCK_SEARCH_BACKING_FILE = (
|
||||
TEST_ROOT / "index_file.dat"
|
||||
).abspath()
|
||||
|
||||
# Verify student settings
|
||||
VERIFY_STUDENT["SOFTWARE_SECURE"] = {
|
||||
"API_ACCESS_KEY": "BBBBBBBBBBBBBBBBBBBB",
|
||||
"API_SECRET_KEY": "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC",
|
||||
}
|
||||
|
||||
# Set dummy values for profile image settings.
|
||||
PROFILE_IMAGE_BACKEND = {
|
||||
'class': 'openedx.core.storage.OverwriteStorage',
|
||||
'options': {
|
||||
'location': os.path.join(MEDIA_ROOT, 'profile-images/'),
|
||||
'base_url': os.path.join(MEDIA_URL, 'profile-images/'),
|
||||
},
|
||||
}
|
||||
|
||||
LMS_ROOT_URL = "http://localhost:{}".format(os.environ.get('BOK_CHOY_LMS_PORT', 8003))
|
||||
CMS_BASE = "localhost:{}".format(os.environ.get('BOK_CHOY_CMS_PORT', 8031))
|
||||
LOGIN_REDIRECT_WHITELIST = [CMS_BASE]
|
||||
|
||||
INSTALLED_APPS.append('openedx.testing.coverage_context_listener')
|
||||
|
||||
if RELEASE_LINE == "master":
|
||||
# On master, acceptance tests use edX books, not the default Open edX books.
|
||||
HELP_TOKENS_BOOKS = {
|
||||
'learner': 'https://edx.readthedocs.io/projects/edx-guide-for-students',
|
||||
'course_author': 'https://edx.readthedocs.io/projects/edx-partner-course-staff',
|
||||
}
|
||||
|
||||
# API access management
|
||||
API_ACCESS_MANAGER_EMAIL = 'api-access@example.com'
|
||||
API_ACCESS_FROM_EMAIL = 'api-requests@example.com'
|
||||
API_DOCUMENTATION_URL = 'https://course-catalog-api-guide.readthedocs.io/en/latest/'
|
||||
AUTH_DOCUMENTATION_URL = 'https://course-catalog-api-guide.readthedocs.io/en/latest/authentication/index.html'
|
||||
|
||||
#####################################################################
|
||||
# Lastly, see if the developer has any local overrides.
|
||||
try:
|
||||
from .private import * # pylint: disable=wildcard-import
|
||||
except ImportError:
|
||||
pass
|
||||
@@ -1,274 +0,0 @@
|
||||
# ingested edx-platform/lms/envs/bok_choy.auth.json
|
||||
# ingested edx-platform/lms/envs/bok_choy.env.json
|
||||
ACTIVATION_EMAIL_SUPPORT_LINK: https://support.example.com/activation-email-help.html
|
||||
ANALYTICS_DASHBOARD_URL: ''
|
||||
AWS_ACCESS_KEY_ID: ''
|
||||
AWS_SECRET_ACCESS_KEY: ''
|
||||
BUGS_EMAIL: bugs@example.com
|
||||
BULK_EMAIL_DEFAULT_FROM_EMAIL: no-reply@example.com
|
||||
BADGING_BACKEND: 'lms.djangoapps.badges.backends.tests.dummy_backend.DummyBackend'
|
||||
BLOCK_STRUCTURES_SETTINGS:
|
||||
# We have CELERY_ALWAYS_EAGER set to True, so there's no asynchronous
|
||||
# code running and the celery routing is unimportant.
|
||||
# It does not make sense to retry.
|
||||
TASK_MAX_RETRIES: 0
|
||||
# course publish task delay is irrelevant is because the task is run synchronously
|
||||
COURSE_PUBLISH_TASK_DELAY: 0
|
||||
# retry delay is irrelevent because we never retry
|
||||
TASK_DEFAULT_RETRY_DELAY: 0
|
||||
|
||||
CACHES:
|
||||
celery:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: integration_celery
|
||||
LOCATION: ['localhost:11211']
|
||||
default:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: sandbox_default
|
||||
LOCATION: ['localhost:11211']
|
||||
general:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: sandbox_general
|
||||
LOCATION: ['localhost:11211']
|
||||
mongo_metadata_inheritance:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: integration_mongo_metadata_inheritance
|
||||
LOCATION: ['localhost:11211']
|
||||
staticfiles:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: integration_static_files
|
||||
LOCATION: ['localhost:11211']
|
||||
|
||||
# Capture the console log via template includes, until webdriver supports log capture again
|
||||
CAPTURE_CONSOLE_LOG: True
|
||||
|
||||
CELERY_BROKER_HOSTNAME: localhost
|
||||
CELERY_BROKER_PASSWORD: celery
|
||||
CELERY_BROKER_TRANSPORT: amqp
|
||||
CELERY_BROKER_USER: celery
|
||||
CELERY_ALWAYS_EAGER: True
|
||||
CELERY_RESULT_BACKEND: 'django-cache'
|
||||
CLEAR_REQUEST_CACHE_ON_TASK_COMPLETION: False
|
||||
|
||||
CERT_QUEUE: certificates
|
||||
CMS_BASE: localhost:8031
|
||||
CODE_JAIL:
|
||||
limits: {REALTIME: 3, VMEM: 0}
|
||||
COMMENTS_SERVICE_KEY: password
|
||||
COMMENTS_SERVICE_URL: http://localhost:4567
|
||||
COMPLETION_BY_VIEWING_DELAY_MS: 1000
|
||||
CONTACT_EMAIL: info@example.com
|
||||
CONTENTSTORE:
|
||||
DOC_STORE_CONFIG:
|
||||
collection: modulestore
|
||||
db: test
|
||||
host: [localhost]
|
||||
port: 27017
|
||||
ENGINE: xmodule.contentstore.mongo.MongoContentStore
|
||||
OPTIONS:
|
||||
db: test
|
||||
host: [localhost]
|
||||
port: 27017
|
||||
DATABASES:
|
||||
default: {ENGINE: django.db.backends.mysql, HOST: localhost, NAME: edxtest, PASSWORD: '',
|
||||
PORT: '3306', USER: root}
|
||||
student_module_history: {ENGINE: django.db.backends.mysql, HOST: localhost, NAME: student_module_history_test,
|
||||
PASSWORD: '', PORT: '3306', USER: root}
|
||||
DEFAULT_FEEDBACK_EMAIL: feedback@example.com
|
||||
DEFAULT_FROM_EMAIL: registration@example.com
|
||||
|
||||
# Enable debug so that static assets are served by Django
|
||||
DEBUG: True
|
||||
DJFS: {aws_access_key_id: test, aws_secret_access_key: test, bucket: test, prefix: test,
|
||||
type: s3fs}
|
||||
DOC_STORE_CONFIG:
|
||||
collection: modulestore
|
||||
db: test
|
||||
host: [localhost]
|
||||
port: 27017
|
||||
# Configure the LMS to use our stub eCommerce implementation
|
||||
ECOMMERCE_API_URL: 'http://localhost:8043/api/v2/'
|
||||
# Configure the LMS to use our stub EdxNotes implementation
|
||||
EDXNOTES_PUBLIC_API: 'http://localhost:8042/api/v1'
|
||||
EDXNOTES_INTERNAL_API: 'http://localhost:8042/api/v1'
|
||||
|
||||
EDXNOTES_CONNECT_TIMEOUT: 10 # time in seconds
|
||||
EDXNOTES_READ_TIMEOUT: 10 # time in seconds
|
||||
|
||||
NOTES_DISABLED_TABS: []
|
||||
|
||||
EMAIL_BACKEND: django.core.mail.backends.dummy.EmailBackend
|
||||
EVENT_TRACKING_BACKENDS:
|
||||
mongo:
|
||||
ENGINE: eventtracking.backends.mongodb.MongoBackend
|
||||
OPTIONS: {collection: events, database: test}
|
||||
FEATURES:
|
||||
ALLOW_AUTOMATED_SIGNUPS: true
|
||||
AUTOMATIC_AUTH_FOR_TESTING: true
|
||||
AUTOMATIC_VERIFY_STUDENT_IDENTITY_FOR_TESTING: true
|
||||
CERTIFICATES_HTML_VIEW: true
|
||||
CERTIFICATES_INSTRUCTOR_GENERATION: true
|
||||
CUSTOM_COURSES_EDX: true,
|
||||
ENABLE_COURSE_DISCOVERY: true
|
||||
ENABLE_DISCUSSION_SERVICE: true
|
||||
ENABLE_GRADE_DOWNLOADS: true
|
||||
ENABLE_SPECIAL_EXAMS: true
|
||||
ENABLE_THIRD_PARTY_AUTH: true
|
||||
ENABLE_VERIFIED_CERTIFICATES: true
|
||||
EXPOSE_CACHE_PROGRAMS_ENDPOINT: true
|
||||
MODE_CREATION_FOR_TESTING: true
|
||||
PREVIEW_LMS_BASE: 'preview.localhost:8003'
|
||||
RESTRICT_AUTOMATIC_AUTH: false
|
||||
SHOW_HEADER_LANGUAGE_SELECTOR: true
|
||||
ENABLE_MAX_FAILED_LOGIN_ATTEMPTS: False
|
||||
SQUELCH_PII_IN_LOGS: False
|
||||
PREVENT_CONCURRENT_LOGINS: False
|
||||
ENABLE_MOBILE_REST_API: True # Show video bumper in LMS
|
||||
ENABLE_VIDEO_BUMPER: True # Show video bumper in LMS
|
||||
SHOW_BUMPER_PERIODICITY: 1
|
||||
# Enable courseware search for tests
|
||||
ENABLE_COURSEWARE_SEARCH: True
|
||||
# Enable dashboard search for tests
|
||||
ENABLE_DASHBOARD_SEARCH: True
|
||||
# discussion home panel, which includes a subscription on/off setting for discussion digest emails.
|
||||
ENABLE_DISCUSSION_HOME_PANEL: True
|
||||
# Enable support for OpenBadges accomplishments
|
||||
ENABLE_OPENBADGES: True
|
||||
ENABLE_LTI_PROVIDER: True
|
||||
# Enable milestones app
|
||||
MILESTONES_APP: True
|
||||
# Enable oauth authentication, which we test.
|
||||
ENABLE_OAUTH2_PROVIDER: True
|
||||
OAUTH_ENFORCE_SECURE: False
|
||||
ENABLE_PREREQUISITE_COURSES: True
|
||||
ENABLE_COURSE_DISCOVERY: True
|
||||
ENABLE_EDXNOTES: True
|
||||
ENABLE_TEAMS: True
|
||||
LICENSING: True
|
||||
# Use the auto_auth workflow for creating users and logging them in
|
||||
AUTOMATIC_AUTH_FOR_TESTING: True
|
||||
RESTRICT_AUTOMATIC_AUTH: False
|
||||
# Open up endpoint for faking Software Secure responses
|
||||
ENABLE_SOFTWARE_SECURE_FAKE: True
|
||||
# Disable instructor dash buttons for downloading course data when enrollment exceeds this number
|
||||
MAX_ENROLLMENT_INSTR_BUTTONS: 4
|
||||
ENABLE_ENROLLMENT_TRACK_USER_PARTITION: True
|
||||
ENTRANCE_EXAMS: True
|
||||
ENABLE_SPECIAL_EXAMS: True
|
||||
|
||||
|
||||
GITHUB_REPO_ROOT: '** OVERRIDDEN **'
|
||||
JWT_AUTH: {JWT_PRIVATE_SIGNING_JWK: '{"e": "AQAB", "d": "HIiV7KNjcdhVbpn3KT-I9n3JPf5YbGXsCIedmPqDH1d4QhBofuAqZ9zebQuxkRUpmqtYMv0Zi6ECSUqH387GYQF_XvFUFcjQRPycISd8TH0DAKaDpGr-AYNshnKiEtQpINhcP44I1AYNPCwyoxXA1fGTtmkKChsuWea7o8kytwU5xSejvh5-jiqu2SF4GEl0BEXIAPZsgbzoPIWNxgO4_RzNnWs6nJZeszcaDD0CyezVSuH9QcI6g5QFzAC_YuykSsaaFJhZ05DocBsLczShJ9Omf6PnK9xlm26I84xrEh_7x4fVmNBg3xWTLh8qOnHqGko93A1diLRCrKHOvnpvgQ",
|
||||
"n": "o5cn3ljSRi6FaDEKTn0PS-oL9EFyv1pI7dRgffQLD1qf5D6sprmYfWWokSsrWig8u2y0HChSygR6Jn5KXBqQn6FpM0dDJLnWQDRXHLl3Ey1iPYgDSmOIsIGrV9ZyNCQwk03wAgWbfdBTig3QSDYD-sTNOs3pc4UD_PqAvU2nz_1SS2ZiOwOn5F6gulE1L0iE3KEUEvOIagfHNVhz0oxa_VRZILkzV-zr6R_TW1m97h4H8jXl_VJyQGyhMGGypuDrQ9_vaY_RLEulLCyY0INglHWQ7pckxBtI5q55-Vio2wgewe2_qYcGsnBGaDNbySAsvYcWRrqDiFyzrJYivodqTQ",
|
||||
"q": "3T3DEtBUka7hLGdIsDlC96Uadx_q_E4Vb1cxx_4Ss_wGp1Loz3N3ZngGyInsKlmbBgLo1Ykd6T9TRvRNEWEtFSOcm2INIBoVoXk7W5RuPa8Cgq2tjQj9ziGQ08JMejrPlj3Q1wmALJr5VTfvSYBu0WkljhKNCy1KB6fCby0C9WE",
|
||||
"p": "vUqzWPZnDG4IXyo-k5F0bHV0BNL_pVhQoLW7eyFHnw74IOEfSbdsMspNcPSFIrtgPsn7981qv3lN_staZ6JflKfHayjB_lvltHyZxfl0dvruShZOx1N6ykEo7YrAskC_qxUyrIvqmJ64zPW3jkuOYrFs7Ykj3zFx3Zq1H5568G0",
|
||||
"kid": "BTZ9HA6K", "kty": "RSA"}', JWT_PUBLIC_SIGNING_JWK_SET: '{"keys": [{"kid":
|
||||
"BTZ9HA6K", "e": "AQAB", "kty": "RSA", "n": "o5cn3ljSRi6FaDEKTn0PS-oL9EFyv1pI7dRgffQLD1qf5D6sprmYfWWokSsrWig8u2y0HChSygR6Jn5KXBqQn6FpM0dDJLnWQDRXHLl3Ey1iPYgDSmOIsIGrV9ZyNCQwk03wAgWbfdBTig3QSDYD-sTNOs3pc4UD_PqAvU2nz_1SS2ZiOwOn5F6gulE1L0iE3KEUEvOIagfHNVhz0oxa_VRZILkzV-zr6R_TW1m97h4H8jXl_VJyQGyhMGGypuDrQ9_vaY_RLEulLCyY0INglHWQ7pckxBtI5q55-Vio2wgewe2_qYcGsnBGaDNbySAsvYcWRrqDiFyzrJYivodqTQ"}]}',
|
||||
JWT_SECRET_KEY: super-secret-key}
|
||||
LMS_BASE: localhost:8003
|
||||
LMS_ROOT_URL: http://localhost:8003
|
||||
LOCAL_LOGLEVEL: INFO
|
||||
LOGGING_ENV: sandbox
|
||||
LOG_DIR: '** OVERRIDDEN **'
|
||||
MEDIA_URL: /media/
|
||||
MKTG_URL_LINK_MAP: {ABOUT: about, BLOG: blog, CAREERS: careers, CONTACT: contact,
|
||||
COURSES: courses, DONATE: donate, HELP_CENTER: help-center, HONOR: honor, NEWS: news,
|
||||
PRESS: press, PRIVACY: privacy, ROOT: root, SITEMAP.XML: sitemap_xml, TOS: tos,
|
||||
WHAT_IS_VERIFIED_CERT: verified-certificate}
|
||||
MODULESTORE:
|
||||
default:
|
||||
ENGINE: xmodule.modulestore.mixed.MixedModuleStore
|
||||
OPTIONS:
|
||||
mappings: {}
|
||||
stores:
|
||||
- DOC_STORE_CONFIG:
|
||||
collection: modulestore
|
||||
db: test
|
||||
host: [localhost]
|
||||
port: 27017
|
||||
ENGINE: xmodule.modulestore.mongo.DraftMongoModuleStore
|
||||
NAME: draft
|
||||
OPTIONS:
|
||||
collection: modulestore
|
||||
db: test
|
||||
default_class: xmodule.hidden_block.HiddenBlock
|
||||
fs_root: '** OVERRIDDEN **'
|
||||
host: [localhost]
|
||||
port: 27017
|
||||
render_template: common.djangoapps.edxmako.shortcuts.render_to_string
|
||||
- ENGINE: xmodule.modulestore.xml.XMLModuleStore
|
||||
NAME: xml
|
||||
OPTIONS: {data_dir: '** OVERRIDDEN **', default_class: xmodule.hidden_block.HiddenBlock}
|
||||
# We need to test different scenarios, following setting effectively disbale rate limiting
|
||||
PASSWORD_RESET_IP_RATE: '1/s'
|
||||
PASSWORD_RESET_EMAIL_RATE: '1/s'
|
||||
PASSWORD_RESET_SUPPORT_LINK: https://support.example.com/password-reset-help.html
|
||||
REGISTRATION_EXTENSION_FORM: openedx.core.djangoapps.user_api.tests.test_helpers.TestCaseForm
|
||||
REGISTRATION_EXTRA_FIELDS: {city: hidden, country: required, gender: optional, goals: optional,
|
||||
honor_code: required, level_of_education: optional, mailing_address: optional, terms_of_service: hidden,
|
||||
year_of_birth: optional}
|
||||
# Use MockSearchEngine as the search engine for test scenario
|
||||
SEARCH_ENGINE: "search.tests.mock_search_engine.MockSearchEngine"
|
||||
# this secret key should be the same as cms/envs/bok_choy.py's
|
||||
SECRET_KEY: "very_secret_bok_choy_key"
|
||||
|
||||
SERVER_EMAIL: devops@example.com
|
||||
SESSION_COOKIE_DOMAIN: null
|
||||
SITE_NAME: localhost:8003
|
||||
SOCIAL_SHARING_SETTINGS: {CERTIFICATE_FACEBOOK: true, CERTIFICATE_FACEBOOK_TEXT: 'Testing
|
||||
facebook feature:', CUSTOM_COURSE_URLS: true, DASHBOARD_FACEBOOK: true, DASHBOARD_TWITTER: true,
|
||||
DASHBOARD_TWITTER_TEXT: 'Testing feature:'}
|
||||
STATIC_URL_BASE: /static/
|
||||
SUPPORT_SITE_LINK: https://support.example.com
|
||||
SYSLOG_SERVER: ''
|
||||
TECH_SUPPORT_EMAIL: technical@example.com
|
||||
THIRD_PARTY_AUTH_BACKENDS: [social_core.backends.google.GoogleOAuth2, social_core.backends.linkedin.LinkedinOAuth2,
|
||||
social_core.backends.facebook.FacebookOAuth2, common.djangoapps.third_party_auth.dummy.DummyBackend,
|
||||
common.djangoapps.third_party_auth.saml.SAMLAuthBackend]
|
||||
THIRD_PARTY_AUTH:
|
||||
Google:
|
||||
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY": "test"
|
||||
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET": "test"
|
||||
Facebook:
|
||||
SOCIAL_AUTH_FACEBOOK_KEY": "test"
|
||||
SOCIAL_AUTH_FACEBOOK_SECRET": "test"
|
||||
TIME_ZONE: America/New_York
|
||||
TRACKING_BACKENDS:
|
||||
mongo:
|
||||
ENGINE: common.djangoapps.track.backends.mongodb.MongoBackend
|
||||
OPTIONS: {collection: events, database: test}
|
||||
WIKI_ENABLED: true
|
||||
WAFFLE_OVERRIDE: True
|
||||
XQUEUE_INTERFACE:
|
||||
basic_auth: [edx, edx]
|
||||
django_auth: {password: password, username: lms}
|
||||
# Configure the LMS to use our stub XQueue implementation
|
||||
url: 'http://localhost:8040'
|
||||
|
||||
ZENDESK_API_KEY: ''
|
||||
ZENDESK_USER: ''
|
||||
@@ -1,27 +0,0 @@
|
||||
"""
|
||||
Settings for Bok Choy tests that are used when running Studio in Docker-based devstack.
|
||||
"""
|
||||
|
||||
# noinspection PyUnresolvedReferences
|
||||
from .bok_choy import * # pylint: disable=wildcard-import
|
||||
|
||||
CMS_BASE = '{}:{}'.format(os.environ['BOK_CHOY_HOSTNAME'], os.environ.get('BOK_CHOY_CMS_PORT', 8031))
|
||||
LMS_BASE = '{}:{}'.format(os.environ['BOK_CHOY_HOSTNAME'], os.environ.get('BOK_CHOY_LMS_PORT', 8003))
|
||||
LMS_ROOT_URL = f'http://{LMS_BASE}'
|
||||
LOGIN_REDIRECT_WHITELIST = [CMS_BASE]
|
||||
SITE_NAME = LMS_BASE
|
||||
|
||||
COMMENTS_SERVICE_URL = 'http://{}:4567'.format(os.environ['BOK_CHOY_HOSTNAME'])
|
||||
EDXNOTES_PUBLIC_API = 'http://{}:8042/api/v1'.format(os.environ['BOK_CHOY_HOSTNAME'])
|
||||
|
||||
# Docker does not support the syslog socket at /dev/log. Rely on the console.
|
||||
LOGGING['handlers']['local'] = LOGGING['handlers']['tracking'] = {
|
||||
'class': 'logging.NullHandler',
|
||||
}
|
||||
|
||||
LOGGING['loggers']['tracking']['handlers'] = ['console']
|
||||
|
||||
# Point the URL used to test YouTube availability to our stub YouTube server
|
||||
BOK_CHOY_HOST = os.environ['BOK_CHOY_HOSTNAME']
|
||||
YOUTUBE['API'] = f"http://{BOK_CHOY_HOST}:{YOUTUBE_PORT}/get_youtube_api/"
|
||||
YOUTUBE['METADATA_URL'] = f"http://{BOK_CHOY_HOST}:{YOUTUBE_PORT}/test_youtube/"
|
||||
@@ -1,183 +0,0 @@
|
||||
# ingested edx-platform/lms/envs/bok_choy_docker.auth.json
|
||||
# ingested edx-platform/lms/envs/bok_choy_docker.env.json
|
||||
ACTIVATION_EMAIL_SUPPORT_LINK: https://support.example.com/activation-email-help.html
|
||||
ANALYTICS_DASHBOARD_URL: ''
|
||||
AWS_ACCESS_KEY_ID: ''
|
||||
AWS_SECRET_ACCESS_KEY: ''
|
||||
BUGS_EMAIL: bugs@example.com
|
||||
BULK_EMAIL_DEFAULT_FROM_EMAIL: no-reply@example.com
|
||||
CACHES:
|
||||
celery:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: integration_celery
|
||||
LOCATION: ['edx.devstack.memcached:11211']
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
default:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: sandbox_default
|
||||
LOCATION: ['edx.devstack.memcached:11211']
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
general:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: sandbox_general
|
||||
LOCATION: ['edx.devstack.memcached:11211']
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
mongo_metadata_inheritance:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: integration_mongo_metadata_inheritance
|
||||
LOCATION: ['edx.devstack.memcached:11211']
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
staticfiles:
|
||||
BACKEND: django.core.cache.backends.memcached.PyMemcacheCache
|
||||
KEY_FUNCTION: common.djangoapps.util.memcache.safe_key
|
||||
KEY_PREFIX: integration_static_files
|
||||
LOCATION: ['edx.devstack.memcached:11211']
|
||||
OPTIONS:
|
||||
no_delay: true
|
||||
ignore_exc: true
|
||||
use_pooling: true
|
||||
CELERY_BROKER_HOSTNAME: localhost
|
||||
CELERY_BROKER_PASSWORD: celery
|
||||
CELERY_BROKER_TRANSPORT: amqp
|
||||
CELERY_BROKER_USER: celery
|
||||
CERT_QUEUE: certificates
|
||||
CMS_BASE: '** OVERRIDDEN **'
|
||||
CODE_JAIL:
|
||||
limits: {REALTIME: 3, VMEM: 0}
|
||||
COMMENTS_SERVICE_KEY: password
|
||||
COMMENTS_SERVICE_URL: http://edx.devstack.lms:4567
|
||||
CONTACT_EMAIL: info@example.com
|
||||
CONTENTSTORE:
|
||||
DOC_STORE_CONFIG:
|
||||
collection: modulestore
|
||||
db: test
|
||||
host: [edx.devstack.mongo]
|
||||
port: 27017
|
||||
ENGINE: xmodule.contentstore.mongo.MongoContentStore
|
||||
OPTIONS:
|
||||
db: test
|
||||
host: [edx.devstack.mongo]
|
||||
port: 27017
|
||||
DATABASES:
|
||||
default: {ENGINE: django.db.backends.mysql, HOST: edx.devstack.mysql57, NAME: edxtest,
|
||||
PASSWORD: '', PORT: '3306', USER: root}
|
||||
student_module_history: {ENGINE: django.db.backends.mysql, HOST: edx.devstack.mysql57,
|
||||
NAME: student_module_history_test, PASSWORD: '', PORT: '3306', USER: root}
|
||||
DEFAULT_FEEDBACK_EMAIL: feedback@example.com
|
||||
DEFAULT_FROM_EMAIL: registration@example.com
|
||||
DJFS: {aws_access_key_id: test, aws_secret_access_key: test, bucket: test, prefix: test,
|
||||
type: s3fs}
|
||||
DOC_STORE_CONFIG:
|
||||
collection: modulestore
|
||||
db: test
|
||||
host: [edx.devstack.mongo]
|
||||
port: 27017
|
||||
EMAIL_BACKEND: django.core.mail.backends.dummy.EmailBackend
|
||||
EVENT_TRACKING_BACKENDS:
|
||||
mongo:
|
||||
ENGINE: eventtracking.backends.mongodb.MongoBackend
|
||||
OPTIONS:
|
||||
collection: events
|
||||
database: test
|
||||
host: [edx.devstack.mongo]
|
||||
port: 27017
|
||||
FEATURES: {ALLOW_AUTOMATED_SIGNUPS: true, AUTOMATIC_AUTH_FOR_TESTING: true,
|
||||
AUTOMATIC_VERIFY_STUDENT_IDENTITY_FOR_TESTING: true, CERTIFICATES_HTML_VIEW: true,
|
||||
CERTIFICATES_INSTRUCTOR_GENERATION: true, CUSTOM_COURSES_EDX: true,
|
||||
ENABLE_COURSE_DISCOVERY: true, ENABLE_DISCUSSION_SERVICE: true, ENABLE_GRADE_DOWNLOADS: true,
|
||||
ENABLE_SPECIAL_EXAMS: true, ENABLE_THIRD_PARTY_AUTH: true,
|
||||
ENABLE_VERIFIED_CERTIFICATES: true, EXPOSE_CACHE_PROGRAMS_ENDPOINT: true, MODE_CREATION_FOR_TESTING: true,
|
||||
PREVIEW_LMS_BASE: 'preview.localhost:8003', RESTRICT_AUTOMATIC_AUTH: false, SHOW_HEADER_LANGUAGE_SELECTOR: true}
|
||||
GITHUB_REPO_ROOT: '** OVERRIDDEN **'
|
||||
JWT_AUTH: {JWT_PRIVATE_SIGNING_JWK: '{"e": "AQAB", "d": "HIiV7KNjcdhVbpn3KT-I9n3JPf5YbGXsCIedmPqDH1d4QhBofuAqZ9zebQuxkRUpmqtYMv0Zi6ECSUqH387GYQF_XvFUFcjQRPycISd8TH0DAKaDpGr-AYNshnKiEtQpINhcP44I1AYNPCwyoxXA1fGTtmkKChsuWea7o8kytwU5xSejvh5-jiqu2SF4GEl0BEXIAPZsgbzoPIWNxgO4_RzNnWs6nJZeszcaDD0CyezVSuH9QcI6g5QFzAC_YuykSsaaFJhZ05DocBsLczShJ9Omf6PnK9xlm26I84xrEh_7x4fVmNBg3xWTLh8qOnHqGko93A1diLRCrKHOvnpvgQ",
|
||||
"n": "o5cn3ljSRi6FaDEKTn0PS-oL9EFyv1pI7dRgffQLD1qf5D6sprmYfWWokSsrWig8u2y0HChSygR6Jn5KXBqQn6FpM0dDJLnWQDRXHLl3Ey1iPYgDSmOIsIGrV9ZyNCQwk03wAgWbfdBTig3QSDYD-sTNOs3pc4UD_PqAvU2nz_1SS2ZiOwOn5F6gulE1L0iE3KEUEvOIagfHNVhz0oxa_VRZILkzV-zr6R_TW1m97h4H8jXl_VJyQGyhMGGypuDrQ9_vaY_RLEulLCyY0INglHWQ7pckxBtI5q55-Vio2wgewe2_qYcGsnBGaDNbySAsvYcWRrqDiFyzrJYivodqTQ",
|
||||
"q": "3T3DEtBUka7hLGdIsDlC96Uadx_q_E4Vb1cxx_4Ss_wGp1Loz3N3ZngGyInsKlmbBgLo1Ykd6T9TRvRNEWEtFSOcm2INIBoVoXk7W5RuPa8Cgq2tjQj9ziGQ08JMejrPlj3Q1wmALJr5VTfvSYBu0WkljhKNCy1KB6fCby0C9WE",
|
||||
"p": "vUqzWPZnDG4IXyo-k5F0bHV0BNL_pVhQoLW7eyFHnw74IOEfSbdsMspNcPSFIrtgPsn7981qv3lN_staZ6JflKfHayjB_lvltHyZxfl0dvruShZOx1N6ykEo7YrAskC_qxUyrIvqmJ64zPW3jkuOYrFs7Ykj3zFx3Zq1H5568G0",
|
||||
"kid": "BTZ9HA6K", "kty": "RSA"}', JWT_PUBLIC_SIGNING_JWK_SET: '{"keys": [{"kid":
|
||||
"BTZ9HA6K", "e": "AQAB", "kty": "RSA", "n": "o5cn3ljSRi6FaDEKTn0PS-oL9EFyv1pI7dRgffQLD1qf5D6sprmYfWWokSsrWig8u2y0HChSygR6Jn5KXBqQn6FpM0dDJLnWQDRXHLl3Ey1iPYgDSmOIsIGrV9ZyNCQwk03wAgWbfdBTig3QSDYD-sTNOs3pc4UD_PqAvU2nz_1SS2ZiOwOn5F6gulE1L0iE3KEUEvOIagfHNVhz0oxa_VRZILkzV-zr6R_TW1m97h4H8jXl_VJyQGyhMGGypuDrQ9_vaY_RLEulLCyY0INglHWQ7pckxBtI5q55-Vio2wgewe2_qYcGsnBGaDNbySAsvYcWRrqDiFyzrJYivodqTQ"}]}',
|
||||
JWT_SECRET_KEY: super-secret-key}
|
||||
LMS_BASE: http://edx.devstack.lms:18003
|
||||
LMS_ROOT_URL: http://edx.devstack.lms:18003
|
||||
LOCAL_LOGLEVEL: INFO
|
||||
LOGGING_ENV: sandbox
|
||||
LOG_DIR: '** OVERRIDDEN **'
|
||||
MEDIA_URL: /media/
|
||||
MKTG_URL_LINK_MAP: {ABOUT: about, BLOG: blog, CAREERS: careers, CONTACT: contact,
|
||||
COURSES: courses, DONATE: donate, HELP_CENTER: help-center, HONOR: honor, NEWS: news,
|
||||
PRESS: press, PRIVACY: privacy, ROOT: root, SITEMAP.XML: sitemap_xml, TOS: tos,
|
||||
WHAT_IS_VERIFIED_CERT: verified-certificate}
|
||||
MODULESTORE:
|
||||
default:
|
||||
ENGINE: xmodule.modulestore.mixed.MixedModuleStore
|
||||
OPTIONS:
|
||||
mappings: {}
|
||||
stores:
|
||||
- DOC_STORE_CONFIG:
|
||||
collection: modulestore
|
||||
db: test
|
||||
host: [edx.devstack.mongo]
|
||||
port: 27017
|
||||
ENGINE: xmodule.modulestore.mongo.DraftMongoModuleStore
|
||||
NAME: draft
|
||||
OPTIONS:
|
||||
collection: modulestore
|
||||
db: test
|
||||
default_class: xmodule.hidden_block.HiddenBlock
|
||||
fs_root: '** OVERRIDDEN **'
|
||||
host: [edx.devstack.mongo]
|
||||
port: 27017
|
||||
render_template: common.djangoapps.edxmako.shortcuts.render_to_string
|
||||
- ENGINE: xmodule.modulestore.xml.XMLModuleStore
|
||||
NAME: xml
|
||||
OPTIONS: {data_dir: '** OVERRIDDEN **', default_class: xmodule.hidden_block.HiddenBlock}
|
||||
PASSWORD_RESET_SUPPORT_LINK: https://support.example.com/password-reset-help.html
|
||||
REGISTRATION_EXTENSION_FORM: openedx.core.djangoapps.user_api.tests.test_helpers.TestCaseForm
|
||||
REGISTRATION_EXTRA_FIELDS: {city: hidden, country: required, gender: optional, goals: optional,
|
||||
honor_code: required, level_of_education: optional, mailing_address: optional, terms_of_service: hidden,
|
||||
year_of_birth: optional}
|
||||
SECRET_KEY: 'bokchoy_docker_secret_key'
|
||||
SERVER_EMAIL: devops@example.com
|
||||
SESSION_COOKIE_DOMAIN: null
|
||||
SITE_NAME: localhost:8003
|
||||
SOCIAL_SHARING_SETTINGS: {CERTIFICATE_FACEBOOK: true, CERTIFICATE_FACEBOOK_TEXT: 'Testing
|
||||
facebook feature:', CUSTOM_COURSE_URLS: true, DASHBOARD_FACEBOOK: true, DASHBOARD_TWITTER: true,
|
||||
DASHBOARD_TWITTER_TEXT: 'Testing feature:'}
|
||||
STATIC_URL_BASE: /static/
|
||||
SUPPORT_SITE_LINK: https://support.example.com
|
||||
SYSLOG_SERVER: ''
|
||||
TECH_SUPPORT_EMAIL: technical@example.com
|
||||
THIRD_PARTY_AUTH_BACKENDS: [social_core.backends.google.GoogleOAuth2, social_core.backends.linkedin.LinkedinOAuth2,
|
||||
social_core.backends.facebook.FacebookOAuth2, common.djangoapps.third_party_auth.dummy.DummyBackend,
|
||||
common.djangoapps.third_party_auth.saml.SAMLAuthBackend]
|
||||
TIME_ZONE: America/New_York
|
||||
TRACKING_BACKENDS:
|
||||
mongo:
|
||||
ENGINE: common.djangoapps.track.backends.mongodb.MongoBackend
|
||||
OPTIONS:
|
||||
collection: events
|
||||
database: test
|
||||
host: [edx.devstack.mongo]
|
||||
port: 27017
|
||||
WIKI_ENABLED: true
|
||||
XQUEUE_INTERFACE:
|
||||
basic_auth: [edx, edx]
|
||||
django_auth: {password: password, username: lms}
|
||||
url: '** OVERRIDDEN **'
|
||||
ZENDESK_API_KEY: ''
|
||||
ZENDESK_USER: ''
|
||||
Reference in New Issue
Block a user