Revision 34a76cdb snf-astakos-app/astakos/im/tests.py
b/snf-astakos-app/astakos/im/tests.py | ||
---|---|---|
47 | 47 |
|
48 | 48 |
from astakos.im import messages |
49 | 49 |
|
50 |
|
|
51 |
astakos_settings.EMAILCHANGE_ENABLED = True |
|
52 |
|
|
50 | 53 |
class ShibbolethClient(Client): |
51 | 54 |
""" |
52 | 55 |
A shibboleth agnostic client. |
... | ... | |
624 | 627 |
self.assertContains(r, "Password change for this account is not" |
625 | 628 |
" supported") |
626 | 629 |
|
630 |
class UserActionsTests(TestCase): |
|
631 |
|
|
632 |
def setUp(self): |
|
633 |
kind = GroupKind.objects.create(name="default") |
|
634 |
AstakosGroup.objects.create(name="default", kind=kind) |
|
635 |
|
|
636 |
def test_email_change(self): |
|
637 |
# to test existing email validation |
|
638 |
existing_user = get_local_user('existing@grnet.gr') |
|
639 |
|
|
640 |
# local user |
|
641 |
user = get_local_user('kpap@grnet.gr') |
|
642 |
|
|
643 |
# login as kpap |
|
644 |
self.client.login(username='kpap@grnet.gr', password='password') |
|
645 |
r = self.client.get('/im/profile', follow=True) |
|
646 |
user = r.context['request'].user |
|
647 |
self.assertTrue(user.is_authenticated()) |
|
648 |
|
|
649 |
# change email is enabled |
|
650 |
r = self.client.get('/im/email_change') |
|
651 |
self.assertEqual(r.status_code, 200) |
|
652 |
self.assertFalse(user.email_change_is_pending()) |
|
653 |
|
|
654 |
# request email change to an existing email fails |
|
655 |
data = {'new_email_address': 'existing@grnet.gr'} |
|
656 |
r = self.client.post('/im/email_change', data) |
|
657 |
self.assertContains(r, messages.EMAIL_USED) |
|
658 |
|
|
659 |
# proper email change |
|
660 |
data = {'new_email_address': 'kpap@gmail.com'} |
|
661 |
r = self.client.post('/im/email_change', data, follow=True) |
|
662 |
self.assertRedirects(r, '/im/profile') |
|
663 |
self.assertContains(r, messages.EMAIL_CHANGE_REGISTERED) |
|
664 |
change1 = EmailChange.objects.get() |
|
665 |
|
|
666 |
# user sees a warning |
|
667 |
r = self.client.get('/im/email_change') |
|
668 |
self.assertEqual(r.status_code, 200) |
|
669 |
self.assertContains(r, messages.PENDING_EMAIL_CHANGE_REQUEST) |
|
670 |
self.assertTrue(user.email_change_is_pending()) |
|
671 |
|
|
672 |
# link was sent |
|
673 |
self.assertEqual(len(get_mailbox('kpap@grnet.gr')), 0) |
|
674 |
self.assertEqual(len(get_mailbox('kpap@gmail.com')), 1) |
|
675 |
|
|
676 |
# proper email change |
|
677 |
data = {'new_email_address': 'kpap@yahoo.com'} |
|
678 |
r = self.client.post('/im/email_change', data, follow=True) |
|
679 |
self.assertRedirects(r, '/im/profile') |
|
680 |
self.assertContains(r, messages.EMAIL_CHANGE_REGISTERED) |
|
681 |
self.assertEqual(len(get_mailbox('kpap@grnet.gr')), 0) |
|
682 |
self.assertEqual(len(get_mailbox('kpap@yahoo.com')), 1) |
|
683 |
change2 = EmailChange.objects.get() |
|
684 |
|
|
685 |
r = self.client.get(change1.get_url()) |
|
686 |
self.assertEquals(r.status_code, 302) |
|
687 |
self.client.logout() |
|
688 |
|
|
689 |
r = self.client.post('/im/local?next=' + change2.get_url(), |
|
690 |
{'username': 'kpap@grnet.gr', |
|
691 |
'password': 'password', |
|
692 |
'next': change2.get_url()}, |
|
693 |
follow=True) |
|
694 |
self.assertRedirects(r, '/im/profile') |
|
695 |
user = r.context['request'].user |
|
696 |
self.assertEquals(user.email, 'kpap@yahoo.com') |
|
697 |
self.assertEquals(user.username, 'kpap@yahoo.com') |
|
698 |
|
|
699 |
|
|
700 |
self.client.logout() |
|
701 |
r = self.client.post('/im/local?next=' + change2.get_url(), |
|
702 |
{'username': 'kpap@grnet.gr', |
|
703 |
'password': 'password', |
|
704 |
'next': change2.get_url()}, |
|
705 |
follow=True) |
|
706 |
self.assertContains(r, "Please enter a correct username and password") |
|
707 |
self.assertEqual(user.emailchanges.count(), 0) |
|
708 |
|
Also available in: Unified diff