Projet

Général

Profil

0001-cancel-user-add-set-correct-location-29181.patch

Emmanuel Cazenave, 21 décembre 2018 18:18

Télécharger (3,36 ko)

Voir les différences:

Subject: [PATCH] cancel user add: set correct location (#29181)

 src/authentic2/manager/user_views.py | 11 ++++++-----
 tests/test_manager.py                | 20 +++++---------------
 2 files changed, 11 insertions(+), 20 deletions(-)
src/authentic2/manager/user_views.py
129 129
        return fields
130 130

  
131 131
    def get_success_url(self):
132
        return self.request.POST.get('next') or \
133
                reverse('a2-manager-user-detail', kwargs={'pk': self.object.pk})
132
        return select_next_url(
133
            self.request,
134
            default=reverse('a2-manager-user-detail', kwargs={'pk': self.object.pk}),
135
            include_post=True)
134 136

  
135 137
    def get_context_data(self, **kwargs):
136 138
        context = super(UserAddView, self).get_context_data(**kwargs)
137
        context['cancel_url'] = '../..'
139
        context['cancel_url'] = select_next_url(self.request, default='../..', include_post=True)
140
        context['next'] = select_next_url(self.request, default=None, include_post=True)
138 141
        context['ou'] = self.ou
139
        if hasattr(self.request, 'GET') and 'next' in self.request.GET:
140
            context['next'] = self.request.GET['next']
141 142
        return context
142 143

  
143 144
    def form_valid(self, form):
tests/test_manager.py
743 743

  
744 744

  
745 745
def test_manager_create_user_next(superuser_or_admin, app, ou1):
746
    next_url = u'https://example.nowhere.null/'
746
    next_url = u'/example.nowhere.null/'
747 747
    url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url)
748 748
    login(app, superuser_or_admin, '/manage/')
749 749
    response = app.get(url)
750
    form = response.form
751
    form.set('first_name', 'John')
752
    form.set('last_name', 'Doe')
753
    form.set('email', 'john.doe@gmail.com')
754
    form.set('password1', 'ABcd1234')
755
    form.set('password2', 'ABcd1234')
756
    assert form.submit().location == next_url
757 750

  
751
    # cancel if not handled through form submission
752
    assert response.pyquery.remove_namespaces()('a.cancel').attr('href') == next_url
758 753

  
759
def test_manager_create_user_next_form_cancelation(superuser_or_admin, app, ou1):
760
    next_url = u'https://example.nowhere.null/'
761
    url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url)
762
    login(app, superuser_or_admin, '/manage/')
763
    response = app.get(url)
764 754
    form = response.form
765 755
    form.set('first_name', 'John')
766 756
    form.set('last_name', 'Doe')
767 757
    form.set('email', 'john.doe@gmail.com')
768 758
    form.set('password1', 'ABcd1234')
769 759
    form.set('password2', 'ABcd1234')
770
    assert form.submit('cancel').location == next_url
760
    assert form.submit().location == next_url
771 761

  
772 762

  
773 763
def test_manager_create_user_next_form_error(superuser_or_admin, app, ou1):
774
    next_url = u'https://example.nowhere.null/'
764
    next_url = u'/example.nowhere.null/'
775 765
    url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url)
776 766
    login(app, superuser_or_admin, '/manage/')
777 767
    response = app.get(url)
778
-