changeset 1418:b097c4e328a2 beta

Fixes tests
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 04 Jul 2011 14:58:18 +0200
parents 5875955def39
children febb3f954509
files rhodecode/tests/__init__.py rhodecode/tests/functional/test_login.py setup.cfg
diffstat 3 files changed, 85 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/tests/__init__.py	Mon Jul 04 10:59:01 2011 +0200
+++ b/rhodecode/tests/__init__.py	Mon Jul 04 14:58:18 2011 +0200
@@ -27,7 +27,8 @@
 import pylons.test
 
 __all__ = ['environ', 'url', 'TestController', 'TESTS_TMP_PATH', 'HG_REPO',
-           'GIT_REPO', 'NEW_HG_REPO', 'NEW_GIT_REPO', 'HG_FORK', 'GIT_FORK', ]
+           'GIT_REPO', 'NEW_HG_REPO', 'NEW_GIT_REPO', 'HG_FORK', 'GIT_FORK',
+           'TEST_ADMIN_USER', 'TEST_ADMIN_PASS' ]
 
 # Invoke websetup with the current config file
 #SetupCommand('setup-app').run([config_file])
@@ -49,6 +50,9 @@
 HG_FORK = 'vcs_test_hg_fork'
 GIT_FORK = 'vcs_test_git_fork'
 
+TEST_ADMIN_USER = 'test_admin'
+TEST_ADMIN_PASS = 'test12'
+
 class TestController(TestCase):
 
     def __init__(self, *args, **kwargs):
@@ -61,7 +65,7 @@
         self.index_location = config['app_conf']['index_dir']
         TestCase.__init__(self, *args, **kwargs)
 
-    def log_user(self, username='test_admin', password='test12'):
+    def log_user(self, username=TEST_ADMIN_USER, password=TEST_ADMIN_PASS):
         response = self.app.post(url(controller='login', action='index'),
                                  {'username':username,
                                   'password':password})
@@ -76,6 +80,7 @@
 
 
     def checkSessionFlash(self, response, msg):
+        print response
         self.assertTrue('flash' in response.session)
         self.assertTrue(msg in response.session['flash'][0][1])
 
--- a/rhodecode/tests/functional/test_login.py	Mon Jul 04 10:59:01 2011 +0200
+++ b/rhodecode/tests/functional/test_login.py	Mon Jul 04 14:58:18 2011 +0200
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 from rhodecode.tests import *
 from rhodecode.model.db import User
+from rhodecode.lib import generate_api_key
 from rhodecode.lib.auth import check_password
 
 
@@ -8,39 +9,42 @@
 
     def test_index(self):
         response = self.app.get(url(controller='login', action='index'))
-        assert response.status == '200 OK', 'Wrong response from login page got %s' % response.status
+        self.assertEqual(response.status, '200 OK')
         # Test response...
 
     def test_login_admin_ok(self):
         response = self.app.post(url(controller='login', action='index'),
                                  {'username':'test_admin',
                                   'password':'test12'})
-        assert response.status == '302 Found', 'Wrong response code from login got %s' % response.status
-        assert response.session['rhodecode_user'].username == 'test_admin', 'wrong logged in user'
+        self.assertEqual(response.status, '302 Found')
+        self.assertEqual(response.session['rhodecode_user'].username ,
+                         'test_admin')
         response = response.follow()
-        assert '%s repository' % HG_REPO in response.body
+        self.assertTrue('%s repository' % HG_REPO in response.body)
 
     def test_login_regular_ok(self):
         response = self.app.post(url(controller='login', action='index'),
                                  {'username':'test_regular',
                                   'password':'test12'})
-        print response
-        assert response.status == '302 Found', 'Wrong response code from login got %s' % response.status
-        assert response.session['rhodecode_user'].username == 'test_regular', 'wrong logged in user'
+
+        self.assertEqual(response.status, '302 Found')
+        self.assertEqual(response.session['rhodecode_user'].username ,
+                         'test_regular')
         response = response.follow()
