GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

RegistrationAdminTestCase   A
last analyzed

Complexity

Total Complexity 26

Size/Duplication

Total Lines 416
Duplicated Lines 63.7 %

Importance

Changes 6
Bugs 0 Features 0
Metric Value
c 6
b 0
f 0
dl 265
loc 416
rs 10
wmc 26

22 Methods

Rating   Name   Duplication   Size   Complexity  
A test_get_inline_instances_without_supplements() 0 9 2
A test_change_view_post_valid_accept_from_accepted() 0 23 1
A test_get_inline_instances_with_default_supplements() 0 11 2
A setUp() 0 10 1
B test_change_view_post_invalid_activate_from_untreated() 26 26 1
A test_change_view_post_valid_force_activate_from_untreated() 19 19 1
A test_change_view_post_valid_force_activate_from_rejected() 22 22 1
A test_change_view_post_valid_reject_from_untreated() 19 19 1
A test_change_view_post_valid_accept_from_untreated() 19 19 1
A test_resend_acceptance_email_action() 0 10 1
A test_change_list_view_get() 0 7 1
B test_change_view_post_invalid_reject_from_accepted() 29 29 1
A test_reject_users_action() 0 10 2
A test_change_view_post_valid_accept_from_rejected() 22 22 1
B test_change_view_post_invalid_reject_from_rejected() 29 29 1
A test_accept_users_action() 0 10 2
B test_change_view_post_invalid_force_activate_from_accepted() 29 29 1
B test_change_view_post_invalid_activate_from_rejected() 29 29 1
A test_change_view_get() 0 12 1
A test_change_view_post_valid_activate_from_accepted() 22 22 1
A test_change_view_get_404() 0 9 1
A test_force_activate_users_action() 0 9 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
# -*- coding: utf-8 -*-
2
from __future__ import unicode_literals
3
"""
4
"""
5
__author__ = 'Alisue <[email protected]>'
6
from django.test import TestCase
7
from django.contrib import admin
8
from django.core.urlresolvers import reverse
9
from django.core import mail
10
from django.core import urlresolvers
11
from registration.compat import get_user_model
12
from registration.backends.default import DefaultRegistrationBackend
13
from registration.models import RegistrationProfile
14
from registration.admin import RegistrationAdmin
15
from registration.tests.mock import mock_request
16
from registration.tests.compat import override_settings
17
18
19
@override_settings(
20
    ACCOUNT_ACTIVATION_DAYS=7,
21
    REGISTRATION_OPEN=True,
22
    REGISTRATION_SUPPLEMENT_CLASS=None,
23
    REGISTRATION_BACKEND_CLASS=(
24
        'registration.backends.default.DefaultRegistrationBackend'),
25
)
26
class RegistrationAdminTestCase(TestCase):
27
28
    def setUp(self):
29
        User = get_user_model()
30
        self.backend = DefaultRegistrationBackend()
31
        self.mock_request = mock_request()
32
        self.admin = User.objects.create_superuser(
33
            username='mark', email='[email protected]',
34
            password='password')
35
36
        self.client.login(username='mark', password='password')
37
        self.admin_url = reverse('admin:index')
38
39
    def test_change_list_view_get(self):
40
        url = urlresolvers.reverse('admin:registration_registrationprofile_changelist')
41
        response = self.client.get(url)
42
43
        self.assertEqual(response.status_code, 200)
44
        self.assertTemplateUsed(response,
45
                                'admin/change_list.html')
46
47
    def test_change_view_get(self):
48
        self.backend.register(
49
            username='bob', email='[email protected]',
50
            request=self.mock_request)
51
52
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
53
        response = self.client.get(url)
54
55
        self.assertEqual(response.status_code, 200)
56
        self.assertTemplateUsed(
57
            response,
58
            'admin/registration/registrationprofile/change_form.html'
59
        )
60
61
    def test_change_view_get_404(self):
62
        self.backend.register(
63
            username='bob', email='[email protected]',
64
            request=self.mock_request)
65
66
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(100,))
67
        response = self.client.get(url)
68
69
        self.assertEqual(response.status_code, 404)
