From dae4403ba7d7b1dd74f900dcd713d249bdc88de4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Behmo?= Date: Tue, 23 Mar 2021 20:31:55 +0100 Subject: [PATCH] fix: TypeError in toggle state report view We were attempting to add course overrides twice to objects returned in the toggle state report view. This was causing a TypeError (and thus a 500 error) because the second time, we were attempting to add entries to an incorrect object. This issue was not caught by unit tests because we were not testing the view with WaffleFlagCourseOverride objects. This commit adds a unit test to prevent future errors. This is another fix for PR #27108. --- .../core/djangoapps/waffle_utils/tests/test_views.py | 10 ++++++++++ openedx/core/djangoapps/waffle_utils/views.py | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/openedx/core/djangoapps/waffle_utils/tests/test_views.py b/openedx/core/djangoapps/waffle_utils/tests/test_views.py index 0f8152a858..d3110c3d3a 100644 --- a/openedx/core/djangoapps/waffle_utils/tests/test_views.py +++ b/openedx/core/djangoapps/waffle_utils/tests/test_views.py @@ -37,6 +37,16 @@ class ToggleStateViewTests(TestCase): # lint-amnesty, pylint: disable=missing-c "class": "SettingDictToggle", } in response.data["django_settings"] + def test_response_with_course_override(self): + models.WaffleFlagCourseOverrideModel.objects.create(waffle_flag="my.flag", enabled=True) + response = get_toggle_state_response() + assert response.data["waffle_flags"] + assert "my.flag" == response.data["waffle_flags"][0]["name"] + assert response.data["waffle_flags"][0]["course_overrides"] + assert "None" == response.data["waffle_flags"][0]["course_overrides"][0]["course_id"] + assert "on" == response.data["waffle_flags"][0]["course_overrides"][0]["force"] + assert "both" == response.data["waffle_flags"][0]["computed_status"] + def test_course_overrides(self): models.WaffleFlagCourseOverrideModel.objects.create(waffle_flag="my.flag", enabled=True) course_overrides = {} diff --git a/openedx/core/djangoapps/waffle_utils/views.py b/openedx/core/djangoapps/waffle_utils/views.py index 0967c1d656..fbce34cd48 100644 --- a/openedx/core/djangoapps/waffle_utils/views.py +++ b/openedx/core/djangoapps/waffle_utils/views.py @@ -63,7 +63,6 @@ class ToggleStateView(views.APIView): Expose toggle state report dict as a view. """ report = CourseOverrideToggleStateReport().as_dict() - _add_waffle_flag_course_override_state(report["waffle_flags"]) return Response(report)