1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Profile account page', :js, feature_category: :user_profile do
include Spec::Support::Helpers::ModalHelpers
let(:user) { create(:user) }
before do
sign_in(user)
end
describe 'when I delete my account' do
before do
visit profile_account_path
# Scroll page to the bottom to make Delete account button visible
execute_script('window.scrollTo(0, document.body.scrollHeight)')
end
it { expect(page).to have_content('Delete account') }
it 'does not immediately delete the account' do
click_button 'Delete account'
expect(User.exists?(user.id)).to be_truthy
end
it 'deletes user', :js, :sidekiq_inline do
click_button 'Delete account'
fill_in 'password', with: user.password
page.within '.modal' do
click_button 'Delete account'
end
expect(page).to have_content('Account scheduled for removal')
expect(
Users::GhostUserMigration.where(user: user, initiator_user: user)
).to be_exists
end
it 'shows invalid password flash message', :js do
click_button 'Delete account'
fill_in 'password', with: 'testing123'
page.within '.modal' do
click_button 'Delete account'
end
expect(page).to have_content('Invalid password')
end
it 'does not show delete button when user owns a group' do
group = create(:group)
group.add_owner(user)
visit profile_account_path
expect(page).not_to have_button('Delete account')
expect(page).to have_content("Your account is currently the sole owner in the following:")
expect(page).to have_link(group.name, href: group.web_url)
end
it 'does not show delete button when user owns an organization and feature flag ui_for_organizations is enabled' do
stub_feature_flags(ui_for_organizations: true)
organization = create(:organization)
create(:organization_owner, user: user, organization: organization)
visit profile_account_path
expect(page).not_to have_button('Delete account')
expect(page).to have_content("Your account is currently the sole owner in the following:")
expect(page).to have_link(organization.name, href: organization.web_url)
end
end
describe 'when I reset my feed token' do
context 'when resetting succeeds' do
it 'allows resetting of feed token' do
visit user_settings_personal_access_tokens_path
previous_token = ''
within_testid('feed-token-container') do
previous_token = find_field('Feed token').value
click_link('reset this token')
end
accept_gl_confirm
expect(page).to have_content('Feed token was successfully reset')
within_testid('feed-token-container') do
click_button('Click to reveal')
expect(find_field('Feed token').value).not_to eq(previous_token)
end
end
end
context 'when resetting fails' do
before do
allow_next_instance_of(Users::UpdateService) do |service|
allow(service).to receive(:execute).and_return({ status: :error })
end
end
it 'shows an error and the old feed token' do
visit user_settings_personal_access_tokens_path
previous_token = ''
within_testid('feed-token-container') do
previous_token = find_field('Feed token').value
click_link('reset this token')
end
accept_gl_confirm
expect(page).to have_content('Feed token could not be reset')
within_testid('feed-token-container') do
click_button('Click to reveal')
expect(find_field('Feed token').value).to eq(previous_token)
end
end
end
end
it 'allows resetting of incoming email token' do
allow(Gitlab.config.incoming_email).to receive(:enabled).and_return(true)
visit user_settings_personal_access_tokens_path
previous_token = ''
within_testid('incoming-email-token-container') do
previous_token = find_field('Incoming email token').value
click_link('reset this token')
end
accept_gl_confirm
within_testid('incoming-email-token-container') do
click_button('Click to reveal')
expect(find_field('Incoming email token').value).not_to eq(previous_token)
end
end
describe 'when I change my username' do
before do
visit profile_account_path
end
it 'changes my username' do
fill_in 'username-change-input', with: 'new-username'
find_by_testid('username-change-confirmation-modal').click
page.within('.modal') do
find('.js-modal-action-primary').click
end
expect(page).to have_content('new-username')
end
end
end
|