diff --git a/src/olympia/versions/models.py b/src/olympia/versions/models.py index 3fb48dbb93ff..41f03f9ebdb2 100644 --- a/src/olympia/versions/models.py +++ b/src/olympia/versions/models.py @@ -575,9 +575,12 @@ def from_upload( if is_mozilla_signed and addon.type != amo.ADDON_LPAPP: reviewer_flags_defaults['auto_approval_disabled'] = True - # Check if the approval should be restricted + # Check if the approval should be restricted. Enterprise versions are + # exempt: their auto-approval can never be disabled (see + # AutoApprovalSummary.check_has_auto_approval_disabled()), so the flag + # is not set and nothing is recorded for them. checker = RestrictionChecker(upload=upload) - if not checker.is_auto_approval_allowed(): + if channel != amo.CHANNEL_ENTERPRISE and not checker.is_auto_approval_allowed(): flag = ( 'auto_approval_disabled' if channel == amo.CHANNEL_LISTED diff --git a/src/olympia/versions/tests/test_models.py b/src/olympia/versions/tests/test_models.py index 7ce7ad5d0f23..2d72f79f220f 100644 --- a/src/olympia/versions/tests/test_models.py +++ b/src/olympia/versions/tests/test_models.py @@ -1978,6 +1978,35 @@ def test_enterprise_addon_enabled_waffle_switch(self): assert version assert version.channel == amo.CHANNEL_ENTERPRISE + @override_switch('enterprise-channel', active=True) + def test_auto_approval_not_restricted_for_enterprise(self): + # Enterprise versions are exempt from auto-approval restrictions: + # the disabled flag is ignored for them (see + # AutoApprovalSummary.check_has_auto_approval_disabled()), so the + # check is skipped entirely - no flag, no history, no activity log. + upload_enterprise = self.get_upload( + self.filename, channel=amo.CHANNEL_ENTERPRISE + ) + EmailUserRestriction.objects.create( + email_pattern=upload_enterprise.user.email, + restriction_type=RESTRICTION_TYPES.ADDON_APPROVAL, + ) + version = Version.from_upload( + upload_enterprise, + self.addon, + amo.CHANNEL_ENTERPRISE, + selected_apps=[self.selected_app], + parsed_data=self.dummy_parsed_data, + ) + assert version + assert not AddonReviewerFlags.objects.filter(addon=self.addon).exists() + assert not UserRestrictionHistory.objects.exists() + assert ( + not ActivityLog.objects.for_addons(self.addon) + .filter(action=amo.LOG.DISABLE_AUTO_APPROVAL.id) + .exists() + ) + def test_addon_is_attached_to_upload_if_it_wasnt(self): assert self.upload_listed.addon is None version = Version.from_upload(