70
71 View Code Duplication
    def test_change_view_post_valid_accept_from_untreated(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
72
        new_user = self.backend.register(
73
            username='bob', email='[email protected]',
74
            request=self.mock_request)
75
76
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
77
        redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist')
78
        response = self.client.post(url, {
79
            '_supplement-TOTAL_FORMS': 0,
80
            '_supplement-INITIAL_FORMS': 0,
81
            '_supplement-MAXNUM_FORMS': '',
82
            'action_name': 'accept'
83
        })
84
85
        self.assertEqual(response.status_code, 302)
86
        self.assertRedirects(response, redirect_url)
87
88
        profile = RegistrationProfile.objects.get(user__pk=new_user.pk)
89
        self.assertEqual(profile.status, 'accepted')
90
91
    def test_change_view_post_valid_accept_from_accepted(self):
92
        new_user = self.backend.register(
93
            username='bob', email='[email protected]',
94
            request=self.mock_request)
95
        self.backend.accept(
96
            new_user.registration_profile,
97
            request=self.mock_request)
98
        previous_activation_key = new_user.registration_profile.activation_key
99
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
100
        redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist')
101
        response = self.client.post(url, {
102
            '_supplement-TOTAL_FORMS': 0,
103
            '_supplement-INITIAL_FORMS': 0,
104
            '_supplement-MAXNUM_FORMS': '',
105
            'action_name': 'accept'
106
        })
107
108
        self.assertEqual(response.status_code, 302)
109
        self.assertRedirects(response, redirect_url)
110
111
        profile = RegistrationProfile.objects.get(user__pk=new_user.pk)
112
        self.assertEqual(profile.status, 'accepted')
113
        self.assertNotEqual(profile.activation_key, previous_activation_key)
114
115 View Code Duplication
    def test_change_view_post_valid_accept_from_rejected(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
116
        new_user = self.backend.register(
117
            username='bob', email='[email protected]',
118
            request=self.mock_request)
119
        self.backend.reject(
120
            new_user.registration_profile,
121
            request=self.mock_request)
122
123
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
124
        redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist')
125
        response = self.client.post(url, {
126
            '_supplement-TOTAL_FORMS': 0,
127
            '_supplement-INITIAL_FORMS': 0,
128
            '_supplement-MAXNUM_FORMS': '',
129
            'action_name': 'accept'
130
        })
131
132
        self.assertEqual(response.status_code, 302)
133
        self.assertRedirects(response, redirect_url)
134
135
        profile = RegistrationProfile.objects.get(user__pk=new_user.pk)
136
        self.assertEqual(profile.status, 'accepted')
137
138 View Code Duplication
    def test_change_view_post_valid_reject_from_untreated(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
139
        new_user = self.backend.register(
140
            username='bob', email='[email protected]',
141
            request=self.mock_request)
142
143
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
144
        redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist')
145
        response = self.client.post(url, {
146
            '_supplement-TOTAL_FORMS': 0,
147
            '_supplement-INITIAL_FORMS': 0,
148
            '_supplement-MAXNUM_FORMS': '',
149
            'action_name': 'reject'
150
        })
151
152
        self.assertEqual(response.status_code, 302)
153
        self.assertRedirects(response, redirect_url)
154
155
        profile = RegistrationProfile.objects.get(user__pk=new_user.pk)
156
        self.assertEqual(profile.status, 'rejected')
157
158 View Code Duplication
    def test_change_view_post_invalid_reject_from_accepted(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
159
        new_user = self.backend.register(
160
            username='bob', email='[email protected]',
161
            request=self.mock_request)
162
        self.backend.accept(
163
            new_user.registration_profile,
164
            request=self.mock_request)
165
166
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
167
        response = self.client.post(url, {
168
            '_supplement-TOTAL_FORMS': 0,
169
            '_supplement-INITIAL_FORMS': 0,
170
            '_supplement-MAXNUM_FORMS': '',
171
            'action_name': 'reject'
172
        })
173
174
        self.assertEqual(response.status_code, 200)
175
        self.assertTemplateUsed(
176
            response,
177
            'admin/registration/registrationprofile/change_form.html'
178
        )
179
        self.failIf(response.context['adminform'].form.is_valid())
180
        self.assertEqual(
181
            response.context['adminform'].form.errors['action_name'],
182
            ["Select a valid choice. "
183
             "reject is not one of the available choices."])
184
185
        profile = RegistrationProfile.objects.get(user__pk=new_user.pk)
186
        self.assertEqual(profile.status, 'accepted')
187
188 View Code Duplication
    def test_change_view_post_invalid_reject_from_rejected(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
189
        new_user = self.backend.register(
190
            username='bob', email='[email protected]',
191
            request=self.mock_request)
192
        self.backend.reject(
193
            new_user.registration_profile,
194
            request=self.mock_request)
195
196
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
197
        response = self.client.post(url, {
198
            '_supplement-TOTAL_FORMS': 0,
199
            '_supplement-INITIAL_FORMS': 0,
200
            '_supplement-MAXNUM_FORMS': '',
201
            'action_name': 'reject'
202
        })
203
204
        self.assertEqual(response.status_code, 200)
205
        self.assertTemplateUsed(
206
            response,
207
            'admin/registration/registrationprofile/change_form.html'
208
        )
209
        self.failIf(response.context['adminform'].form.is_valid())
210
        self.assertEqual(
211
            response.context['adminform'].form.errors['action_name'],
212
            ["Select a valid choice. "
213
             "reject is not one of the available choices."])
214
215
        profile = RegistrationProfile.objects.get(user__pk=new_user.pk)
216
        self.assertEqual(profile.status, 'rejected')
217
218 View Code Duplication
    def test_change_view_post_invalid_activate_from_untreated(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
219
        new_user = self.backend.register(
220
            username='bob', email='[email protected]',
221
            request=self.mock_request)
222
223
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
224
        response = self.client.post(url, {
225
            '_supplement-TOTAL_FORMS': 0,
226
            '_supplement-INITIAL_FORMS': 0,
227
            '_supplement-MAXNUM_FORMS': '',
228
            'action_name': 'activate'
229
        })
230
231
        self.assertEqual(response.status_code, 200)
232
        self.assertTemplateUsed(
233
            response,
234
            'admin/registration/registrationprofile/change_form.html'
235
        )
236
        self.failIf(response.context['adminform'].form.is_valid())
237
        self.assertEqual(
238
            response.context['adminform'].form.errors['action_name'],
239
            ["Select a valid choice. "
240
             "activate is not one of the available choices."])
241
242
        profile = RegistrationProfile.objects.get(user__pk=new_user.pk)
243
        self.assertEqual(profile.status, 'untreated')
244
245 View Code Duplication
    def test_change_view_post_valid_activate_from_accepted(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
246
        new_user = self.backend.register(
247
            username='bob', email='[email protected]',
248
            request=self.mock_request)
249
        self.backend.accept(
250
            new_user.registration_profile,
251
            request=self.mock_request)
252
253
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
254
        redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist')
255
        response = self.client.post(url, {
256
            '_supplement-TOTAL_FORMS': 0,
257
            '_supplement-INITIAL_FORMS': 0,
258
            '_supplement-MAXNUM_FORMS': '',
259
            'action_name': 'activate'
260
        })
261
262
        self.assertEqual(response.status_code, 302)
263
        self.assertRedirects(response, redirect_url)
264
265
        profile = RegistrationProfile.objects.filter(user__pk=new_user.pk)
266
        self.failIf(profile.exists())
267
268 View Code Duplication
    def test_change_view_post_invalid_activate_from_rejected(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
269
        new_user = self.backend.register(
270
            username='bob', email='[email protected]',
271
            request=self.mock_request)
272
        self.backend.reject(
273
            new_user.registration_profile,
274
            request=self.mock_request)
275
276
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
277
        response = self.client.post(url, {
278
            '_supplement-TOTAL_FORMS': 0,
279
            '_supplement-INITIAL_FORMS': 0,
280
            '_supplement-MAXNUM_FORMS': '',
281
            'action_name': 'activate'
282
        })
283
284
        self.assertEqual(response.status_code, 200)
285
        self.assertTemplateUsed(
286
            response,
287
            'admin/registration/registrationprofile/change_form.html'
288
        )
289
        self.failIf(response.context['adminform'].form.is_valid())
290
        self.assertEqual(
291
            response.context['adminform'].form.errors['action_name'],
292
            ["Select a valid choice. "
293
             "activate is not one of the available choices."])
294
295
        profile = RegistrationProfile.objects.get(user__pk=new_user.pk)
296
        self.assertEqual(profile.status, 'rejected')
297
298 View Code Duplication
    def test_change_view_post_valid_force_activate_from_untreated(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
299
        new_user = self.backend.register(
300
            username='bob', email='[email protected]',
301
            request=self.mock_request)
302
303
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
304
        redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist')
305
        response = self.client.post(url, {
306
            '_supplement-TOTAL_FORMS': 0,
307
            '_supplement-INITIAL_FORMS': 0,
308
            '_supplement-MAXNUM_FORMS': '',
309
            'action_name': 'force_activate'
310
        })
311
312
        self.assertEqual(response.status_code, 302)
313
        self.assertRedirects(response, redirect_url)
314
315
        profile = RegistrationProfile.objects.filter(user__pk=new_user.pk)
316
        self.failIf(profile.exists())
317
318 View Code Duplication
    def test_change_view_post_invalid_force_activate_from_accepted(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
319
        new_user = self.backend.register(
320
            username='bob', email='[email protected]',
321
            request=self.mock_request)
322
        self.backend.accept(
323
            new_user.registration_profile,
324
            request=self.mock_request)
325
326
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
327
        response = self.client.post(url, {
328
            '_supplement-TOTAL_FORMS': 0,
329
            '_supplement-INITIAL_FORMS': 0,
330
            '_supplement-MAXNUM_FORMS': '',
331
            'action_name': 'force_activate'
332
        })
333
334
        self.assertEqual(response.status_code, 200)
335
        self.assertTemplateUsed(
336
            response,
337
            'admin/registration/registrationprofile/change_form.html'
338
        )
339
        self.failIf(response.context['adminform'].form.is_valid())
340
        self.assertEqual(
341
            response.context['adminform'].form.errors['action_name'],
342
            ["Select a valid choice. "
343
             "force_activate is not one of the available choices."])
344
345
        profile = RegistrationProfile.objects.get(user__pk=new_user.pk)
346
        self.assertEqual(profile.status, 'accepted')
347
348 View Code Duplication
    def test_change_view_post_valid_force_activate_from_rejected(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
349
        new_user = self.backend.register(
350
            username='bob', email='[email protected]',
351
            request=self.mock_request)
352
        self.backend.reject(
353
            new_user.registration_profile,
354
            request=self.mock_request)
355
356
        url = urlresolvers.reverse('admin:registration_registrationprofile_change', args=(1,))
357
        redirect_url = urlresolvers.reverse('admin:registration_registrationprofile_changelist')
358
        response = self.client.post(url, {
359
            '_supplement-TOTAL_FORMS': 0,
360
            '_supplement-INITIAL_FORMS': 0,
361
            '_supplement-MAXNUM_FORMS': '',
362
            'action_name': 'force_activate'
363
        })
364
365
        self.assertEqual(response.status_code, 302)
366
        self.assertRedirects(response, redirect_url)
367
368
        profile = RegistrationProfile.objects.filter(user__pk=new_user.pk)
369
        self.failIf(profile.exists())
370
371
    def test_resend_acceptance_email_action(self):
372
        admin_class = RegistrationAdmin(RegistrationProfile, admin.site)
373
374
        self.backend.register(
375
            username='bob', email='[email protected]', request=self.mock_request)
376
        admin_class.resend_acceptance_email(
377
            None, RegistrationProfile.objects.all())
378
379
        # one for registration, one for resend
380
        self.assertEqual(len(mail.outbox), 2)
381
382
    def test_accept_users_action(self):
383
        admin_class = RegistrationAdmin(RegistrationProfile, admin.site)
384
385
        self.backend.register(
386
            username='bob', email='[email protected]', request=self.mock_request)
387
        admin_class.accept_users(None, RegistrationProfile.objects.all())
388
389
        for profile in RegistrationProfile.objects.all():
390
            self.assertEqual(profile.status, 'accepted')
391
            self.assertNotEqual(profile.activation_key, None)
392
393
    def test_reject_users_action(self):
394
        admin_class = RegistrationAdmin(RegistrationProfile, admin.site)
395
396
        self.backend.register(
397
            username='bob', email='[email protected]', request=self.mock_request)
398
        admin_class.reject_users(None, RegistrationProfile.objects.all())
399
400
        for profile in RegistrationProfile.objects.all():
401
            self.assertEqual(profile.status, 'rejected')
402
            self.assertEqual(profile.activation_key, None)
403
404
    def test_force_activate_users_action(self):
405
        admin_class = RegistrationAdmin(RegistrationProfile, admin.site)
406
407
        self.backend.register(
408
            username='bob', email='[email protected]', request=self.mock_request)
409
        admin_class.force_activate_users(
410
            None, RegistrationProfile.objects.all())
411
412
        self.assertEqual(RegistrationProfile.objects.count(), 0)
413
414
    @override_settings(REGISTRATION_SUPPLEMENT_CLASS=None)
415
    def test_get_inline_instances_without_supplements(self):
416
        admin_class = RegistrationAdmin(RegistrationProfile, admin.site)
417
        # Prevent caching
418
        if hasattr(admin_class.backend, '_supplement_class_cache'):
419
            delattr(admin_class.backend, '_supplement_class_cache')
420
421
        inline_instances = admin_class.get_inline_instances(self.mock_request, None)
422
        self.assertEqual(len(inline_instances), 0)
423
424
    @override_settings(
425
        REGISTRATION_SUPPLEMENT_CLASS="registration.supplements.default.models.DefaultRegistrationSupplement"
426
    )
427
    def test_get_inline_instances_with_default_supplements(self):
428
        admin_class = RegistrationAdmin(RegistrationProfile, admin.site)
429
        # Prevent caching
430
        if hasattr(admin_class.backend, '_supplement_class_cache'):
431
            delattr(admin_class.backend, '_supplement_class_cache')
432
433
        inline_instances = admin_class.get_inline_instances(self.mock_request, None)
434
        self.assertEqual(len(inline_instances), 1)
435