... @@ -7,6 +7,8 @@ describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state do
... @@ -7,6 +7,8 @@ describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state do
end
end
end
end
let ( :admin ) { create ( :admin ) }
around do | example |
around do | example |
Timecop . freeze ( Time . zone . parse ( '2018-03-12 09:06' )) do
Timecop . freeze ( Time . zone . parse ( '2018-03-12 09:06' )) do
example . run
example . run
... @@ -16,6 +18,7 @@ describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state do
... @@ -16,6 +18,7 @@ describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state do
it 'User sees their active sessions' do
it 'User sees their active sessions' do
Capybara :: Session . new ( :session1 )
Capybara :: Session . new ( :session1 )
Capybara :: Session . new ( :session2 )
Capybara :: Session . new ( :session2 )
Capybara :: Session . new ( :session3 )
# note: headers can only be set on the non-js (aka. rack-test) driver
# note: headers can only be set on the non-js (aka. rack-test) driver
using_session :session1 do
using_session :session1 do
... @@ -37,9 +40,27 @@ describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state do
... @@ -37,9 +40,27 @@ describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state do
gitlab_sign_in ( user )
gitlab_sign_in ( user )
end
end
# set an admin session impersonating the user
using_session :session3 do
Capybara . page . driver . header (
'User-Agent' ,
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
)
gitlab_sign_in ( admin )
visit admin_user_path ( user )
click_link 'Impersonate'
end
using_session :session1 do
using_session :session1 do
visit profile_active_sessions_path
visit profile_active_sessions_path
expect ( page ). to (
have_selector ( 'ul.list-group li.list-group-item' , { text: 'Signed in on' ,
count: 2 }))
expect ( page ). to have_content (
expect ( page ). to have_content (
'127.0.0.1 ' \
'127.0.0.1 ' \
'This is your current session ' \
'This is your current session ' \
... @@ -57,33 +78,8 @@ describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state do
... @@ -57,33 +78,8 @@ describe 'Profile > Active Sessions', :clean_gitlab_redis_shared_state do
)
)
expect ( page ). to have_selector '[title="Smartphone"]' , count: 1
expect ( page ). to have_selector '[title="Smartphone"]' , count: 1
end
end
it 'User can revoke a session' , :js , :redis_session_store do
Capybara :: Session . new ( :session1 )
Capybara :: Session . new ( :session2 )
# set an additional session in another browser
using_session :session2 do
gitlab_sign_in ( user )
end
using_session :session1 do
gitlab_sign_in ( user )
visit profile_active_sessions_path
expect ( page ). to have_link ( 'Revoke' , count: 1 )
accept_confirm { click_on 'Revoke' }
expect ( page ). not_to have_link ( 'Revoke' )
end
using_session :session2 do
visit profile_active_sessions_path
expect ( page ). to have_content ( 'You need to sig n in or sign up before continuing. ' )
expect ( page ). not_ to have_content ( 'Chrome o n W indows ' )
end
end
end
end
end
end