def test_vote_finish__declined(self): from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import vote_finish from pyramid.session import UnencryptedCookieSessionFactoryConfig from webob.exc import HTTPFound session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.assertEquals(False, voter.has_preference()) self.config.set_session_factory(UnencryptedCookieSessionFactoryConfig) self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('close-window', '/close-window') self.config.add_route('vote-finish', '/valmis') request = DummyRequest() csrf_token = request.session.new_csrf_token() request.POST = { 'form.submitted': u'1', 'csrf_token': csrf_token, 'use_open_identity': u'no', } response = vote_finish(request) self.assertTrue(isinstance(response, HTTPFound)) self.assertEquals('http://example.com/close-window', response.location) self.assertEquals(False, voter.accept_openid) self.assertEquals(True, voter.has_preference())
def test_vote_finish__accepted_empty_fields(self): from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import vote_finish from pyramid.session import UnencryptedCookieSessionFactoryConfig session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.assertEquals(False, voter.has_preference()) self.config.set_session_factory(UnencryptedCookieSessionFactoryConfig) self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('close-window', '/close-window') self.config.add_route('vote-finish', '/valmis') request = DummyRequest() csrf_token = request.session.new_csrf_token() request.POST = { 'csrf_token': csrf_token, 'use_open_identity': 'yes', 'gsm': u'', 'email': u'', 'street': u'', 'zipcode': u'', 'city': u'', 'form.submitted': u'1', } self.assertEquals({ 'action_url': 'http://example.com/valmis', 'csrf_token': csrf_token, 'accept_openid': True, 'message': u'Äänesi on tallennettu', 'has_preference': False, 'pref_selected': True, 'errors': [ u'GSM-numero on virheellinen, esimerkki oikeasta muodosta "0501234567".', u'Sähköpostiosoite on virheellinen, esimerkki oikeasta muodosta "*****@*****.**".', u'Katuosoite puuttuu.', u'Postinumero on virheellinen, esimerkki oikeasta muodosta "12345".', u'Postitoimipaikka puuttuu.', ], 'voter': voter, 'gsm': u'', 'email': u'', 'street': u'', 'zipcode': u'', 'city': u'', }, vote_finish(request)) self.assertEquals(False, voter.has_preference())
def test_vote_finish__message_vote_saved(self): from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import vote_finish from pyramid.session import UnencryptedCookieSessionFactoryConfig session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.config.set_session_factory(UnencryptedCookieSessionFactoryConfig) self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('vote-finish', '/valmis') self.assertEquals(u'Äänesi on tallennettu', vote_finish(DummyRequest())['message'])
def test_vote_finish__preference_selection_missing(self): """Tests a case where the OpenID selection (yes or no) is missing.""" from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import vote_finish from pyramid.session import UnencryptedCookieSessionFactoryConfig session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.assertEquals(False, voter.has_preference()) self.config.set_session_factory(UnencryptedCookieSessionFactoryConfig) self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('close-window', '/close-window') self.config.add_route('vote-finish', '/valmis') request = DummyRequest() csrf_token = request.session.new_csrf_token() request.POST = { 'form.submitted': u'1', 'csrf_token': csrf_token, 'gsm': u' 00358- 40 1234 567', 'email': u'[email protected] \t', 'street': u' söme stréét', 'zipcode': u' 09123', 'city': u' citÜ', } self.assertEquals({ 'action_url': 'http://example.com/valmis', 'csrf_token': csrf_token, 'accept_openid': None, 'message': u'Äänesi on tallennettu', 'has_preference': False, 'pref_selected': False, 'errors': [ u'Valitse haluatko verkkovaikuttajaidentiteetin.', ], 'voter': voter, 'gsm': u' 00358- 40 1234 567', 'email': u'[email protected] \t', 'street': u' söme stréét', 'zipcode': u' 09123', 'city': u' citÜ', }, vote_finish(request)) self.failIf(voter.has_preference())
def test_vote_finish__message_already_voted(self): from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import vote_finish from pyramid.session import UnencryptedCookieSessionFactoryConfig session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.config.set_session_factory(UnencryptedCookieSessionFactoryConfig) self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('vote-finish', '/valmis') request = DummyRequest() request.session['vote_registered'] = 'yes' self.assertEquals(u'Olet jo äänestänyt', vote_finish(request)['message'])
def test_vote_finish__invalid_csrf_token(self): from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import vote_finish from pyramid.session import UnencryptedCookieSessionFactoryConfig session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.config.set_session_factory(UnencryptedCookieSessionFactoryConfig) self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('exit-voting', '/exit') self.config.add_route('vote-finish', '/valmis') request = DummyRequest() csrf_token = request.session.new_csrf_token() request.POST = { 'form.submitted': u'1', 'csrf_token': 'invalid {0}'.format(csrf_token), } self.assertRaises(Forbidden, lambda: vote_finish(request))
def test_vote_finish__accepted_valid_submission(self): from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import vote_finish from pyramid.session import UnencryptedCookieSessionFactoryConfig from webob.exc import HTTPFound session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.assertEquals(False, voter.has_preference()) self.config.set_session_factory(UnencryptedCookieSessionFactoryConfig) self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('close-window', '/close-window') self.config.add_route('vote-finish', '/valmis') request = DummyRequest() csrf_token = request.session.new_csrf_token() request.POST = { 'form.submitted': u'1', 'csrf_token': csrf_token, 'use_open_identity': 'yes', 'gsm': u' 00358- 40 1234 567', 'email': u'[email protected] \t', 'street': u' söme stréét', 'zipcode': u' 09123', 'city': u' citÜ', } response = vote_finish(request) self.assertTrue(isinstance(response, HTTPFound)) self.assertEquals('http://example.com/close-window', response.location) self.assertEquals(True, voter.accept_openid) self.assertTrue(voter.has_preference()) self.assertEquals(u'00358401234567', voter.gsm) self.assertEquals(u'*****@*****.**', voter.email) self.assertEquals(u'söme stréét, 09123, citÜ', voter.address)
def test_vote_finish__no_pref_selected_valid_address(self): from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import vote_finish from pyramid.session import UnencryptedCookieSessionFactoryConfig session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.assertEquals(False, voter.has_preference()) voter.address = u'Äyrävänpolku 666, 09123 Mikä-mikämaa, Pohjoisnapa' self.config.set_session_factory(UnencryptedCookieSessionFactoryConfig) self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('exit-voting', '/exit') self.config.add_route('vote-finish', '/valmis') request = DummyRequest() csrf_token = request.session.new_csrf_token() request.POST['csrf_token'] = csrf_token self.assertEquals({ 'action_url': 'http://example.com/valmis', 'csrf_token': csrf_token, 'accept_openid': None, 'message': u'Äänesi on tallennettu', 'has_preference': False, 'pref_selected': False, 'errors': [], 'voter': voter, 'gsm': voter.gsm, 'email': voter.email, 'street': u'Äyrävänpolku 666', 'zipcode': u'09123', 'city': u'Mikä-mikämaa, Pohjoisnapa', }, vote_finish(request)) self.assertEquals(False, voter.has_preference())
def test_vote_finish__unauthenticated(self): from nuorisovaalit.views.voting import vote_finish populate_testing_db() self.assertRaises(Forbidden, lambda: vote_finish(DummyRequest()))