Skip to content

Commit

Permalink
test/budgeting//votes: add and adapt tests for tokens stored in dict
Browse files Browse the repository at this point in the history
  • Loading branch information
rine authored and fuzzylogic2000 committed Jan 25, 2023
1 parent d1c8b84 commit ac8f378
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 38 deletions.
2 changes: 1 addition & 1 deletion tests/budgeting/test_proposals_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def test_proposal_list_mixins(
phase_factory, proposal_factory, phases.SupportPhase
)
token = voting_token_factory(module=module)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse("proposals-list", kwargs={"module_pk": module.pk})

Expand Down
4 changes: 2 additions & 2 deletions tests/budgeting/test_proposals_api_filtering.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def test_proposal_list_filter_mixin(

url = reverse("proposals-list", kwargs={"module_pk": module.pk})
token = voting_token_factory(module=module)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

response = apiclient.get(url)

Expand Down Expand Up @@ -323,7 +323,7 @@ def test_proposal_own_vote_filter(
apiclient, module, proposal_factory, voting_token_factory, token_vote_factory
):
token = voting_token_factory(module=module)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)
other_token = voting_token_factory(module=module)

proposal_factory(module=module)
Expand Down
2 changes: 1 addition & 1 deletion tests/budgeting/test_proposals_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def test_proposal_serializer(

url = reverse("proposals-list", kwargs={"module_pk": module.pk})
token = voting_token_factory(module=module)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

proposal_rated = proposal_factory(
module=module, category=category, budget=25, point_label=""
Expand Down
4 changes: 2 additions & 2 deletions tests/budgeting/test_proposals_templatetags.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from adhocracy4.test.helpers import setup_phase
from meinberlin.apps.budgeting import phases
from meinberlin.apps.budgeting.models import Proposal
from tests.votes.test_token_vote_api import add_token_to_session


@pytest.mark.django_db
Expand Down Expand Up @@ -79,8 +80,7 @@ def test_react_proposals_vote(
}

token = voting_token_factory(module=module)
request.session["voting_token"] = token.token
request.session.save()
add_token_to_session(request.session, token)
token_vote_factory(token=token, content_object=proposal)

with freeze_phase(phase):
Expand Down
4 changes: 2 additions & 2 deletions tests/budgeting/test_views_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def test_list_view_token_form(

response = client.post(url, data)
assert response.status_code == 200
assert "voting_token" in client.session
assert "voting_tokens" in client.session
assert "token_form" in response.context

other_module = module_factory()
Expand All @@ -95,7 +95,7 @@ def test_list_view_token_form(
assert "token" in response.context_data["token_form"].errors
msg = _("This token is not valid")
assert msg in response.context_data["token_form"].errors["token"]
assert "voting_token" not in client.session
assert "voting_tokens" not in client.session


@pytest.mark.django_db
Expand Down
62 changes: 32 additions & 30 deletions tests/votes/test_token_vote_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@
from meinberlin.apps.votes.models import TokenVote


def add_token_to_session(apiclient, token):
session = apiclient.session
session["voting_token"] = token.token
def add_token_to_session(session, token):
if "voting_tokens" in session:
session["voting_tokens"][str(token.module.id)] = token.token
else:
session["voting_tokens"] = {str(token.module.id): token.token}
session.save()


Expand All @@ -27,7 +29,7 @@ def test_voting_phase_active_valid_token_anonymous_can_vote(
proposal_ct = ContentType.objects.get_for_model(proposal.__class__)
token = voting_token_factory(module=module)

add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-list",
Expand All @@ -53,7 +55,7 @@ def test_voting_phase_active_valid_token_user_can_vote(
proposal_ct = ContentType.objects.get_for_model(proposal.__class__)
token = voting_token_factory(module=module)

add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-list",
Expand All @@ -80,7 +82,7 @@ def test_voting_phase_active_valid_token_admin_can_vote(
proposal_ct = ContentType.objects.get_for_model(proposal.__class__)
token = voting_token_factory(module=module)

add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-list",
Expand Down Expand Up @@ -111,7 +113,7 @@ def test_voting_phase_inactive_valid_token_anonymous_cannot_vote(
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
data = {"object_id": proposal.pk}
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
response = apiclient.post(url, data, format="json")
Expand All @@ -135,7 +137,7 @@ def test_voting_phase_inactive_valid_token_user_cannot_vote(
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
data = {"object_id": proposal.pk}
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
assert apiclient.login(username=user.email, password="password")
Expand All @@ -160,7 +162,7 @@ def test_voting_phase_inactive_valid_token_admin_can_vote(
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
data = {"object_id": proposal.pk}
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
assert apiclient.login(username=admin.email, password="password")
Expand Down Expand Up @@ -189,7 +191,7 @@ def test_voting_phase_active_valid_token_anonymous_cannot_vote_on_archived(
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
data = {"object_id": proposal.pk}
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
response = apiclient.post(url, data, format="json")
Expand Down Expand Up @@ -217,7 +219,7 @@ def test_voting_phase_active_valid_token_user_cannot_vote_on_archived(
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
data = {"object_id": proposal.pk}
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
assert apiclient.login(username=user.email, password="password")
Expand Down Expand Up @@ -246,7 +248,7 @@ def test_voting_phase_active_valid_token_admin_can_vote_on_archived(
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
data = {"object_id": proposal.pk}
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
assert apiclient.login(username=admin.email, password="password")
Expand Down Expand Up @@ -308,7 +310,7 @@ def test_voting_phase_active_token_wrong_module(
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
data = {"object_id": proposal.pk}
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
with translation.override("en_GB"):
Expand Down Expand Up @@ -342,7 +344,7 @@ def test_voting_phase_active_token_inactive(
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
data = {"object_id": proposal.pk}
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
with translation.override("en_GB"):
Expand Down Expand Up @@ -378,7 +380,7 @@ def test_voting_phase_active_token_no_votes_left(
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
data = {"object_id": proposal.pk}
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

assert TokenVote.objects.all().count() == 5

Expand Down Expand Up @@ -409,7 +411,7 @@ def test_token_kept_in_session_on_login(
"tokenvotes-list",
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
data = {"object_id": proposal.pk}
Expand All @@ -419,7 +421,7 @@ def test_token_kept_in_session_on_login(
assert apiclient.login(username=admin.email, password="password")
data = {"object_id": other_proposal.pk}
session = apiclient.session
assert "voting_token" in session
assert "voting_tokens" in session
response = apiclient.post(url, data, format="json")
assert response.status_code == status.HTTP_201_CREATED

Expand All @@ -444,7 +446,7 @@ def test_token_deleted_from_session_on_logout(
"tokenvotes-list",
kwargs={"module_pk": module.pk, "content_type": proposal_ct.id},
)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

with freeze_phase(phase):
assert apiclient.login(username=user.email, password="password")
Expand All @@ -456,7 +458,7 @@ def test_token_deleted_from_session_on_logout(

data = {"object_id": other_proposal.pk}
session = apiclient.session
assert "voting_token" not in session
assert "voting_tokens" not in session
response = apiclient.post(url, data, format="json")
assert response.status_code == status.HTTP_403_FORBIDDEN

Expand All @@ -472,7 +474,7 @@ def test_voting_phase_active_valid_token_anonymous_can_delete_vote(
proposal_ct = ContentType.objects.get_for_model(proposal.__class__)
token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -507,7 +509,7 @@ def test_voting_phase_active_valid_token_user_can_delete_vote(
proposal_ct = ContentType.objects.get_for_model(proposal.__class__)
token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -543,7 +545,7 @@ def test_voting_phase_active_valid_token_admin_can_delete_vote(
proposal_ct = ContentType.objects.get_for_model(proposal.__class__)
token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -574,7 +576,7 @@ def test_voting_phase_inactive_valid_token_anonymous_cannot_delete_vote(
proposal_ct = ContentType.objects.get_for_model(proposal.__class__)
token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -609,7 +611,7 @@ def test_voting_phase_inactive_valid_token_user_cannot_delete_vote(
proposal_ct = ContentType.objects.get_for_model(proposal.__class__)
token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -645,7 +647,7 @@ def test_voting_phase_inactive_valid_token_admin_can_delete_vote(
proposal_ct = ContentType.objects.get_for_model(proposal.__class__)
token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -680,7 +682,7 @@ def test_voting_phase_active_valid_token_anonymous_cannot_delete_archived(

token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -719,7 +721,7 @@ def test_voting_phase_active_valid_token_user_cannot_delete_archived(

token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -759,7 +761,7 @@ def test_voting_phase_active_valid_token_admin_can_delete_archived(

token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -838,7 +840,7 @@ def test_voting_phase_active_token_wrong_vote_cannot_delete(
token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
other_token = voting_token_factory(module=module)
add_token_to_session(apiclient, other_token)
add_token_to_session(apiclient.session, other_token)

url = reverse(
"tokenvotes-detail",
Expand Down Expand Up @@ -875,7 +877,7 @@ def test_voting_phase_active_token_inactive_cannot_delete(

token = voting_token_factory(module=module)
token_vote_factory(token=token, content_object=proposal)
add_token_to_session(apiclient, token)
add_token_to_session(apiclient.session, token)

token.is_active = False
token.save()
Expand Down

0 comments on commit ac8f378

Please sign in to comment.