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

rafalp / Misago / 14845755215

05 May 2025 08:37PM UTC coverage: 97.101% (+0.004%) from 97.097%
14845755215

Pull #1922

github

web-flow
Merge f38e05745 into 365a342a5
Pull Request #1922: Fix BBCode block parser not handling nested blocks

13 of 13 new or added lines in 2 files covered. (100.0%)

14 existing lines in 2 files now uncovered.

70945 of 73063 relevant lines covered (97.1%)

0.97 hits per line

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

75.36
/misago/faker/bans.py
1
import random
1✔
2
from datetime import timedelta
1✔
3

4
from django.utils import timezone
1✔
5

6
from ..users.models import Ban
1✔
7

8

9
def get_fake_username_ban(fake):
1✔
10
    ban = _create_base_ban(fake, Ban.USERNAME)
1✔
11

12
    banned_value = fake.first_name()
1✔
13
    if random.randint(0, 100) < 31:
1✔
14
        banned_value = "%s*" % banned_value
1✔
15
    elif random.randint(0, 100) < 31:
1✔
16
        banned_value = "*%s" % banned_value
1✔
17
    elif random.randint(0, 100) < 31:
1✔
18
        banned_value = list(banned_value)
1✔
19
        banned_value.insert(random.randint(0, len(banned_value) - 1), "*")
1✔
20
        banned_value = "".join(banned_value)
1✔
21

22
    ban.banned_value = banned_value
1✔
23
    ban.save()
1✔
24
    return ban
1✔
25

26

27
def get_fake_email_ban(fake):
1✔
28
    ban = _create_base_ban(fake, Ban.EMAIL)
1✔
29

30
    if random.randint(0, 100) < 35:
1✔
UNCOV
31
        ban.banned_value = "*@%s" % fake.domain_name()
×
32
    else:
33
        ban.banned_value = fake.email()
1✔
34

35
    ban.save()
1✔
36
    return ban
1✔
37

38

39
def get_fake_ip_ban(fake):
1✔
40
    ban = _create_base_ban(fake, Ban.IP)
1✔
41

42
    if random.randint(0, 1):
1✔
43
        banned_value = fake.ipv4()
1✔
44
        if random.randint(0, 100) < 35:
1✔
45
            banned_value = banned_value.split(".")
1✔
46
            banned_value = ".".join(banned_value[: random.randint(1, 3)])
1✔
47
            banned_value = "%s.*" % banned_value
1✔
48
        elif random.randint(0, 100) < 35:
×
49
            banned_value = banned_value.split(".")
×
50
            banned_value = ".".join(banned_value[random.randint(1, 3) :])
×
51
            banned_value = "*.%s" % banned_value
×
52
        elif random.randint(0, 100) < 35:
×
53
            banned_value = banned_value.split(".")
×
54
            banned_value[random.randint(0, 3)] = "*"
×
55
            banned_value = ".".join(banned_value)
×
56
    else:
57
        banned_value = fake.ipv6()
1✔
58

59
        if random.randint(0, 100) < 35:
1✔
60
            banned_value = banned_value.split(":")
1✔
61
            banned_value = ":".join(banned_value[: random.randint(1, 7)])
1✔
62
            banned_value = "%s:*" % banned_value
1✔
UNCOV
63
        elif random.randint(0, 100) < 35:
×
64
            banned_value = banned_value.split(":")
×
65
            banned_value = ":".join(banned_value[: random.randint(1, 7)])
×
66
            banned_value = "*:%s" % banned_value
×
UNCOV
67
        elif random.randint(0, 100) < 35:
×
UNCOV
68
            banned_value = banned_value.split(":")
×
UNCOV
69
            banned_value[random.randint(0, 7)] = "*"
×
UNCOV
70
            banned_value = ":".join(banned_value)
×
71

72
    ban.banned_value = banned_value
1✔
73
    ban.save()
1✔
74
    return ban
1✔
75

76

77
def _create_base_ban(fake, ban_type):
1✔
78
    ban = Ban(check_type=ban_type)
1✔
79

80
    if random.randint(0, 10) == 0:
1✔
81
        ban.user_message = fake.sentence()
1✔
82

83
    if random.randint(0, 10) == 0:
1✔
84
        ban.staff_message = fake.sentence()
1✔
85

86
    if random.randint(0, 1):
1✔
87
        # Lets make ban temporary
88
        ban_length = timedelta(days=random.randint(0, 300))
1✔
89
        if random.randint(0, 1):
1✔
90
            ban.valid_until = timezone.now().date() - ban_length
1✔
91
        else:
92
            ban.valid_until = timezone.now().date() + ban_length
1✔
93

94
    return ban
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

© 2026 Coveralls, Inc