• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mozilla / fx-private-relay / 20fdad42-28a5-47cf-a496-b03bf8e9bb6b

09 May 2024 06:22PM CUT coverage: 84.08% (-0.6%) from 84.64%
20fdad42-28a5-47cf-a496-b03bf8e9bb6b

push

circleci

web-flow
Merge pull request #4684 from mozilla/enable-flak8-bandit-checks-mpp-3802

fix MPP-3802: stop ignoring bandit security checks

3602 of 4734 branches covered (76.09%)

Branch coverage included in aggregate %.

74 of 158 new or added lines in 24 files covered. (46.84%)

4 existing lines in 4 files now uncovered.

14687 of 17018 relevant lines covered (86.3%)

10.86 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.12
/api/serializers/emails.py
1
"""API serializers for api/views/emails.py"""
2

3
from django.db.models import prefetch_related_objects
1✔
4

5
from rest_framework import exceptions, serializers
1✔
6

7
from emails.models import DomainAddress, RelayAddress
1✔
8

9

10
class PremiumValidatorsMixin:
1✔
11
    # the user must be premium to set block_list_emails=True
12
    def validate_block_list_emails(self, value):
1✔
13
        if not value:
1✔
14
            return value
1✔
15
        if not hasattr(self, "context"):
1!
NEW
16
            raise AttributeError("self must have attribute context")
×
17
        user = self.context["request"].user
1✔
18
        prefetch_related_objects([user], "socialaccount_set", "profile")
1✔
19
        if not user.profile.has_premium:
1✔
20
            raise exceptions.AuthenticationFailed(
1✔
21
                "Must be premium to set block_list_emails."
22
            )
23
        return value
1✔
24

25

26
class RelayAddressSerializer(PremiumValidatorsMixin, serializers.ModelSerializer):
1✔
27
    mask_type = serializers.CharField(default="random", read_only=True, required=False)
1✔
28

29
    class Meta:
1✔
30
        model = RelayAddress
1✔
31
        fields = [
1✔
32
            "mask_type",
33
            "enabled",
34
            "description",
35
            "generated_for",
36
            "block_list_emails",
37
            "used_on",
38
            # read-only
39
            "id",
40
            "address",
41
            "domain",
42
            "full_address",
43
            "created_at",
44
            "last_modified_at",
45
            "last_used_at",
46
            "num_forwarded",
47
            "num_blocked",
48
            "num_level_one_trackers_blocked",
49
            "num_replied",
50
            "num_spam",
51
        ]
52
        read_only_fields = [
1✔
53
            "id",
54
            "mask_type",
55
            "address",
56
            "domain",
57
            "full_address",
58
            "created_at",
59
            "last_modified_at",
60
            "last_used_at",
61
            "num_forwarded",
62
            "num_blocked",
63
            "num_level_one_trackers_blocked",
64
            "num_replied",
65
            "num_spam",
66
        ]
67

68

69
class DomainAddressSerializer(PremiumValidatorsMixin, serializers.ModelSerializer):
1✔
70
    mask_type = serializers.CharField(default="custom", read_only=True, required=False)
1✔
71

72
    class Meta:
1✔
73
        model = DomainAddress
1✔
74
        fields = [
1✔
75
            "mask_type",
76
            "enabled",
77
            "description",
78
            "block_list_emails",
79
            "used_on",
80
            # read-only
81
            "id",
82
            "address",
83
            "domain",
84
            "full_address",
85
            "created_at",
86
            "last_modified_at",
87
            "last_used_at",
88
            "num_forwarded",
89
            "num_blocked",
90
            "num_level_one_trackers_blocked",
91
            "num_replied",
92
            "num_spam",
93
        ]
94
        read_only_fields = [
1✔
95
            "id",
96
            "mask_type",
97
            "domain",
98
            "full_address",
99
            "created_at",
100
            "last_modified_at",
101
            "last_used_at",
102
            "num_forwarded",
103
            "num_blocked",
104
            "num_level_one_trackers_blocked",
105
            "num_replied",
106
            "num_spam",
107
        ]
108

109

110
class FirstForwardedEmailSerializer(serializers.Serializer):
1✔
111
    mask = serializers.EmailField(required=True)
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc