Passed
Push — main ( 2c1a84...8b4e52 )
by Jochen
04:45
created

test_email_address_changed_announced()   A

Complexity

Conditions 2

Size

Total Lines 21
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 14
nop 2
dl 0
loc 21
rs 9.7
c 0
b 0
f 0
1
"""
2
:Copyright: 2006-2021 Jochen Kupperschmidt
3
:License: Revised BSD (see `LICENSE` file for details)
4
"""
5
6
import byceps.announce.connections  # Connect signal handlers.
7
from byceps.events.user import (
8
    UserAccountCreated,
9
    UserAccountSuspended,
10
    UserAccountUnsuspended,
11
    UserDetailsUpdated,
12
    UserEmailAddressChanged,
13
    UserEmailAddressInvalidated,
14
    UserScreenNameChanged,
15
)
16
from byceps.services.user import deletion_service as user_deletion_service
17
from byceps.signals import user as user_signals
18
19
from .helpers import (
20
    assert_submitted_data,
21
    CHANNEL_ORGA_LOG,
22
    CHANNEL_PUBLIC,
23
    mocked_irc_bot,
24
    now,
25
)
26
27
28
EXPECTED_CHANNEL = CHANNEL_ORGA_LOG
29
30
31
def test_account_created_announced(app, make_user):
32
    expected_text = 'Jemand hat das Benutzerkonto "JaneDoe" angelegt.'
33
34
    user = make_user('JaneDoe')
35
36
    event = UserAccountCreated(
37
        occurred_at=now(),
38
        initiator_id=None,
39
        initiator_screen_name=None,
40
        user_id=user.id,
41
        user_screen_name=user.screen_name,
42
        site_id=None,
43
    )
44
45
    with mocked_irc_bot() as mock:
46
        user_signals.account_created.send(None, event=event)
47
48
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
49
50
51
def test_account_created_announced_on_site(app, make_user, site):
52
    expected_text = (
53
        'Jemand hat das Benutzerkonto "JaneDoeOnSite" '
54
        'auf Site "ACMECon 2014 website" angelegt.'
55
    )
56
57
    user = make_user('JaneDoeOnSite')
58
59
    event = UserAccountCreated(
60
        occurred_at=now(),
61
        initiator_id=None,
62
        initiator_screen_name=None,
63
        user_id=user.id,
64
        user_screen_name=user.screen_name,
65
        site_id=site.id,
66
    )
67
68
    with mocked_irc_bot() as mock:
69
        user_signals.account_created.send(None, event=event)
70
71
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
72
73
74
def test_account_created_by_admin_announced(app, make_user):
75
    expected_text = 'EinAdmin hat das Benutzerkonto "EinUser" angelegt.'
76
77
    admin = make_user('EinAdmin')
78
    user = make_user('EinUser')
79
80
    event = UserAccountCreated(
81
        occurred_at=now(),
82
        initiator_id=admin.id,
83
        initiator_screen_name=admin.screen_name,
84
        user_id=user.id,
85
        user_screen_name=user.screen_name,
86
        site_id=None,
87
    )
88
89
    with mocked_irc_bot() as mock:
90
        user_signals.account_created.send(None, event=event)
91
92
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
93
94
95
def test_screen_name_change_announced(app, make_user):
96
    expected_text = (
97
        'ElAdmin hat das Benutzerkonto "DrJekyll" in "MrHyde" umbenannt.'
98
    )
99
100
    admin = make_user('ElAdmin')
101
    user = make_user('DrJekyll')
102
103
    event = UserScreenNameChanged(
104
        occurred_at=now(),
105
        initiator_id=admin.id,
106
        initiator_screen_name=admin.screen_name,
107
        user_id=user.id,
108
        old_screen_name=user.screen_name,
109
        new_screen_name='MrHyde',
110
    )
111
112
    with mocked_irc_bot() as mock:
113
        user_signals.screen_name_changed.send(None, event=event)
114
115
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
116
117
118
def test_email_address_changed_announced(app, make_user):
119
    expected_text = (
120
        'UserSupporter hat die E-Mail-Adresse '
121
        'des Benutzerkontos "MailboxHopper" geändert.'
122
    )
123
124
    admin = make_user('UserSupporter')
125
    user = make_user('MailboxHopper')
126
127
    event = UserEmailAddressChanged(
128
        occurred_at=now(),
129
        initiator_id=admin.id,
130
        initiator_screen_name=admin.screen_name,
131
        user_id=user.id,
132
        user_screen_name=user.screen_name,
133
    )
134
135
    with mocked_irc_bot() as mock:
136
        user_signals.email_address_changed.send(None, event=event)
137
138
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
139
140
141
def test_email_address_invalidated_announced(app, make_user):
142
    expected_text = (
143
        'BounceWatchman hat die E-Mail-Adresse '
144
        'des Benutzerkontos "Faker" invalidiert.'
145
    )
146
147
    admin = make_user('BounceWatchman')
148
    user = make_user('Faker')
149
150
    event = UserEmailAddressInvalidated(
151
        occurred_at=now(),
152
        initiator_id=admin.id,
153
        initiator_screen_name=admin.screen_name,
154
        user_id=user.id,
155
        user_screen_name=user.screen_name,
156
    )
157
158
    with mocked_irc_bot() as mock:
159
        user_signals.email_address_invalidated.send(None, event=event)
160
161
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
162
163
164
def test_user_details_updated_announced(app, make_user):
165
    expected_text = (
166
        'Chameleon hat die persönlichen Daten '
167
        'des Benutzerkontos "Chameleon" geändert.'
168
    )
169
170
    user = make_user('Chameleon')
171
172
    event = UserDetailsUpdated(
173
        occurred_at=now(),
174
        initiator_id=user.id,
175
        initiator_screen_name=user.screen_name,
176
        user_id=user.id,
177
        user_screen_name=user.screen_name,
178
    )
179
180
    with mocked_irc_bot() as mock:
181
        user_signals.details_updated.send(None, event=event)
182
183
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
184
185
186
def test_suspended_account_announced(app, make_user):
187
    expected_text = 'She-Ra hat das Benutzerkonto "Skeletor" gesperrt.'
188
189
    admin = make_user('She-Ra')
190
    user = make_user('Skeletor')
191
192
    event = UserAccountSuspended(
193
        occurred_at=now(),
194
        initiator_id=admin.id,
195
        initiator_screen_name=admin.screen_name,
196
        user_id=user.id,
197
        user_screen_name=user.screen_name,
198
    )
199
200
    with mocked_irc_bot() as mock:
201
        user_signals.account_suspended.send(None, event=event)
202
203
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
204
205
206
def test_unsuspended_account_announced(app, make_user):
207
    expected_text = 'TheBoss hat das Benutzerkonto "RambaZamba" entsperrt.'
208
209
    admin = make_user('TheBoss')
210
    user = make_user('RambaZamba')
211
212
    event = UserAccountUnsuspended(
213
        occurred_at=now(),
214
        initiator_id=admin.id,
215
        initiator_screen_name=admin.screen_name,
216
        user_id=user.id,
217
        user_screen_name=user.screen_name,
218
    )
219
220
    with mocked_irc_bot() as mock:
221
        user_signals.account_unsuspended.send(None, event=event)
222
223
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
224
225
226
def test_deleted_account_announced(app, make_user):
227
    expected_text = (
228
        'UberDude hat das Benutzerkonto "Snake" '
229
        '(ID "76b0c57f-8909-4b02-90c9-96e0a817f738") gelöscht.'
230
    )
231
232
    admin = make_user('UberDude')
233
    user = make_user('Snake', user_id='76b0c57f-8909-4b02-90c9-96e0a817f738')
234
235
    event = user_deletion_service.delete_account(
236
        user.id, admin.id, 'specious reason'
237
    )
238
239
    with mocked_irc_bot() as mock:
240
        user_signals.account_deleted.send(None, event=event)
241
242
    assert_submitted_data(mock, EXPECTED_CHANNEL, expected_text)
243