Merge branch 'move-admin-users-spinach-tests-to-rspec' into 'master'
Move admin users spinach tests to rspec See merge request !8395
This commit is contained in:
commit
2c58d5101c
3 changed files with 142 additions and 265 deletions
|
@ -1,65 +0,0 @@
|
||||||
@admin
|
|
||||||
Feature: Admin Users
|
|
||||||
Background:
|
|
||||||
Given I sign in as an admin
|
|
||||||
And system has users
|
|
||||||
|
|
||||||
Scenario: On Admin Users
|
|
||||||
Given I visit admin users page
|
|
||||||
Then I should see all users
|
|
||||||
|
|
||||||
Scenario: Edit user and change username to non ascii char
|
|
||||||
When I visit admin users page
|
|
||||||
And Click edit
|
|
||||||
And Input non ascii char in username
|
|
||||||
And Click save
|
|
||||||
Then See username error message
|
|
||||||
And Not changed form action url
|
|
||||||
|
|
||||||
Scenario: Show user attributes
|
|
||||||
Given user "Mike" with groups and projects
|
|
||||||
Given I visit admin users page
|
|
||||||
And click on "Mike" link
|
|
||||||
Then I should see user "Mike" details
|
|
||||||
|
|
||||||
Scenario: Edit my user attributes
|
|
||||||
Given I visit admin users page
|
|
||||||
And click edit on my user
|
|
||||||
When I submit modified user
|
|
||||||
Then I see user attributes changed
|
|
||||||
|
|
||||||
@javascript
|
|
||||||
Scenario: Remove users secondary email
|
|
||||||
Given I visit admin users page
|
|
||||||
And I view the user with secondary email
|
|
||||||
And I see the secondary email
|
|
||||||
When I click remove secondary email
|
|
||||||
Then I should not see secondary email anymore
|
|
||||||
|
|
||||||
Scenario: Show user keys
|
|
||||||
Given user "Pete" with ssh keys
|
|
||||||
And I visit admin users page
|
|
||||||
And click on user "Pete"
|
|
||||||
And click on ssh keys tab
|
|
||||||
Then I should see key list
|
|
||||||
And I click on the key title
|
|
||||||
Then I should see key details
|
|
||||||
And I click on remove key
|
|
||||||
Then I should see the key removed
|
|
||||||
|
|
||||||
Scenario: Show user identities
|
|
||||||
Given user "Pete" with twitter account
|
|
||||||
And I visit "Pete" identities page in admin
|
|
||||||
Then I should see twitter details
|
|
||||||
|
|
||||||
Scenario: Update user identities
|
|
||||||
Given user "Pete" with twitter account
|
|
||||||
And I visit "Pete" identities page in admin
|
|
||||||
And I modify twitter identity
|
|
||||||
Then I should see twitter details updated
|
|
||||||
|
|
||||||
Scenario: Remove user identities
|
|
||||||
Given user "Pete" with twitter account
|
|
||||||
And I visit "Pete" identities page in admin
|
|
||||||
And I remove twitter identity
|
|
||||||
Then I should not see twitter details
|
|
|
@ -1,167 +0,0 @@
|
||||||
class Spinach::Features::AdminUsers < Spinach::FeatureSteps
|
|
||||||
include SharedAuthentication
|
|
||||||
include SharedPaths
|
|
||||||
include SharedAdmin
|
|
||||||
|
|
||||||
before do
|
|
||||||
allow(Gitlab::OAuth::Provider).to receive(:providers).and_return([:twitter, :twitter_updated])
|
|
||||||
allow_any_instance_of(ApplicationHelper).to receive(:user_omniauth_authorize_path).and_return(root_path)
|
|
||||||
end
|
|
||||||
|
|
||||||
after do
|
|
||||||
allow(Gitlab::OAuth::Provider).to receive(:providers).and_call_original
|
|
||||||
allow_any_instance_of(ApplicationHelper).to receive(:user_omniauth_authorize_path).and_call_original
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I should see all users' do
|
|
||||||
User.all.each do |user|
|
|
||||||
expect(page).to have_content user.name
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'Click edit' do
|
|
||||||
@user = User.first
|
|
||||||
find("#edit_user_#{@user.id}").click
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'Input non ascii char in username' do
|
|
||||||
fill_in 'user_username', with: "\u3042\u3044"
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'Click save' do
|
|
||||||
click_button("Save")
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'See username error message' do
|
|
||||||
page.within "#error_explanation" do
|
|
||||||
expect(page).to have_content "Username"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'Not changed form action url' do
|
|
||||||
expect(page).to have_selector %(form[action="/admin/users/#{@user.username}"])
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I submit modified user' do
|
|
||||||
check :user_can_create_group
|
|
||||||
click_button 'Save'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I see user attributes changed' do
|
|
||||||
expect(page).to have_content 'Can create groups: Yes'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'click edit on my user' do
|
|
||||||
find("#edit_user_#{current_user.id}").click
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I view the user with secondary email' do
|
|
||||||
@user_with_secondary_email = User.last
|
|
||||||
@user_with_secondary_email.emails.new(email: "secondary@example.com")
|
|
||||||
@user_with_secondary_email.save
|
|
||||||
visit "/admin/users/#{@user_with_secondary_email.username}"
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I see the secondary email' do
|
|
||||||
expect(page).to have_content "Secondary email: #{@user_with_secondary_email.emails.last.email}"
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I click remove secondary email' do
|
|
||||||
find("#remove_email_#{@user_with_secondary_email.emails.last.id}").click
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I should not see secondary email anymore' do
|
|
||||||
expect(page).not_to have_content "Secondary email:"
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'user "Mike" with groups and projects' do
|
|
||||||
user = create(:user, name: 'Mike')
|
|
||||||
|
|
||||||
project = create(:empty_project)
|
|
||||||
project.team << [user, :developer]
|
|
||||||
|
|
||||||
group = create(:group)
|
|
||||||
group.add_developer(user)
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'click on "Mike" link' do
|
|
||||||
click_link "Mike"
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I should see user "Mike" details' do
|
|
||||||
expect(page).to have_content 'Account'
|
|
||||||
expect(page).to have_content 'Personal projects limit'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'user "Pete" with ssh keys' do
|
|
||||||
user = create(:user, name: 'Pete')
|
|
||||||
create(:key, user: user, title: "ssh-rsa Key1", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4FIEBXGi4bPU8kzxMefudPIJ08/gNprdNTaO9BR/ndy3+58s2HCTw2xCHcsuBmq+TsAqgEidVq4skpqoTMB+Uot5Uzp9z4764rc48dZiI661izoREoKnuRQSsRqUTHg5wrLzwxlQbl1MVfRWQpqiz/5KjBC7yLEb9AbusjnWBk8wvC1bQPQ1uLAauEA7d836tgaIsym9BrLsMVnR4P1boWD3Xp1B1T/ImJwAGHvRmP/ycIqmKdSpMdJXwxcb40efWVj0Ibbe7ii9eeoLdHACqevUZi6fwfbymdow+FeqlkPoHyGg3Cu4vD/D8+8cRc7mE/zGCWcQ15Var83Tczour Key1")
|
|
||||||
create(:key, user: user, title: "ssh-rsa Key2", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQSTWXhJAX/He+nG78MiRRRn7m0Pb0XbcgTxE0etArgoFoh9WtvDf36HG6tOSg/0UUNcp0dICsNAmhBKdncp6cIyPaXJTURPRAGvhI0/VDk4bi27bRnccGbJ/hDaUxZMLhhrzY0r22mjVf8PF6dvv5QUIQVm1/LeaWYsHHvLgiIjwrXirUZPnFrZw6VLREoBKG8uWvfSXw1L5eapmstqfsME8099oi+vWLR8MgEysZQmD28M73fgW4zek6LDQzKQyJx9nB+hJkKUDvcuziZjGmRFlNgSA2mguERwL1OXonD8WYUrBDGKroIvBT39zS5d9tQDnidEJZ9Y8gv5ViYP7x Key2")
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'click on user "Pete"' do
|
|
||||||
click_link 'Pete'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I should see key list' do
|
|
||||||
expect(page).to have_content 'ssh-rsa Key2'
|
|
||||||
expect(page).to have_content 'ssh-rsa Key1'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I click on the key title' do
|
|
||||||
click_link 'ssh-rsa Key2'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I should see key details' do
|
|
||||||
expect(page).to have_content 'ssh-rsa Key2'
|
|
||||||
expect(page).to have_content 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQSTWXhJAX/He+nG78MiRRRn7m0Pb0XbcgTxE0etArgoFoh9WtvDf36HG6tOSg/0UUNcp0dICsNAmhBKdncp6cIyPaXJTURPRAGvhI0/VDk4bi27bRnccGbJ/hDaUxZMLhhrzY0r22mjVf8PF6dvv5QUIQVm1/LeaWYsHHvLgiIjwrXirUZPnFrZw6VLREoBKG8uWvfSXw1L5eapmstqfsME8099oi+vWLR8MgEysZQmD28M73fgW4zek6LDQzKQyJx9nB+hJkKUDvcuziZjGmRFlNgSA2mguERwL1OXonD8WYUrBDGKroIvBT39zS5d9tQDnidEJZ9Y8gv5ViYP7x Key2'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I click on remove key' do
|
|
||||||
click_link 'Remove'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I should see the key removed' do
|
|
||||||
expect(page).not_to have_content 'ssh-rsa Key2'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'user "Pete" with twitter account' do
|
|
||||||
@user = create(:user, name: 'Pete')
|
|
||||||
@user.identities.create!(extern_uid: '123456', provider: 'twitter')
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I visit "Pete" identities page in admin' do
|
|
||||||
visit admin_user_identities_path(@user)
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I should see twitter details' do
|
|
||||||
expect(page).to have_content 'Pete'
|
|
||||||
expect(page).to have_content 'twitter'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I modify twitter identity' do
|
|
||||||
find('.table').find(:link, 'Edit').click
|
|
||||||
fill_in 'identity_extern_uid', with: '654321'
|
|
||||||
select 'twitter_updated', from: 'identity_provider'
|
|
||||||
click_button 'Save changes'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I should see twitter details updated' do
|
|
||||||
expect(page).to have_content 'Pete'
|
|
||||||
expect(page).to have_content 'twitter_updated'
|
|
||||||
expect(page).to have_content '654321'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I remove twitter identity' do
|
|
||||||
click_link 'Delete'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'I should not see twitter details' do
|
|
||||||
expect(page).to have_content 'Pete'
|
|
||||||
expect(page).not_to have_content 'twitter'
|
|
||||||
end
|
|
||||||
|
|
||||||
step 'click on ssh keys tab' do
|
|
||||||
click_link 'SSH keys'
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,9 +1,13 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe "Admin::Users", feature: true do
|
describe "Admin::Users", feature: true do
|
||||||
include WaitForAjax
|
include WaitForAjax
|
||||||
|
|
||||||
before { login_as :admin }
|
let!(:user) do
|
||||||
|
create(:omniauth_user, provider: 'twitter', extern_uid: '123456')
|
||||||
|
end
|
||||||
|
|
||||||
|
let!(:current_user) { login_as :admin }
|
||||||
|
|
||||||
describe "GET /admin/users" do
|
describe "GET /admin/users" do
|
||||||
before do
|
before do
|
||||||
|
@ -15,8 +19,10 @@ describe "Admin::Users", feature: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "has users list" do
|
it "has users list" do
|
||||||
expect(page).to have_content(@user.email)
|
expect(page).to have_content(current_user.email)
|
||||||
expect(page).to have_content(@user.name)
|
expect(page).to have_content(current_user.name)
|
||||||
|
expect(page).to have_content(user.email)
|
||||||
|
expect(page).to have_content(user.name)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'Two-factor Authentication filters' do
|
describe 'Two-factor Authentication filters' do
|
||||||
|
@ -40,8 +46,6 @@ describe "Admin::Users", feature: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'counts users who have not enabled 2FA' do
|
it 'counts users who have not enabled 2FA' do
|
||||||
create(:user)
|
|
||||||
|
|
||||||
visit admin_users_path
|
visit admin_users_path
|
||||||
|
|
||||||
page.within('.filter-two-factor-disabled small') do
|
page.within('.filter-two-factor-disabled small') do
|
||||||
|
@ -50,8 +54,6 @@ describe "Admin::Users", feature: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'filters by users who have not enabled 2FA' do
|
it 'filters by users who have not enabled 2FA' do
|
||||||
user = create(:user)
|
|
||||||
|
|
||||||
visit admin_users_path
|
visit admin_users_path
|
||||||
click_link '2FA Disabled'
|
click_link '2FA Disabled'
|
||||||
|
|
||||||
|
@ -110,10 +112,10 @@ describe "Admin::Users", feature: true do
|
||||||
describe "GET /admin/users/:id" do
|
describe "GET /admin/users/:id" do
|
||||||
it "has user info" do
|
it "has user info" do
|
||||||
visit admin_users_path
|
visit admin_users_path
|
||||||
click_link @user.name
|
click_link user.name
|
||||||
|
|
||||||
expect(page).to have_content(@user.email)
|
expect(page).to have_content(user.email)
|
||||||
expect(page).to have_content(@user.name)
|
expect(page).to have_content(user.name)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'Impersonation' do
|
describe 'Impersonation' do
|
||||||
|
@ -126,7 +128,7 @@ describe "Admin::Users", feature: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not show impersonate button for admin itself' do
|
it 'does not show impersonate button for admin itself' do
|
||||||
visit admin_user_path(@user)
|
visit admin_user_path(current_user)
|
||||||
|
|
||||||
expect(page).not_to have_content('Impersonate')
|
expect(page).not_to have_content('Impersonate')
|
||||||
end
|
end
|
||||||
|
@ -158,7 +160,7 @@ describe "Admin::Users", feature: true do
|
||||||
it 'logs out of impersonated user back to original user' do
|
it 'logs out of impersonated user back to original user' do
|
||||||
find(:css, 'li.impersonation a').click
|
find(:css, 'li.impersonation a').click
|
||||||
|
|
||||||
expect(page.find(:css, '.header-user .profile-link')['data-user']).to eql(@user.username)
|
expect(page.find(:css, '.header-user .profile-link')['data-user']).to eql(current_user.username)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'is redirected back to the impersonated users page in the admin after stopping' do
|
it 'is redirected back to the impersonated users page in the admin after stopping' do
|
||||||
|
@ -171,15 +173,15 @@ describe "Admin::Users", feature: true do
|
||||||
|
|
||||||
describe 'Two-factor Authentication status' do
|
describe 'Two-factor Authentication status' do
|
||||||
it 'shows when enabled' do
|
it 'shows when enabled' do
|
||||||
@user.update_attribute(:otp_required_for_login, true)
|
user.update_attribute(:otp_required_for_login, true)
|
||||||
|
|
||||||
visit admin_user_path(@user)
|
visit admin_user_path(user)
|
||||||
|
|
||||||
expect_two_factor_status('Enabled')
|
expect_two_factor_status('Enabled')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'shows when disabled' do
|
it 'shows when disabled' do
|
||||||
visit admin_user_path(@user)
|
visit admin_user_path(user)
|
||||||
|
|
||||||
expect_two_factor_status('Disabled')
|
expect_two_factor_status('Disabled')
|
||||||
end
|
end
|
||||||
|
@ -194,9 +196,8 @@ describe "Admin::Users", feature: true do
|
||||||
|
|
||||||
describe "GET /admin/users/:id/edit" do
|
describe "GET /admin/users/:id/edit" do
|
||||||
before do
|
before do
|
||||||
@simple_user = create(:user)
|
|
||||||
visit admin_users_path
|
visit admin_users_path
|
||||||
click_link "edit_user_#{@simple_user.id}"
|
click_link "edit_user_#{user.id}"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "has user edit page" do
|
it "has user edit page" do
|
||||||
|
@ -214,45 +215,58 @@ describe "Admin::Users", feature: true do
|
||||||
click_button "Save changes"
|
click_button "Save changes"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "shows page with new data" do
|
it "shows page with new data" do
|
||||||
expect(page).to have_content('bigbang@mail.com')
|
expect(page).to have_content('bigbang@mail.com')
|
||||||
expect(page).to have_content('Big Bang')
|
expect(page).to have_content('Big Bang')
|
||||||
end
|
end
|
||||||
|
|
||||||
it "changes user entry" do
|
it "changes user entry" do
|
||||||
@simple_user.reload
|
user.reload
|
||||||
expect(@simple_user.name).to eq('Big Bang')
|
expect(user.name).to eq('Big Bang')
|
||||||
expect(@simple_user.is_admin?).to be_truthy
|
expect(user.is_admin?).to be_truthy
|
||||||
expect(@simple_user.password_expires_at).to be <= Time.now
|
expect(user.password_expires_at).to be <= Time.now
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'update username to non ascii char' do
|
||||||
|
it do
|
||||||
|
fill_in 'user_username', with: '\u3042\u3044'
|
||||||
|
click_button('Save')
|
||||||
|
|
||||||
|
page.within '#error_explanation' do
|
||||||
|
expect(page).to have_content('Username')
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(page).to have_selector(%(form[action="/admin/users/#{user.username}"]))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "GET /admin/users/:id/projects" do
|
describe "GET /admin/users/:id/projects" do
|
||||||
before do
|
let(:group) { create(:group) }
|
||||||
@group = create(:group)
|
let!(:project) { create(:project, group: group) }
|
||||||
@project = create(:project, group: @group)
|
|
||||||
@simple_user = create(:user)
|
|
||||||
@group.add_developer(@simple_user)
|
|
||||||
|
|
||||||
visit projects_admin_user_path(@simple_user)
|
before do
|
||||||
|
group.add_developer(user)
|
||||||
|
|
||||||
|
visit projects_admin_user_path(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "lists group projects" do
|
it "lists group projects" do
|
||||||
within(:css, '.append-bottom-default + .panel') do
|
within(:css, '.append-bottom-default + .panel') do
|
||||||
expect(page).to have_content 'Group projects'
|
expect(page).to have_content 'Group projects'
|
||||||
expect(page).to have_link @group.name, admin_group_path(@group)
|
expect(page).to have_link group.name, admin_group_path(group)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'allows navigation to the group details' do
|
it 'allows navigation to the group details' do
|
||||||
within(:css, '.append-bottom-default + .panel') do
|
within(:css, '.append-bottom-default + .panel') do
|
||||||
click_link @group.name
|
click_link group.name
|
||||||
end
|
end
|
||||||
within(:css, 'h3.page-title') do
|
within(:css, 'h3.page-title') do
|
||||||
expect(page).to have_content "Group: #{@group.name}"
|
expect(page).to have_content "Group: #{group.name}"
|
||||||
end
|
end
|
||||||
expect(page).to have_content @project.name
|
expect(page).to have_content project.name
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'shows the group access level' do
|
it 'shows the group access level' do
|
||||||
|
@ -270,4 +284,99 @@ describe "Admin::Users", feature: true do
|
||||||
expect(page).not_to have_selector('.group_member')
|
expect(page).not_to have_selector('.group_member')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'show user attributes' do
|
||||||
|
it do
|
||||||
|
visit admin_users_path
|
||||||
|
|
||||||
|
click_link user.name
|
||||||
|
|
||||||
|
expect(page).to have_content 'Account'
|
||||||
|
expect(page).to have_content 'Personal projects limit'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'remove users secondary email', js: true do
|
||||||
|
let!(:secondary_email) do
|
||||||
|
create :email, email: 'secondary@example.com', user: user
|
||||||
|
end
|
||||||
|
|
||||||
|
it do
|
||||||
|
visit admin_user_path(user.username)
|
||||||
|
|
||||||
|
expect(page).to have_content("Secondary email: #{secondary_email.email}")
|
||||||
|
|
||||||
|
find("#remove_email_#{secondary_email.id}").click
|
||||||
|
|
||||||
|
expect(page).not_to have_content(secondary_email.email)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'show user keys' do
|
||||||
|
let!(:key1) do
|
||||||
|
create(:key, user: user, title: "ssh-rsa Key1", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4FIEBXGi4bPU8kzxMefudPIJ08/gNprdNTaO9BR/ndy3+58s2HCTw2xCHcsuBmq+TsAqgEidVq4skpqoTMB+Uot5Uzp9z4764rc48dZiI661izoREoKnuRQSsRqUTHg5wrLzwxlQbl1MVfRWQpqiz/5KjBC7yLEb9AbusjnWBk8wvC1bQPQ1uLAauEA7d836tgaIsym9BrLsMVnR4P1boWD3Xp1B1T/ImJwAGHvRmP/ycIqmKdSpMdJXwxcb40efWVj0Ibbe7ii9eeoLdHACqevUZi6fwfbymdow+FeqlkPoHyGg3Cu4vD/D8+8cRc7mE/zGCWcQ15Var83Tczour Key1")
|
||||||
|
end
|
||||||
|
|
||||||
|
let!(:key2) do
|
||||||
|
create(:key, user: user, title: "ssh-rsa Key2", key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQSTWXhJAX/He+nG78MiRRRn7m0Pb0XbcgTxE0etArgoFoh9WtvDf36HG6tOSg/0UUNcp0dICsNAmhBKdncp6cIyPaXJTURPRAGvhI0/VDk4bi27bRnccGbJ/hDaUxZMLhhrzY0r22mjVf8PF6dvv5QUIQVm1/LeaWYsHHvLgiIjwrXirUZPnFrZw6VLREoBKG8uWvfSXw1L5eapmstqfsME8099oi+vWLR8MgEysZQmD28M73fgW4zek6LDQzKQyJx9nB+hJkKUDvcuziZjGmRFlNgSA2mguERwL1OXonD8WYUrBDGKroIvBT39zS5d9tQDnidEJZ9Y8gv5ViYP7x Key2")
|
||||||
|
end
|
||||||
|
|
||||||
|
it do
|
||||||
|
visit admin_users_path
|
||||||
|
|
||||||
|
click_link user.name
|
||||||
|
click_link 'SSH keys'
|
||||||
|
|
||||||
|
expect(page).to have_content(key1.title)
|
||||||
|
expect(page).to have_content(key2.title)
|
||||||
|
|
||||||
|
click_link key2.title
|
||||||
|
|
||||||
|
expect(page).to have_content(key2.title)
|
||||||
|
expect(page).to have_content(key2.key)
|
||||||
|
|
||||||
|
click_link 'Remove'
|
||||||
|
|
||||||
|
expect(page).not_to have_content(key2.title)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'show user identities' do
|
||||||
|
it 'shows user identities' do
|
||||||
|
visit admin_user_identities_path(user)
|
||||||
|
|
||||||
|
expect(page).to have_content(user.name)
|
||||||
|
expect(page).to have_content('twitter')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'update user identities' do
|
||||||
|
before do
|
||||||
|
allow(Gitlab::OAuth::Provider).to receive(:providers).and_return([:twitter, :twitter_updated])
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'modifies twitter identity' do
|
||||||
|
visit admin_user_identities_path(user)
|
||||||
|
|
||||||
|
find('.table').find(:link, 'Edit').click
|
||||||
|
fill_in 'identity_extern_uid', with: '654321'
|
||||||
|
select 'twitter_updated', from: 'identity_provider'
|
||||||
|
click_button 'Save changes'
|
||||||
|
|
||||||
|
expect(page).to have_content(user.name)
|
||||||
|
expect(page).to have_content('twitter_updated')
|
||||||
|
expect(page).to have_content('654321')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'remove user with identities' do
|
||||||
|
it 'removes user with twitter identity' do
|
||||||
|
visit admin_user_identities_path(user)
|
||||||
|
|
||||||
|
click_link 'Delete'
|
||||||
|
|
||||||
|
expect(page).to have_content(user.name)
|
||||||
|
expect(page).not_to have_content('twitter')
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue