def test_login__no_identity_url(self):
        from nuorisovaalit.views.login import login
        from pyramid.url import route_url

        renderer = self.config.testing_add_template('templates/login.pt')
        self.config.add_route('login', '')
        request = DummyRequest()

        login(request)
        renderer.assert_(action_url=route_url('login', request),
                         message=None)
    def test_login__valid_submission(self, openid_initiate):
        from nuorisovaalit.views.login import login

        self.config.add_route('login', '')
        self.config.add_settings({
            'nuorisovaalit.openid_provider': 'http://oid.fi',
        })
        request = DummyRequest(post={
            'identify': '1',
        })

        login(request)
        self.assertEquals((('http://oid.fi', request), {}), openid_initiate.call_args)
    def test_login__csrf_mismatch(self):
        from nuorisovaalit.views.login import login

        self.config.add_route('login', '')
        request = testing.DummyRequest()
        token = request.session.new_csrf_token()
        request.POST = {
            'identify': u'1',
            'username': u'john.doe',
            'password': u'thisiswrong',
            'csrf_token': u'invalid',
        }

        self.failIf(token == u'invalid')
        self.assertRaises(Forbidden, lambda: login(request))