diff options
Diffstat (limited to 'spec/views/profiles')
-rw-r--r-- | spec/views/profiles/keys/_key.html.haml_spec.rb | 79 | ||||
-rw-r--r-- | spec/views/profiles/show.html.haml_spec.rb | 28 |
2 files changed, 87 insertions, 20 deletions
diff --git a/spec/views/profiles/keys/_key.html.haml_spec.rb b/spec/views/profiles/keys/_key.html.haml_spec.rb index d2e27bd2ee0..2ddbd3e6e14 100644 --- a/spec/views/profiles/keys/_key.html.haml_spec.rb +++ b/spec/views/profiles/keys/_key.html.haml_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'profiles/keys/_key.html.haml' do +RSpec.describe 'profiles/keys/_key.html.haml', feature_category: :authentication_and_authorization do let_it_be(:user) { create(:user) } before do @@ -24,18 +24,58 @@ RSpec.describe 'profiles/keys/_key.html.haml' do expect(rendered).to have_text(key.title) expect(rendered).to have_css('[data-testid="key-icon"]') expect(rendered).to have_text(key.fingerprint) - expect(rendered).to have_text(l(key.last_used_at, format: "%b %d, %Y")) expect(rendered).to have_text(l(key.created_at, format: "%b %d, %Y")) expect(rendered).to have_text(key.expires_at.to_date) - expect(response).to render_template(partial: 'shared/ssh_keys/_key_delete') + expect(rendered).to have_button('Remove') + end + + context 'when disable_ssh_key_used_tracking is enabled' do + before do + stub_feature_flags(disable_ssh_key_used_tracking: true) + end + + it 'renders "Unavailable" for last used' do + render + + expect(rendered).to have_text('Last used: Unavailable') + end + end + + context 'when disable_ssh_key_used_tracking is disabled' do + before do + stub_feature_flags(disable_ssh_key_used_tracking: false) + end + + it 'displays the correct last used date' do + render + + expect(rendered).to have_text(l(key.last_used_at, format: "%b %d, %Y")) + end + + context 'when the key has not been used' do + let_it_be(:key) do + create(:personal_key, + user: user, + last_used_at: nil) + end + + it 'renders "Never" for last used' do + render + + expect(rendered).to have_text('Last used: Never') + end + end end context 'displays the usage type' do - where(:usage_type, :usage_type_text) do + where(:usage_type, :usage_type_text, :displayed_buttons, :hidden_buttons, :revoke_ssh_signatures_ff) do [ - [:auth, 'Authentication'], - [:auth_and_signing, 'Authentication & Signing'], - [:signing, 'Signing'] + [:auth, 'Authentication', ['Remove'], ['Revoke'], true], + [:auth_and_signing, 'Authentication & Signing', %w[Remove Revoke], [], true], + [:signing, 'Signing', %w[Remove Revoke], [], true], + [:auth, 'Authentication', ['Remove'], ['Revoke'], false], + [:auth_and_signing, 'Authentication & Signing', %w[Remove], ['Revoke'], false], + [:signing, 'Signing', %w[Remove], ['Revoke'], false] ] end @@ -47,20 +87,20 @@ RSpec.describe 'profiles/keys/_key.html.haml' do expect(rendered).to have_text(usage_type_text) end - end - end - context 'when the key has not been used' do - let_it_be(:key) do - create(:personal_key, - user: user, - last_used_at: nil) - end + it 'renders remove/revoke buttons', :aggregate_failures do + stub_feature_flags(revoke_ssh_signatures: revoke_ssh_signatures_ff) - it 'renders "Never" for last used' do - render + render - expect(rendered).to have_text('Last used: Never') + displayed_buttons.each do |button| + expect(rendered).to have_text(button) + end + + hidden_buttons.each do |button| + expect(rendered).not_to have_text(button) + end + end end end @@ -98,7 +138,8 @@ RSpec.describe 'profiles/keys/_key.html.haml' do it 'does not render the partial' do render - expect(response).not_to render_template(partial: 'shared/ssh_keys/_key_delete') + expect(response).not_to have_text('Remove') + expect(response).not_to have_text('Revoke') end end diff --git a/spec/views/profiles/show.html.haml_spec.rb b/spec/views/profiles/show.html.haml_spec.rb index 5751d47ee97..d5cb5694031 100644 --- a/spec/views/profiles/show.html.haml_spec.rb +++ b/spec/views/profiles/show.html.haml_spec.rb @@ -3,7 +3,8 @@ require 'spec_helper' RSpec.describe 'profiles/show' do - let(:user) { create(:user) } + let_it_be(:user_status) { create(:user_status, clear_status_at: 8.hours.from_now) } + let_it_be(:user) { user_status.user } before do assign(:user, user) @@ -23,5 +24,30 @@ RSpec.describe 'profiles/show' do "rel=\"noopener noreferrer\">#{_('Learn more.')}</a>" expect(rendered.include?(expected_link_html)).to eq(true) end + + it 'renders required hidden inputs for set status form' do + render + + expect(rendered).to have_field( + 'user[status][emoji]', + with: user_status.emoji, + type: :hidden + ) + expect(rendered).to have_field( + 'user[status][message]', + with: user_status.message, + type: :hidden + ) + expect(rendered).to have_field( + 'user[status][availability]', + with: user_status.availability, + type: :hidden + ) + expect(rendered).to have_field( + 'user[status][clear_status_after]', + with: user_status.clear_status_at.to_s(:iso8601), + type: :hidden + ) + end end end |