How To Test the Course Embargo Feature
Feature | Course Embargo |
On A Sandbox
Suppose you've made some changes to the course embargo feature and you want to see if it still works. Try these steps:
SSH into the sandbox and connect to the sandbox MySQL DB using the information in lms.auth.json.
Issue this SQL:
To allow the "staff" user to access the Django admin interface:
update auth_user set is_superuser=1 where username='staff';
To allow the "staff" user to access the embargo models:
insert into auth_user_user_permissions (user_id, permission_id) VALUES (5, 497), (5,498), (5,499),(5,500),(5,501),(5,502),(5,503),(5,504),(5,506),(5,507),(5,508),(5,509),(5,510),(5,511),(5,512),(5,513),(5,514),(5,515),(5,516),(5,517),(5,518);
Login as "staff@example.com" and go to the admin interface here:
http://your_sandbox.sandbox.edx.org/admin/embargo/Add a course restriction in the admin interface for a course (like the demo course). The course key should be in this format: course-v1:edX+DemoX+Demo_Course
Add a country access rule, picking a random "CountryX" to embargo.
Modify lms.env.json to add the following line in the FEATURES section of the Django settings:
"EMBARGO": true,
Restart the LMS/CMS as your user (*not* edxapp) while SSH-ed into the sandbox:
sudo /edx/bin/supervisorctl restart edxapp:*
Login to the LMS as "honor@example.com" and set your country of origin to "CountryX".
Ensure that you cannot access the embargoed course.
On stage.edx.org
Open a pull request in the app-permissions repository.
The specific file: https://github.com/edx/app-permissions/blob/master/stage-edx-edxapp.yml
Add your user there and put the user in the course_embargo_admin group.
Get the PR reviewed and merged.
Login as your user and configure an embargoed course as specified above.
Notes
The code containing the embargo logic is here:
https://github.com/edx/edx-platform/blob/master/openedx/core/djangoapps/embargo/api.py#L45-L114
There are two ways to be denied access to courseware via embargo:
If your account's country of origin is denied via a course's embargo country blacklist.
If your originating IP address is determined to be from a course's embargo country blacklist.
Both checks are made and if either check is true, access is denied to the course. The steps above only trigger check 1).
Thanks for writing this up, @Julia Eskew (Deactivated)! I've been thinking of having a page that lists all their features along with how to test them, so this is more impetus for me to do so.