On 06/05/2014 01:10 PM, shaohef(a)linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
V2 -> V3:
improve when to show timeout message
V1 -> V2:
when username or password is wrong, back to login page with an error message.
when session time out, back to login page with an error message.
ShaoHe Feng (5):
create a new login page
redirect the URL to login page when session timeout or first login
when login successfully, redirect to the last page.
login page prompts error when username or password is wrong
login page prompts error when session timeout
src/kimchi/auth.py | 51 +++++++++--
src/kimchi/config.py.in | 7 ++
src/kimchi/root.py | 38 ++++++--
src/kimchi/server.py | 2 +
ui/images/progressing.gif | Bin 0 -> 1152 bytes
ui/js/src/kimchi.main.js | 6 +-
ui/pages/login.html.tmpl | 228 ++++++++++++++++++++++++++++++++++++++++++++++
7 files changed, 310 insertions(+), 22 deletions(-)
create mode 100644 ui/images/progressing.gif
create mode 100644 ui/pages/login.html.tmpl
The tests are failing with this patch set.
======================================================================
FAIL: test_accepts (test_rest.HttpsRestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 134, in test_accepts
self.assertTrue('<!doctype html>' in resp.read().lower())
AssertionError: False is not true
======================================================================
FAIL: test_auth_bad_creds (test_rest.HttpsRestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 1459, in
test_auth_bad_creds
self.assertEquals(401, resp.status)
AssertionError: 401 != 303
======================================================================
FAIL: test_auth_browser_no_httpba (test_rest.HttpsRestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 1474, in
test_auth_browser_no_httpba
self.assertEquals(401, resp.status)
AssertionError: 401 != 303
======================================================================
FAIL: test_auth_protected (test_rest.HttpsRestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 1453, in
test_auth_protected
self.assertEquals(401, resp.status)
AssertionError: 401 != 303
======================================================================
FAIL: test_auth_unprotected (test_rest.HttpsRestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 1439, in
test_auth_unprotected
self.assertEquals(200, resp.status)
AssertionError: 200 != 303
======================================================================
FAIL: test_accepts (test_rest.RestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 134, in test_accepts
self.assertTrue('<!doctype html>' in resp.read().lower())
AssertionError: False is not true
======================================================================
FAIL: test_auth_bad_creds (test_rest.RestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 1459, in
test_auth_bad_creds
self.assertEquals(401, resp.status)
AssertionError: 401 != 303
======================================================================
FAIL: test_auth_browser_no_httpba (test_rest.RestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 1474, in
test_auth_browser_no_httpba
self.assertEquals(401, resp.status)
AssertionError: 401 != 303
======================================================================
FAIL: test_auth_protected (test_rest.RestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 1453, in
test_auth_protected
self.assertEquals(401, resp.status)
AssertionError: 401 != 303
======================================================================
FAIL: test_auth_unprotected (test_rest.RestTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_rest.py", line 1439, in
test_auth_unprotected
self.assertEquals(200, resp.status)
AssertionError: 200 != 303
======================================================================
FAIL: test_kimchi_config (test_config.ConfigTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/alinefm/kimchi/tests/test_config.py", line 173, in
test_kimchi_config
self.assertEquals(kimchi_config, configObj)
AssertionError: {'/libs': {'tools.expires.on': True,
'tools.nocache.on':
False, 'tools.staticdir.dir': '/home/alinefm/kimchi/ui/libs',
'tools.expires.secs': 31536000, 'tools.staticdir.on': True},
'/config/ui/tabs.xml': {'tools.nocache.on': True,
'tools.staticfile.on':
True, 'tools.staticfile.filename':
'/home/alinefm/kimchi/config/ui/tabs.xml'}, '/favicon.ico':
{'tools.staticfile.on': True, 'tools.staticfile.filename':
'/home/alinefm/kimchi/ui/images/logo.ico'}, '/js':
{'tools.expires.on':
True, 'tools.nocache.on': False, 'tools.staticdir.dir':
'/home/alinefm/kimchi/ui/js', 'tools.expires.secs': 31536000,
'tools.staticdir.on': True}, '/images': {'tools.nocache.on':
False,
'tools.staticdir.dir': '/home/alinefm/kimchi/ui/images',
'tools.staticdir.on': True}, '/spice.html':
{'tools.kimchiauth.on':
True}, '/login.html': {'tools.kimchisession.on': False}, '/':
{'request.methods_with_bodies': ('POST', 'PUT'),
'tools.sessions.name':
'kimchi', 'tools.proxy.on': True, 'tools.sessions.locking':
'explicit',
'tools.sessions.httponly': True, 'tools.sessions.storage_type':
'ram',
'tools.sessions.timeout': 10, 'tools.sessions.on': True,
'tools.sessions.secure': True, 'tools.nocache.on': True,
'tools.kimchisession.on': True, 'tools.trailing_slash.on': False,
'tools.kimchiauth.on': False}, '/data/screenshots':
{'tools.nocache.on':
False, 'tools.staticdir.dir': '/home/alinefm/kimchi/data/screenshots',
'tools.staticdir.on': True}, '/help': {'tools.nocache.on': False,
'tools.staticdir.index': 'en_US/index.html',
'tools.staticdir.dir':
'/home/alinefm/kimchi/ui/pages/help', 'tools.staticdir.on': True},
'/vnc_auto.html': {'tools.kimchiauth.on': True},
'/kimchi-ui.html':
{'tools.kimchiauth.on': True}, '/css': {'tools.expires.on': True,
'tools.nocache.on': False, 'tools.staticdir.dir':
'/home/alinefm/kimchi/ui/css', 'tools.expires.secs': 31536000,
'tools.staticdir.on': True}, '/data/debugreports':
{'tools.kimchiauth.on': True, 'tools.nocache.on': False,
'tools.staticdir.dir': '/home/alinefm/kimchi/data/debugreports',
'tools.staticdir.content_types': {'xz': 'application/x-xz'},
'tools.staticdir.on': True}} != {'/libs': {'tools.expires.on':
True,
'tools.nocache.on': False, 'tools.expires.secs': 31536000,
'tools.staticdir.dir': '/home/alinefm/kimchi/ui/libs',
'tools.staticdir.on': True}, '/favicon.ico':
{'tools.staticfile.on':
True, 'tools.staticfile.filename':
'/home/alinefm/kimchi/ui/images/logo.ico'}, '/js':
{'tools.expires.on':
True, 'tools.nocache.on': False, 'tools.expires.secs': 31536000,
'tools.staticdir.dir': '/home/alinefm/kimchi/ui/js',
'tools.staticdir.on': True}, '/images': {'tools.nocache.on':
False,
'tools.staticdir.dir': '/home/alinefm/kimchi/ui/images',
'tools.staticdir.on': True}, '/spice.html':
{'tools.kimchiauth.on':
True}, '/help': {'tools.nocache.on': False,
'tools.staticdir.index':
'en_US/index.html', 'tools.staticdir.dir':
'/home/alinefm/kimchi/ui/pages/help', 'tools.staticdir.on': True},
'/vnc_auto.html': {'tools.kimchiauth.on': True}, '/css':
{'tools.expires.on': True, 'tools.nocache.on': False,
'tools.expires.secs': 31536000, 'tools.staticdir.dir':
'/home/alinefm/kimchi/ui/css', 'tools.staticdir.on': True},
'/config/ui/tabs.xml': {'tools.nocache.on': True,
'tools.staticfile.on':
True, 'tools.staticfile.filename':
'/home/alinefm/kimchi/config/ui/tabs.xml'}, '/':
{'request.methods_with_bodies': ('POST', 'PUT'),
'tools.sessions.name':
'kimchi', 'tools.proxy.on': True, 'tools.sessions.locking':
'explicit',
'tools.sessions.httponly': True, 'tools.sessions.storage_type':
'ram',
'tools.sessions.timeout': 10, 'tools.sessions.on': True,
'tools.sessions.secure': True, 'tools.nocache.on': True,
'tools.trailing_slash.on': False, 'tools.kimchiauth.on': False},
'/data/screenshots': {'tools.nocache.on': False,
'tools.staticdir.dir':
'/home/alinefm/kimchi/data/screenshots', 'tools.staticdir.on': True},
'/data/debugreports': {'tools.kimchiauth.on': True,
'tools.nocache.on':
False, 'tools.staticdir.dir': '/home/alinefm/kimchi/data/debugreports',
'tools.staticdir.content_types': {'xz': 'application/x-xz'},
'tools.staticdir.on': True}}
----------------------------------------------------------------------
Ran 159 tests in 179.293s
FAILED (failures=11)
[09/Jun/2014:15:25:53] ENGINE Waiting for child threads to terminate...
make[3]: *** [check-local] Error 1
make[3]: Leaving directory `/home/alinefm/kimchi/tests'
make[2]: *** [check-am] Error 2
make[2]: Leaving directory `/home/alinefm/kimchi/tests'
make[1]: *** [check] Error 2
make[1]: Leaving directory `/home/alinefm/kimchi/tests'
make: *** [check-recursive] Error 1