22Tests for the `purge_pii_from_generatedcertificates` management command.
33"""
44
5-
5+ import ddt
66from django .core .management import call_command
7+ from django .test import override_settings
78from testfixtures import LogCapture
89
910from common .djangoapps .student .tests .factories import UserFactory
2021from xmodule .modulestore .tests .factories import CourseFactory
2122
2223
24+ @ddt .ddt
2325class PurgePiiFromCertificatesTests (ModuleStoreTestCase ):
2426 """
2527 Tests for the `purge_pii_from_generatedcertificates` management command.
@@ -72,7 +74,8 @@ def setUp(self):
7274 )
7375 UserRetirementRequestFactory (user = self .user_retired )
7476
75- def test_management_command (self ):
77+ @ddt .data (True , False )
78+ def test_management_command (self , redact_history_toggle_enabled ):
7679 """
7780 Verify the management command purges expected data from a GeneratedCertificate instance if a learner has
7881 successfully had their account retired.
@@ -82,13 +85,31 @@ def test_management_command(self):
8285 cert_for_retired_user = GeneratedCertificate .objects .get (user_id = self .user_retired )
8386 assert cert_for_retired_user .name == self .user_retired_name
8487
85- call_command ("purge_pii_from_generatedcertificates" )
88+ with override_settings (REDACT_CERTIFICATES_HISTORICAL_PII = redact_history_toggle_enabled ):
89+ call_command ("purge_pii_from_generatedcertificates" )
8690
8791 cert_for_active_user = GeneratedCertificate .objects .get (user_id = self .user_active )
8892 assert cert_for_active_user .name == self .user_active_name
8993 cert_for_retired_user = GeneratedCertificate .objects .get (user_id = self .user_retired )
9094 assert cert_for_retired_user .name == ""
9195
96+ active_history_names = list (
97+ GeneratedCertificate .history .filter (user = self .user_active ).values_list ("name" , flat = True )
98+ )
99+ assert len (active_history_names ) > 0
100+ assert all (n == self .user_active_name for n in active_history_names )
101+
102+ retired_history_names = list (
103+ GeneratedCertificate .history .filter (user = self .user_retired ).values_list ("name" , flat = True )
104+ )
105+ assert len (retired_history_names ) > 0
106+ if redact_history_toggle_enabled :
107+ assert all (n == "" for n in retired_history_names ), "Names in the history table should have been redacted."
108+ else :
109+ assert all (n == self .user_retired_name for n in retired_history_names ), (
110+ "Names in the history table should not have been redacted."
111+ )
112+
92113 def test_management_command_dry_run (self ):
93114 """
94115 Verify that the management command does not purge any data when invoked with the `--dry-run` flag
@@ -111,4 +132,10 @@ def test_management_command_dry_run(self):
111132 cert_for_retired_user = GeneratedCertificate .objects .get (user_id = self .user_retired )
112133 assert cert_for_retired_user .name == self .user_retired_name
113134
135+ retired_history_names = list (
136+ GeneratedCertificate .history .filter (user = self .user_retired ).values_list ("name" , flat = True )
137+ )
138+ assert len (retired_history_names ) > 0
139+ assert all (n == self .user_retired_name for n in retired_history_names )
140+
114141 assert logger .records [0 ].msg == expected_log_msg
0 commit comments