-        assert '%s repository' % HG_REPO in response.body
-        assert '<a title="Admin" href="/_admin">' not in response.body
+        self.assertTrue('%s repository' % HG_REPO in response.body)
+        self.assertTrue('<a title="Admin" href="/_admin">' not in response.body)
 
     def test_login_ok_came_from(self):
         test_came_from = '/_admin/users'
-        response = self.app.post(url(controller='login', action='index', came_from=test_came_from),
+        response = self.app.post(url(controller='login', action='index',
+                                     came_from=test_came_from),
                                  {'username':'test_admin',
                                   'password':'test12'})
-        assert response.status == '302 Found', 'Wrong response code from came from redirection'
+        self.assertEqual(response.status, '302 Found')
         response = response.follow()
 
-        assert response.status == '200 OK', 'Wrong response from login page got %s' % response.status
-        assert 'Users administration' in response.body, 'No proper title in response'
+        self.assertEqual(response.status, '200 OK')
+        self.assertTrue('Users administration' in response.body)
 
 
     def test_login_short_password(self):
@@ -48,24 +52,24 @@
                                  {'username':'test_admin',
                                   'password':'as'})
         self.assertEqual(response.status, '200 OK')
-        print response.body
+
         self.assertTrue('Enter 3 characters or more' in response.body)
 
     def test_login_wrong_username_password(self):
         response = self.app.post(url(controller='login', action='index'),
                                  {'username':'error',
                                   'password':'test12'})
-        assert response.status == '200 OK', 'Wrong response from login page'
+        self.assertEqual(response.status , '200 OK')
 
-        assert 'invalid user name' in response.body, 'No error username message in response'
-        assert 'invalid password' in response.body, 'No error password message in response'
+        self.assertTrue('invalid user name' in response.body)
+        self.assertTrue('invalid password' in response.body)
 
     #==========================================================================
     # REGISTRATIONS
     #==========================================================================
     def test_register(self):
         response = self.app.get(url(controller='login', action='register'))
-        assert 'Sign Up to RhodeCode' in response.body, 'wrong page for user registration'
+        self.assertTrue('Sign Up to RhodeCode' in response.body)
 
     def test_register_err_same_username(self):
         response = self.app.post(url(controller='login', action='register'),
@@ -76,8 +80,8 @@
                                              'name':'test',
                                              'lastname':'test'})
 
-        assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status
-        assert 'This username already exists' in response.body
+        self.assertEqual(response.status , '200 OK')
+        self.assertTrue('This username already exists' in response.body)
 
     def test_register_err_same_email(self):
         response = self.app.post(url(controller='login', action='register'),
@@ -88,7 +92,7 @@
                                              'name':'test',
                                              'lastname':'test'})
 
-        assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status
+        self.assertEqual(response.status , '200 OK')
         assert 'This e-mail address is already taken' in response.body
 
     def test_register_err_same_email_case_sensitive(self):
@@ -99,7 +103,7 @@
                                              'email':'TesT_Admin@mail.COM',
                                              'name':'test',
                                              'lastname':'test'})
-        assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status
+        self.assertEqual(response.status , '200 OK')
         assert 'This e-mail address is already taken' in response.body
 
     def test_register_err_wrong_data(self):
@@ -110,7 +114,7 @@
                                              'email':'goodmailm',
                                              'name':'test',
                                              'lastname':'test'})
-        assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status
+        self.assertEqual(response.status , '200 OK')
         assert 'An email address must contain a single @' in response.body
         assert 'Enter a value 6 characters long or more' in response.body
 
@@ -124,8 +128,7 @@
                                              'name':'test',
                                              'lastname':'test'})
 
-        print response.body
-        assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status
+        self.assertEqual(response.status , '200 OK')
         assert 'An email address must contain a single @' in response.body
         assert ('Username may only contain '
                 'alphanumeric characters underscores, '
@@ -141,7 +144,7 @@
                                              'name':'test',
                                              'lastname':'test'})
 
