Fixed recreate of session.

This commit is contained in:
Martin Edenhofer 2015-05-03 14:11:47 +02:00
parent 386012a4a6
commit e8d7dc2954
2 changed files with 68 additions and 5 deletions

View file

@ -46,6 +46,11 @@ returns
file.write content file.write content
} }
# destory old session if needed
if File::exist?( path )
Sessions.destory(client_id)
end
# move to destination directory # move to destination directory
FileUtils.mv( path_tmp, path ) FileUtils.mv( path_tmp, path )
@ -240,6 +245,11 @@ returns
session_dir = "#{@path}/#{client_id}" session_dir = "#{@path}/#{client_id}"
session_file = "#{session_dir}/session" session_file = "#{session_dir}/session"
data = nil data = nil
if !File.exist? session_dir
self.destory(client_id)
puts "ERROR: missing session directory for '#{client_id}', remove session."
return
end
if !File.exist? session_file if !File.exist? session_file
self.destory(client_id) self.destory(client_id)
puts "ERROR: missing session file for '#{client_id}', remove session." puts "ERROR: missing session file for '#{client_id}', remove session."

View file

@ -46,7 +46,60 @@ class SessionBasicTest < ActiveSupport::TestCase
assert_equal( nil, nil, 'check delete' ) assert_equal( nil, nil, 'check delete' )
end end
test 'b collections group' do test 'c session create / update' do
# create users
roles = Role.where( name: [ 'Agent'] )
groups = Group.all
UserInfo.current_user_id = 1
agent1 = User.create_or_update(
login: 'session-agent-1',
firstname: 'Session',
lastname: 'Agent 1',
email: 'session-agent1@example.com',
password: 'agentpw',
active: true,
roles: roles,
groups: groups,
)
agent1.roles = roles
agent1.save
# create sessions
client_id1 = '123456789'
Sessions.create( client_id1, {}, { type: 'websocket' } )
# check if session exists
assert( Sessions.session_exists?(client_id1), 'check if session exists' )
# check session data
data = Sessions.get(client_id1)
assert( data[:meta], 'check if meta exists' )
assert( data[:user], 'check if user exists' )
assert_equal( data[:user]['id'], nil, 'check if user id is correct' )
# recreate session
Sessions.create( client_id1, agent1.attributes, { type: 'websocket' } )
# check if session exists
assert( Sessions.session_exists?(client_id1), 'check if session exists' )
# check session data
data = Sessions.get(client_id1)
assert( data[:meta], 'check if meta exists' )
assert( data[:user], 'check if user exists' )
assert_equal( data[:user]['id'], agent1.id, 'check if user id is correct' )
# destroy session
Sessions.destory(client_id1)
# check if session exists
assert( !Sessions.session_exists?(client_id1), 'check if session exists' )
end
test 'c collections group' do
require 'sessions/backend/collections/group.rb' require 'sessions/backend/collections/group.rb'
UserInfo.current_user_id = 2 UserInfo.current_user_id = 2
@ -132,7 +185,7 @@ class SessionBasicTest < ActiveSupport::TestCase
user.roles = roles user.roles = roles
user.save user.save
test 'b collections organization' do test 'c collections organization' do
require 'sessions/backend/collections/organization.rb' require 'sessions/backend/collections/organization.rb'
UserInfo.current_user_id = 2 UserInfo.current_user_id = 2
user = User.lookup(id: 1) user = User.lookup(id: 1)
@ -186,7 +239,7 @@ class SessionBasicTest < ActiveSupport::TestCase
assert_equal( result1, result2, 'check collections' ) assert_equal( result1, result2, 'check collections' )
end end
test 'b rss' do test 'c rss' do
user = User.lookup(id: 1) user = User.lookup(id: 1)
collection_client1 = Sessions::Backend::Rss.new(user, false, '123-1') collection_client1 = Sessions::Backend::Rss.new(user, false, '123-1')
@ -202,7 +255,7 @@ class SessionBasicTest < ActiveSupport::TestCase
assert( !result1, 'check rss - recall' ) assert( !result1, 'check rss - recall' )
end end
test 'b activity stream' do test 'c activity stream' do
# create users # create users
roles = Role.where( name: [ 'Agent', 'Admin'] ) roles = Role.where( name: [ 'Agent', 'Admin'] )
@ -248,7 +301,7 @@ class SessionBasicTest < ActiveSupport::TestCase
assert( result1, 'check as agent1 - recall 3' ) assert( result1, 'check as agent1 - recall 3' )
end end
test 'b ticket_create' do test 'c ticket_create' do
UserInfo.current_user_id = 2 UserInfo.current_user_id = 2
user = User.lookup(id: 1) user = User.lookup(id: 1)