88
99import ddt
1010import pytz
11- from consent .models import DataSharingConsent
1211from django .contrib .auth .models import User # lint-amnesty, pylint: disable=imported-auth-user
1312from django .contrib .sites .models import Site
14- from django .conf import settings
1513from django .core import mail
1614from django .core .cache import cache
1715from django .db import connection
1816from django .test import TestCase
1917from django .test .utils import CaptureQueriesContext
2018from django .urls import reverse
21- from enterprise .models import (
22- EnterpriseCourseEnrollment ,
23- EnterpriseCustomer ,
24- EnterpriseCustomerUser ,
25- PendingEnterpriseCustomerUser
26- )
2719from opaque_keys .edx .keys import CourseKey
2820from rest_framework import status
2921from social_django .models import UserSocialAuth
6759)
6860from openedx .core .djangoapps .external_user_ids .models import ExternalIdType
6961from openedx .core .djangoapps .oauth_dispatch .jwt import create_jwt_for_user
70- from openedx .core .djangoapps .site_configuration .tests .factories import SiteFactory
7162from openedx .core .djangoapps .user_api .accounts .views import AccountRetirementPartnerReportView
7263from openedx .core .djangoapps .user_api .models import (
7364 RetirementState ,
8980 setup_retirement_states
9081)
9182
92- # This is a temporary import path while we transition from integrated_channels to channel_integrations
93- if getattr (settings , 'ENABLE_LEGACY_INTEGRATED_CHANNELS' , True ):
94- from integrated_channels .sap_success_factors .models import SapSuccessFactorsLearnerDataTransmissionAudit
95- else :
96- from channel_integrations .sap_success_factors .models import SapSuccessFactorsLearnerDataTransmissionAudit
97-
9883
9984def build_jwt_headers (user ):
10085 """
@@ -1396,33 +1381,6 @@ def setUp(self):
13961381 self .cache_key = UserProfile .country_cache_key_name (self .test_user .id )
13971382 cache .set (self .cache_key , 'Timor-leste' )
13981383
1399- # Enterprise model setup
1400- self .course_id = 'course-v1:edX+DemoX.1+2T2017'
1401- self .enterprise_customer = EnterpriseCustomer .objects .create (
1402- name = 'test_enterprise_customer' ,
1403- site = SiteFactory .create ()
1404- )
1405- self .enterprise_user = EnterpriseCustomerUser .objects .create (
1406- enterprise_customer = self .enterprise_customer ,
1407- user_id = self .test_user .id ,
1408- )
1409- self .enterprise_enrollment = EnterpriseCourseEnrollment .objects .create (
1410- enterprise_customer_user = self .enterprise_user ,
1411- course_id = self .course_id
1412- )
1413- self .pending_enterprise_user = PendingEnterpriseCustomerUser .objects .create (
1414- enterprise_customer_id = self .enterprise_user .enterprise_customer_id ,
1415- user_email = self .test_user .email
1416- )
1417- self .sapsf_audit = SapSuccessFactorsLearnerDataTransmissionAudit .objects .create (
1418- sapsf_user_id = self .test_user .id ,
1419- enterprise_course_enrollment_id = self .enterprise_enrollment .id ,
1420- )
1421- self .consent = DataSharingConsent .objects .create (
1422- username = self .test_user .username ,
1423- enterprise_customer = self .enterprise_customer ,
1424- )
1425-
14261384 # Entitlement model setup
14271385 self .entitlement = CourseEntitlementFactory .create (user = self .test_user )
14281386 self .entitlement_support_detail = CourseEntitlementSupportDetail .objects .create (
@@ -1455,46 +1413,13 @@ def setUp(self):
14551413 self .headers ['content_type' ] = "application/json"
14561414 self .url = reverse ('accounts_retire' )
14571415
1458- def _data_sharing_consent_assertions (self ):
1459- """
1460- Helper method for asserting that ``DataSharingConsent`` objects are retired.
1461- """
1462- self .consent .refresh_from_db ()
1463- assert self .retired_username == self .consent .username
1464- test_users_data_sharing_consent = DataSharingConsent .objects .filter (
1465- username = self .original_username
1466- )
1467- assert not test_users_data_sharing_consent .exists ()
1468-
14691416 def _entitlement_support_detail_assertions (self ):
14701417 """
14711418 Helper method for asserting that ``CourseEntitleSupportDetail`` objects are retired.
14721419 """
14731420 self .entitlement_support_detail .refresh_from_db ()
14741421 assert '' == self .entitlement_support_detail .comments
14751422
1476- def _pending_enterprise_customer_user_assertions (self ):
1477- """
1478- Helper method for asserting that ``PendingEnterpriseCustomerUser`` objects are retired.
1479- """
1480- self .pending_enterprise_user .refresh_from_db ()
1481- assert self .retired_email == self .pending_enterprise_user .user_email
1482- pending_enterprise_users = PendingEnterpriseCustomerUser .objects .filter (
1483- user_email = self .original_email
1484- )
1485- assert not pending_enterprise_users .exists ()
1486-
1487- def _sapsf_audit_assertions (self ):
1488- """
1489- Helper method for asserting that ``SapSuccessFactorsLearnerDataTransmissionAudit`` objects are retired.
1490- """
1491- self .sapsf_audit .refresh_from_db ()
1492- assert '' == self .sapsf_audit .sapsf_user_id
1493- audits_for_original_user_id = SapSuccessFactorsLearnerDataTransmissionAudit .objects .filter (
1494- sapsf_user_id = self .test_user .id ,
1495- )
1496- assert not audits_for_original_user_id .exists ()
1497-
14981423 def post_and_assert_status (self , data , expected_status = status .HTTP_204_NO_CONTENT ):
14991424 """
15001425 Helper function for making a request to the retire subscriptions endpoint, and asserting the status.
@@ -1570,9 +1495,6 @@ def test_retire_user(self, mock_remove_profile_images, mock_get_profile_image_na
15701495
15711496 assert cache .get (self .cache_key ) is None
15721497
1573- self ._data_sharing_consent_assertions ()
1574- self ._sapsf_audit_assertions ()
1575- self ._pending_enterprise_customer_user_assertions ()
15761498 self ._entitlement_support_detail_assertions ()
15771499
15781500 assert not PendingEmailChange .objects .filter (user = self .test_user ).exists ()
@@ -1587,6 +1509,21 @@ def test_retire_user_twice_idempotent(self):
15871509 fake_completed_retirement (self .test_user )
15881510 self .post_and_assert_status (data )
15891511
1512+ @mock .patch ('openedx.core.djangoapps.user_api.accounts.views.USER_RETIRE_LMS_CRITICAL' )
1513+ def test_retirement_sends_critical_signal_with_retirement_data (self , mock_signal ):
1514+ """
1515+ USER_RETIRE_LMS_CRITICAL is sent with retired_username and retired_email kwargs.
1516+ """
1517+ data = {'username' : self .original_username }
1518+ self .post_and_assert_status (data )
1519+
1520+ mock_signal .send .assert_called_once_with (
1521+ sender = mock_signal .send .call_args [1 ]['sender' ],
1522+ user = mock_signal .send .call_args [1 ]['user' ],
1523+ retired_username = self .retired_username ,
1524+ retired_email = self .retired_email ,
1525+ )
1526+
15901527 def test_deletes_pii_from_user_profile (self ):
15911528 for model_field , value_to_assign in USER_PROFILE_PII .items ():
15921529 if value_to_assign == '' :
@@ -1627,18 +1564,6 @@ def test_can_delete_user_profiles_country_cache(self):
16271564 AccountRetirementView .delete_users_country_cache (self .test_user )
16281565 assert cache .get (self .cache_key ) is None
16291566
1630- def test_can_retire_users_datasharingconsent (self ):
1631- AccountRetirementView .retire_users_data_sharing_consent (self .test_user .username , self .retired_username )
1632- self ._data_sharing_consent_assertions ()
1633-
1634- def test_can_retire_users_sap_success_factors_audits (self ):
1635- AccountRetirementView .retire_sapsf_data_transmission (self .test_user )
1636- self ._sapsf_audit_assertions ()
1637-
1638- def test_can_retire_user_from_pendingenterprisecustomeruser (self ):
1639- AccountRetirementView .retire_user_from_pending_enterprise_customer_user (self .test_user , self .retired_email )
1640- self ._pending_enterprise_customer_user_assertions ()
1641-
16421567 def test_course_entitlement_support_detail_comments_are_retired (self ):
16431568 AccountRetirementView .retire_entitlement_support_detail (self .test_user )
16441569 self ._entitlement_support_detail_assertions ()
0 commit comments