-        assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status
+        self.assertEqual(response.status , '200 OK')
         assert 'An email address must contain a single @' in response.body
         assert 'This username already exists' in response.body
 
@@ -156,8 +159,7 @@
                                              'name':'test',
                                              'lastname':'test'})
 
-        print response.body
-        assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status
+        self.assertEqual(response.status , '200 OK')
         assert 'Invalid characters in password' in response.body
 
 
@@ -170,8 +172,7 @@
                                              'name':'test',
                                              'lastname':'test'})
 
-        assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status
-        print response.body
+        self.assertEqual(response.status , '200 OK')
         assert 'Password do not match' in response.body
 
     def test_register_ok(self):
@@ -188,7 +189,7 @@
                                              'email':email,
                                              'name':name,
                                              'lastname':lastname})
-        assert response.status == '302 Found', 'Wrong response from register page got %s' % response.status
+        self.assertEqual(response.status , '302 Found')
         assert 'You have successfully registered into rhodecode' in response.session['flash'][0], 'No flash message about user registration'
 
         ret = self.sa.query(User).filter(User.username == 'test_regular4').one()
@@ -206,8 +207,9 @@
         assert "This e-mail address doesn't exist" in response.body, 'Missing error message about wrong email'
 
     def test_forgot_password(self):
-        response = self.app.get(url(controller='login', action='password_reset'))
-        assert response.status == '200 OK', 'Wrong response from login page got %s' % response.status
+        response = self.app.get(url(controller='login',
+                                    action='password_reset'))
+        self.assertEqual(response.status , '200 OK')
 
         username = 'test_password_reset_1'
         password = 'qweqwe'
@@ -215,16 +217,45 @@
         name = 'passwd'
         lastname = 'reset'
 
-        response = self.app.post(url(controller='login', action='register'),
-                                            {'username':username,
-                                             'password':password,
-                                             'password_confirmation':password,
-                                             'email':email,
-                                             'name':name,
-                                             'lastname':lastname})
-        #register new user for email test
-        response = self.app.post(url(controller='login', action='password_reset'),
-                                            {'email':email, })
-        print response.session['flash']
-        assert 'You have successfully registered into rhodecode' in response.session['flash'][0], 'No flash message about user registration'
-        assert 'Your new password was sent' in response.session['flash'][1], 'No flash message about password reset'
+        new = User()
+        new.username = username
+        new.password = password
+        new.email = email
+        new.name = name
+        new.lastname = lastname
+        new.api_key = generate_api_key(username)
+        self.sa.add(new)
+        self.sa.commit()
+
+        response = self.app.post(url(controller='login',
+                                     action='password_reset'),
+                                 {'email':email, })
+
+        self.checkSessionFlash(response, 'Your password reset link was sent')
+
+        response = response.follow()
+
+        # BAD KEY
+
+        key = "bad"
+        response = self.app.get(url(controller='login',
+                                    action='password_reset_confirmation',
+                                    key=key))
+        self.assertEqual(response.status, '302 Found')
+        self.assertTrue(response.location.endswith(url('reset_password')))
+
+        # GOOD KEY
+
+        key = User.by_username(username).api_key
+
+        response = self.app.get(url(controller='login',
+                                    action='password_reset_confirmation',
+                                    key=key))
+        self.assertEqual(response.status, '302 Found')
+        self.assertTrue(response.location.endswith(url('login_home')))
+
+        self.checkSessionFlash(response,
+                               ('Your password reset was successful, '
+                                'new password has been sent to your email'))
+
+        response = response.follow()
--- a/setup.cfg	Mon Jul 04 10:59:01 2011 +0200
+++ b/setup.cfg	Mon Jul 04 14:58:18 2011 +0200
@@ -10,6 +10,7 @@
 verbosity=2
 with-pylons=test.ini
 detailed-errors=1
+nologcapture=1
 
 # Babel configuration
 [compile_catalog]