Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 18 additions & 28 deletions sponsors/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,34 +70,6 @@ def test_display_form_with_errors_if_invalid_post(self):
self.assertIsInstance(form, SponsorshiptBenefitsForm)
self.assertTrue(form.errors)

def test_login_required(self):
redirect_url = f"{settings.LOGIN_URL}?next={self.url}"
self.client.logout()

r = self.client.get(self.url)

self.assertRedirects(r, redirect_url)

def test_not_staff_no_group_not_allowed(self):
redirect_url = f"{settings.LOGIN_URL}?next={self.url}"
self.user.is_staff = False
self.user.save()
self.client.force_login(self.user)

r = self.client.get(self.url)

self.assertRedirects(r, redirect_url, fetch_redirect_response=False)

def test_group_allowed(self):
redirect_url = f"{settings.LOGIN_URL}?next={self.url}"
self.user.groups.add(self.group)
self.user.save()
self.client.force_login(self.user)

r = self.client.get(self.url)

self.assertEqual(r.status_code, 200, "user in group should have access")

def test_valid_post_redirect_user_to_next_form_step_and_save_info_in_cookies(self):
package = baker.make("sponsors.SponsorshipPackage")
for benefit in self.program_1_benefits:
Expand Down Expand Up @@ -141,6 +113,24 @@ def test_capacity_flag_when_needed(self):
r = self.client.get(self.url)
self.assertEqual(True, r.context["capacities_met"])

def test_redirect_to_login(self):
redirect_url = (
f"{settings.LOGIN_URL}?next={reverse('new_sponsorship_application')}"
)
package = baker.make("sponsors.SponsorshipPackage")
for benefit in self.program_1_benefits:
benefit.packages.add(package)

data = {
"benefits_psf": [b.id for b in self.program_1_benefits],
"benefits_working_group": [b.id for b in self.program_2_benefits],
"package": package.id,
}
self.client.logout()
response = self.client.post(self.url, data=data)

self.assertRedirects(response, redirect_url, fetch_redirect_response=False)


class NewSponsorshipApplicationViewTests(TestCase):
url = reverse_lazy("new_sponsorship_application")
Expand Down
21 changes: 3 additions & 18 deletions sponsors/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.contrib.auth.mixins import LoginRequiredMixin
from django.db import transaction
from django.utils.decorators import method_decorator
from django.http import JsonResponse
Expand All @@ -24,24 +24,10 @@
from sponsors.forms import SponsorshiptBenefitsForm, SponsorshipApplicationForm


class SelectSponsorshipApplicationBenefitsView(UserPassesTestMixin, FormView):
class SelectSponsorshipApplicationBenefitsView(FormView):
form_class = SponsorshiptBenefitsForm
template_name = "sponsors/sponsorship_benefits_form.html"

# TODO: Remove UserPassesTestMixin when launched, also remove following methods
def test_func(self):
return (
self.request.user.is_staff
or self.request.user.groups.filter(name="Sponsorship Preview").exists()
)

def permission_denied_message(self):
msg = "New Sponsorship Application is not yet generally available, check back soon!"
messages.add_message(self.request, messages.INFO, msg)
return msg

# END TODO

def get_context_data(self, *args, **kwargs):
programs = SponsorshipProgram.objects.all()
packages = SponsorshipPackage.objects.all()
Expand All @@ -65,8 +51,7 @@ def get_success_url(self):
if self.request.user.is_authenticated:
return reverse_lazy("new_sponsorship_application")
else:
# TODO unit test this scenario after removing UserPassesTestMixin
return settings.LOGIN_URL
return f"{settings.LOGIN_URL}?next={reverse('new_sponsorship_application')}"

def get_initial(self):
return cookies.get_sponsorship_selected_benefits(self.request)
Expand Down