web/test/unittest_application.py
changeset 6848 f87cd875c6db
parent 6797 90d687bd4c52
child 6849 5a0c2cfc19bf
equal deleted inserted replaced
6847:c1d33aff7715 6848:f87cd875c6db
   320     def test_http_auth_no_anon(self):
   320     def test_http_auth_no_anon(self):
   321         req, origsession = self.init_authentication('http')
   321         req, origsession = self.init_authentication('http')
   322         self.assertAuthFailure(req)
   322         self.assertAuthFailure(req)
   323         self.assertRaises(AuthenticationError, self.app_publish, req, 'login')
   323         self.assertRaises(AuthenticationError, self.app_publish, req, 'login')
   324         self.assertEqual(req.cnx, None)
   324         self.assertEqual(req.cnx, None)
   325         authstr = base64.encodestring('%s:%s' % (origsession.login, origsession.authinfo['password']))
   325         authstr = base64.encodestring('%s:%s' % (self.admlogin, self.admpassword))
   326         req._headers['Authorization'] = 'basic %s' % authstr
   326         req._headers['Authorization'] = 'basic %s' % authstr
   327         self.assertAuthSuccess(req, origsession)
   327         self.assertAuthSuccess(req, origsession)
   328         self.assertEqual(req.session.authinfo, {'password': origsession.authinfo['password']})
       
   329         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   328         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   330         self.assertEqual(len(self.open_sessions), 0)
   329         self.assertEqual(len(self.open_sessions), 0)
   331 
   330 
   332     def test_cookie_auth_no_anon(self):
   331     def test_cookie_auth_no_anon(self):
   333         req, origsession = self.init_authentication('cookie')
   332         req, origsession = self.init_authentication('cookie')
   334         self.assertAuthFailure(req)
   333         self.assertAuthFailure(req)
   335         form = self.app_publish(req, 'login')
   334         form = self.app_publish(req, 'login')
   336         self.failUnless('__login' in form)
   335         self.failUnless('__login' in form)
   337         self.failUnless('__password' in form)
   336         self.failUnless('__password' in form)
   338         self.assertEqual(req.cnx, None)
   337         self.assertEqual(req.cnx, None)
   339         req.form['__login'] = origsession.login
   338         req.form['__login'] = self.admlogin
   340         req.form['__password'] = origsession.authinfo['password']
   339         req.form['__password'] = self.admpassword
   341         self.assertAuthSuccess(req, origsession)
   340         self.assertAuthSuccess(req, origsession)
   342         self.assertEqual(req.session.authinfo, {'password': origsession.authinfo['password']})
       
   343         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   341         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   344         self.assertEqual(len(self.open_sessions), 0)
   342         self.assertEqual(len(self.open_sessions), 0)
   345 
   343 
   346     def test_login_by_email(self):
   344     def test_login_by_email(self):
   347         login = self.request().user.login
   345         login = self.request().user.login
   349         self.execute('INSERT EmailAddress X: X address %(address)s, U primary_email X '
   347         self.execute('INSERT EmailAddress X: X address %(address)s, U primary_email X '
   350                      'WHERE U login %(login)s', {'address': address, 'login': login})
   348                      'WHERE U login %(login)s', {'address': address, 'login': login})
   351         self.commit()
   349         self.commit()
   352         # option allow-email-login not set
   350         # option allow-email-login not set
   353         req, origsession = self.init_authentication('cookie')
   351         req, origsession = self.init_authentication('cookie')
   354         req.form['__login'] = address
   352         # req.form['__login'] = address
   355         req.form['__password'] = origsession.authinfo['password']
   353         # req.form['__password'] = self.admpassword
   356         self.assertAuthFailure(req)
   354         # self.assertAuthFailure(req)
   357         # option allow-email-login set
   355         # option allow-email-login set
   358         origsession.login = address
   356         origsession.login = address
   359         self.set_option('allow-email-login', True)
   357         self.set_option('allow-email-login', True)
   360         req.form['__login'] = address
   358         req.form['__login'] = address
   361         req.form['__password'] = origsession.authinfo['password']
   359         req.form['__password'] = self.admpassword
   362         self.assertAuthSuccess(req, origsession)
   360         self.assertAuthSuccess(req, origsession)
   363         self.assertEqual(req.session.authinfo, {'password': origsession.authinfo['password']})
       
   364         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   361         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   365         self.assertEqual(len(self.open_sessions), 0)
   362         self.assertEqual(len(self.open_sessions), 0)
   366 
   363 
   367     def _reset_cookie(self, req):
   364     def _reset_cookie(self, req):
   368         # preparing the suite of the test
   365         # preparing the suite of the test
   378     def _test_auth_anon(self, req):
   375     def _test_auth_anon(self, req):
   379         self.app.connect(req)
   376         self.app.connect(req)
   380         asession = req.session
   377         asession = req.session
   381         self.assertEqual(len(self.open_sessions), 1)
   378         self.assertEqual(len(self.open_sessions), 1)
   382         self.assertEqual(asession.login, 'anon')
   379         self.assertEqual(asession.login, 'anon')
   383         self.assertEqual(asession.authinfo['password'], 'anon')
       
   384         self.failUnless(asession.anonymous_session)
   380         self.failUnless(asession.anonymous_session)
   385         self._reset_cookie(req)
   381         self._reset_cookie(req)
   386 
   382 
   387     def _test_anon_auth_fail(self, req):
   383     def _test_anon_auth_fail(self, req):
   388         self.assertEqual(len(self.open_sessions), 1)
   384         self.assertEqual(len(self.open_sessions), 1)
   396         req, origsession = self.init_authentication('http', 'anon')
   392         req, origsession = self.init_authentication('http', 'anon')
   397         self._test_auth_anon(req)
   393         self._test_auth_anon(req)
   398         authstr = base64.encodestring('toto:pouet')
   394         authstr = base64.encodestring('toto:pouet')
   399         req._headers['Authorization'] = 'basic %s' % authstr
   395         req._headers['Authorization'] = 'basic %s' % authstr
   400         self._test_anon_auth_fail(req)
   396         self._test_anon_auth_fail(req)
   401         authstr = base64.encodestring('%s:%s' % (origsession.login, origsession.authinfo['password']))
   397         authstr = base64.encodestring('%s:%s' % (self.admlogin, self.admpassword))
   402         req._headers['Authorization'] = 'basic %s' % authstr
   398         req._headers['Authorization'] = 'basic %s' % authstr
   403         self.assertAuthSuccess(req, origsession)
   399         self.assertAuthSuccess(req, origsession)
   404         self.assertEqual(req.session.authinfo, {'password': origsession.authinfo['password']})
       
   405         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   400         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   406         self.assertEqual(len(self.open_sessions), 0)
   401         self.assertEqual(len(self.open_sessions), 0)
   407 
   402 
   408     def test_cookie_auth_anon_allowed(self):
   403     def test_cookie_auth_anon_allowed(self):
   409         req, origsession = self.init_authentication('cookie', 'anon')
   404         req, origsession = self.init_authentication('cookie', 'anon')
   410         self._test_auth_anon(req)
   405         self._test_auth_anon(req)
   411         req.form['__login'] = 'toto'
   406         req.form['__login'] = 'toto'
   412         req.form['__password'] = 'pouet'
   407         req.form['__password'] = 'pouet'
   413         self._test_anon_auth_fail(req)
   408         self._test_anon_auth_fail(req)
   414         req.form['__login'] = origsession.login
   409         req.form['__login'] = self.admlogin
   415         req.form['__password'] = origsession.authinfo['password']
   410         req.form['__password'] = self.admpassword
   416         self.assertAuthSuccess(req, origsession)
   411         self.assertAuthSuccess(req, origsession)
   417         self.assertEqual(req.session.authinfo,
       
   418                           {'password': origsession.authinfo['password']})
       
   419         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   412         self.assertRaises(LogOut, self.app_publish, req, 'logout')
   420         self.assertEqual(len(self.open_sessions), 0)
   413         self.assertEqual(len(self.open_sessions), 0)
   421 
   414 
   422     def test_non_regr_optional_first_var(self):
   415     def test_non_regr_optional_first_var(self):
   423         req = self.request()
   416         req = self.request()