diff options
Diffstat (limited to 'spec/views')
14 files changed, 166 insertions, 186 deletions
diff --git a/spec/views/admin/sessions/new.html.haml_spec.rb b/spec/views/admin/sessions/new.html.haml_spec.rb index 05601e5471e..b52ad0f9505 100644 --- a/spec/views/admin/sessions/new.html.haml_spec.rb +++ b/spec/views/admin/sessions/new.html.haml_spec.rb @@ -6,20 +6,26 @@ describe 'admin/sessions/new.html.haml' do let(:user) { create(:admin) } before do + disable_all_signin_methods + allow(view).to receive(:current_user).and_return(user) - allow(view).to receive(:omniauth_enabled?).and_return(false) end context 'internal admin user' do + before do + allow(view).to receive(:allow_admin_mode_password_authentication_for_web?).and_return(true) + end + it 'shows enter password form' do render + expect(rendered).to have_selector('[data-qa-selector="sign_in_tab"]') expect(rendered).to have_css('#login-pane.active') - expect(rendered).to have_selector('input[name="user[password]"]') + expect(rendered).to have_selector('[data-qa-selector="password_field"]') end it 'warns authentication not possible if password not set' do - allow(user).to receive(:require_password_creation_for_web?).and_return(true) + allow(view).to receive(:allow_admin_mode_password_authentication_for_web?).and_return(false) render @@ -39,8 +45,53 @@ describe 'admin/sessions/new.html.haml' do expect(rendered).to have_css('.omniauth-container') expect(rendered).to have_content _('Sign in with') - expect(rendered).not_to have_content _('No authentication methods configured.') end end + + context 'ldap authentication' do + let(:user) { create(:omniauth_user, :admin, extern_uid: 'my-uid', provider: 'ldapmain') } + let(:server) { { provider_name: 'ldapmain', label: 'LDAP' }.with_indifferent_access } + + before do + enable_ldap + end + + it 'is shown when enabled' do + render + + expect(rendered).to have_selector('[data-qa-selector="ldap_tab"]') + expect(rendered).to have_css('.login-box#ldapmain') + expect(rendered).to have_field('LDAP Username') + expect(rendered).not_to have_content('No authentication methods configured') + end + + it 'is not shown when LDAP sign in is disabled' do + disable_ldap_sign_in + + render + + expect(rendered).not_to have_selector('[data-qa-selector="ldap_tab"]') + expect(rendered).not_to have_field('LDAP Username') + expect(rendered).to have_content('No authentication methods configured') + end + + def enable_ldap + allow(view).to receive(:ldap_servers).and_return([server]) + allow(view).to receive(:form_based_providers).and_return([:ldapmain]) + allow(view).to receive(:omniauth_callback_path).with(:user, 'ldapmain').and_return('/ldapmain') + allow(view).to receive(:ldap_sign_in_enabled?).and_return(true) + end + + def disable_ldap_sign_in + allow(view).to receive(:ldap_sign_in_enabled?).and_return(false) + allow(view).to receive(:ldap_servers).and_return([]) + end + end + + def disable_all_signin_methods + allow(view).to receive(:password_authentication_enabled_for_web?).and_return(false) + allow(view).to receive(:omniauth_enabled?).and_return(false) + allow(view).to receive(:ldap_sign_in_enabled?).and_return(false) + end end diff --git a/spec/views/admin/users/_user.html.haml_spec.rb b/spec/views/admin/users/_user.html.haml_spec.rb index 96d84229d94..de5a291a6f8 100644 --- a/spec/views/admin/users/_user.html.haml_spec.rb +++ b/spec/views/admin/users/_user.html.haml_spec.rb @@ -9,7 +9,7 @@ describe 'admin/users/_user.html.haml' do context 'internal users' do context 'when showing a `Ghost User`' do - let(:user) { create(:user, ghost: true) } + let(:user) { create(:user, :ghost) } it 'does not render action buttons' do render @@ -27,6 +27,16 @@ describe 'admin/users/_user.html.haml' do expect(rendered).not_to have_selector('.table-action-buttons') end end + + context 'when showing a `Migration User`' do + let(:user) { create(:user, user_type: :migration_bot) } + + it 'does not render action buttons' do + render + + expect(rendered).not_to have_selector('.table-action-buttons') + end + end end context 'when showing an external user' do diff --git a/spec/views/devise/sessions/new.html.haml_spec.rb b/spec/views/devise/sessions/new.html.haml_spec.rb index 66afc2af7ce..27bd683bbf0 100644 --- a/spec/views/devise/sessions/new.html.haml_spec.rb +++ b/spec/views/devise/sessions/new.html.haml_spec.rb @@ -54,14 +54,14 @@ describe 'devise/sessions/new' do def enable_ldap stub_ldap_setting(enabled: true) - assign(:ldap_servers, [server]) + allow(view).to receive(:ldap_servers).and_return([server]) allow(view).to receive(:form_based_providers).and_return([:ldapmain]) allow(view).to receive(:omniauth_callback_path).with(:user, 'ldapmain').and_return('/ldapmain') end def disable_ldap_sign_in allow(view).to receive(:ldap_sign_in_enabled?).and_return(false) - assign(:ldap_servers, []) + allow(view).to receive(:ldap_servers).and_return([]) end def disable_captcha diff --git a/spec/views/devise/shared/_signin_box.html.haml_spec.rb b/spec/views/devise/shared/_signin_box.html.haml_spec.rb index f8867477603..dfd8c315e50 100644 --- a/spec/views/devise/shared/_signin_box.html.haml_spec.rb +++ b/spec/views/devise/shared/_signin_box.html.haml_spec.rb @@ -6,7 +6,7 @@ describe 'devise/shared/_signin_box' do describe 'Crowd form' do before do stub_devise - assign(:ldap_servers, []) + allow(view).to receive(:ldap_servers).and_return([]) allow(view).to receive(:current_application_settings).and_return(Gitlab::CurrentSettings.current_application_settings) allow(view).to receive(:captcha_enabled?).and_return(false) allow(view).to receive(:captcha_on_login_required?).and_return(false) diff --git a/spec/views/help/index.html.haml_spec.rb b/spec/views/help/index.html.haml_spec.rb index 98040da9d2c..3831ddacb72 100644 --- a/spec/views/help/index.html.haml_spec.rb +++ b/spec/views/help/index.html.haml_spec.rb @@ -53,6 +53,18 @@ describe 'help/index' do end end + describe 'Markdown rendering' do + before do + assign(:help_index, 'Welcome to [GitLab](https://about.gitlab.com/) Documentation.') + end + + it 'renders Markdown' do + render + + expect(rendered).to have_link('GitLab', href: 'https://about.gitlab.com/') + end + end + def stub_user(user = double) allow(view).to receive(:user_signed_in?).and_return(user) end diff --git a/spec/views/help/show.html.haml_spec.rb b/spec/views/help/show.html.haml_spec.rb new file mode 100644 index 00000000000..539c647c1d3 --- /dev/null +++ b/spec/views/help/show.html.haml_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'help/show' do + describe 'Markdown rendering' do + before do + assign(:path, 'ssh/README') + assign(:markdown, 'Welcome to [GitLab](https://about.gitlab.com/) Documentation.') + end + + it 'renders Markdown' do + render + + expect(rendered).to have_link('GitLab', href: 'https://about.gitlab.com/') + end + end +end diff --git a/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb index aee2b0baf92..2f8a75a81c8 100644 --- a/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb @@ -58,15 +58,6 @@ describe 'layouts/nav/sidebar/_admin' do it_behaves_like 'page has active sub tab', 'Users' end - context 'on logs' do - before do - allow(controller).to receive(:controller_name).and_return('logs') - end - - it_behaves_like 'page has active tab', 'Monitoring' - it_behaves_like 'page has active sub tab', 'Logs' - end - context 'on messages' do before do allow(controller).to receive(:controller_name).and_return('broadcast_messages') diff --git a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb index cd622807c09..3d5c34ae1e0 100644 --- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb @@ -136,27 +136,37 @@ describe 'layouts/nav/sidebar/_project' do end describe 'operations settings tab' do - before do - project.update!(archived: project_archived) - end + describe 'archive projects' do + before do + project.update!(archived: project_archived) + end - context 'when project is archived' do - let(:project_archived) { true } + context 'when project is archived' do + let(:project_archived) { true } - it 'does not show the operations settings tab' do - render + it 'does not show the operations settings tab' do + render - expect(rendered).not_to have_link('Operations', href: project_settings_operations_path(project)) + expect(rendered).not_to have_link('Operations', href: project_settings_operations_path(project)) + end end - end - context 'when project is active' do - let(:project_archived) { false } + context 'when project is active' do + let(:project_archived) { false } - it 'shows the operations settings tab' do + it 'shows the operations settings tab' do + render + + expect(rendered).to have_link('Operations', href: project_settings_operations_path(project)) + end + end + end + + describe 'Alert Management' do + it 'shows the Alerts sidebar entry' do render - expect(rendered).to have_link('Operations', href: project_settings_operations_path(project)) + expect(rendered).to have_css('a[title="Alerts"]') end end end @@ -186,4 +196,30 @@ describe 'layouts/nav/sidebar/_project' do end end end + + describe 'project access tokens' do + context 'self-managed instance' do + before do + allow(Gitlab).to receive(:com?).and_return(false) + end + + it 'displays "Access Tokens" nav item' do + render + + expect(rendered).to have_link('Access Tokens', href: project_settings_access_tokens_path(project)) + end + end + + context 'gitlab.com' do + before do + allow(Gitlab).to receive(:com?).and_return(true) + end + + it 'does not display "Access Tokens" nav item' do + render + + expect(rendered).not_to have_link('Access Tokens', href: project_settings_access_tokens_path(project)) + end + end + end end diff --git a/spec/views/profiles/show.html.haml_spec.rb b/spec/views/profiles/show.html.haml_spec.rb index e1c21f87780..14e6feed3ab 100644 --- a/spec/views/profiles/show.html.haml_spec.rb +++ b/spec/views/profiles/show.html.haml_spec.rb @@ -19,48 +19,4 @@ describe 'profiles/show' do expect(rendered).to have_field('user_id', with: user.id) end end - - context 'gitlab.com organization field' do - before do - allow(Gitlab).to receive(:com?).and_return(true) - end - - context 'when `:gitlab_employee_badge` feature flag is enabled' do - context 'and when user has an `@gitlab.com` email address' do - let(:user) { create(:user, email: 'test@gitlab.com') } - - it 'displays the organization field as `readonly` with a `value` of `GitLab`' do - render - - expect(rendered).to have_selector('#user_organization[readonly][value="GitLab"]') - end - end - - context 'and when a user does not have an `@gitlab.com` email' do - let(:user) { create(:user, email: 'test@example.com') } - - it 'displays an editable organization field' do - render - - expect(rendered).to have_selector('#user_organization:not([readonly]):not([value="GitLab"])') - end - end - end - - context 'when `:gitlab_employee_badge` feature flag is disabled' do - before do - stub_feature_flags(gitlab_employee_badge: false) - end - - context 'and when a user has an `@gitlab.com` email' do - let(:user) { create(:user, email: 'test@gitlab.com') } - - it 'displays an editable organization field' do - render - - expect(rendered).to have_selector('#user_organization:not([readonly]):not([value="GitLab"])') - end - end - end - end end diff --git a/spec/views/projects/issues/_related_branches.html.haml_spec.rb b/spec/views/projects/issues/_related_branches.html.haml_spec.rb index a6817e3fdbf..6c9bbaea38c 100644 --- a/spec/views/projects/issues/_related_branches.html.haml_spec.rb +++ b/spec/views/projects/issues/_related_branches.html.haml_spec.rb @@ -5,23 +5,25 @@ require 'spec_helper' describe 'projects/issues/_related_branches' do include Devise::Test::ControllerHelpers - let(:user) { create(:user) } - let(:project) { create(:project, :repository) } - let(:branch) { project.repository.find_branch('feature') } - let!(:pipeline) { create(:ci_pipeline, project: project, sha: branch.dereferenced_target.id, ref: 'feature') } + let(:pipeline) { build(:ci_pipeline, :success) } + let(:status) { pipeline.detailed_status(build(:user)) } before do - assign(:project, project) - assign(:related_branches, ['feature']) - - project.add_developer(user) - allow(view).to receive(:current_user).and_return(user) + assign(:related_branches, [ + { name: 'other', link: 'link-to-other', pipeline_status: nil }, + { name: 'feature', link: 'link-to-feature', pipeline_status: status } + ]) render end - it 'shows the related branches with their build status' do - expect(rendered).to match('feature') + it 'shows the related branches with their build status', :aggregate_failures do + expect(rendered).to have_text('feature') + expect(rendered).to have_text('other') + expect(rendered).to have_link(href: 'link-to-feature') + expect(rendered).to have_link(href: 'link-to-other') expect(rendered).to have_css('.related-branch-ci-status') + expect(rendered).to have_css('.ci-status-icon') + expect(rendered).to have_css('.related-branch-info') end end diff --git a/spec/views/projects/issues/show.html.haml_spec.rb b/spec/views/projects/issues/show.html.haml_spec.rb index fb09840c8f4..60a541916e9 100644 --- a/spec/views/projects/issues/show.html.haml_spec.rb +++ b/spec/views/projects/issues/show.html.haml_spec.rb @@ -3,18 +3,7 @@ require 'spec_helper' describe 'projects/issues/show' do - let(:project) { create(:project, :repository) } - let(:issue) { create(:issue, project: project, author: user) } - let(:user) { create(:user) } - - before do - assign(:project, project) - assign(:issue, issue) - assign(:noteable, issue) - stub_template 'shared/issuable/_sidebar' => '' - stub_template 'projects/issues/_discussion' => '' - allow(view).to receive(:user_status).and_return('') - end + include_context 'project show action' context 'when the issue is closed' do before do @@ -152,18 +141,4 @@ describe 'projects/issues/show' do expect(rendered).not_to have_selector('#js-sentry-error-stack-trace') end end - - context 'when issue is created by a GitLab team member' do - let(:user) { create(:user, email: 'test@gitlab.com') } - - before do - allow(Gitlab).to receive(:com?).and_return(true) - end - - it 'renders an employee badge next to their name' do - render - - expect(rendered).to have_selector('[aria-label="GitLab Team Member"]') - end - end end diff --git a/spec/views/projects/merge_requests/show.html.haml_spec.rb b/spec/views/projects/merge_requests/show.html.haml_spec.rb index 67e7c3cf2fb..665003d137a 100644 --- a/spec/views/projects/merge_requests/show.html.haml_spec.rb +++ b/spec/views/projects/merge_requests/show.html.haml_spec.rb @@ -3,45 +3,7 @@ require 'spec_helper' describe 'projects/merge_requests/show.html.haml' do - include Devise::Test::ControllerHelpers - include ProjectForksHelper - - let(:user) { create(:user) } - let(:project) { create(:project, :public, :repository) } - let(:forked_project) { fork_project(project, user, repository: true) } - let(:unlink_project) { Projects::UnlinkForkService.new(forked_project, user) } - let(:note) { create(:note_on_merge_request, project: project, noteable: closed_merge_request) } - - let(:closed_merge_request) do - create(:closed_merge_request, - source_project: forked_project, - target_project: project, - author: user) - end - - def preload_view_requirements - # This will load the status fields of the author of the note and merge request - # to avoid queries in when rendering the view being tested. - closed_merge_request.author.status - note.author.status - end - - before do - assign(:project, project) - assign(:merge_request, closed_merge_request) - assign(:commits_count, 0) - assign(:note, note) - assign(:noteable, closed_merge_request) - assign(:notes, []) - assign(:pipelines, Ci::Pipeline.none) - assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) - - preload_view_requirements - - allow(view).to receive_messages(current_user: user, - can?: true, - current_application_settings: Gitlab::CurrentSettings.current_application_settings) - end + include_context 'merge request show action' describe 'merge request assignee sidebar' do context 'when assignee is allowed to merge' do @@ -92,24 +54,4 @@ describe 'projects/merge_requests/show.html.haml' do expect(rendered).to have_css('a', visible: false, text: 'Close') end end - - context 'when merge request is created by a GitLab team member' do - let(:user) { create(:user, email: 'test@gitlab.com') } - - before do - allow(Gitlab).to receive(:com?).and_return(true) - end - - it 'renders an employee badge next to their name' do - render - - expect(rendered).to have_selector('[aria-label="GitLab Team Member"]') - end - end - - def serialize_issuable_sidebar(user, project, merge_request) - MergeRequestSerializer - .new(current_user: user, project: project) - .represent(closed_merge_request, serializer: 'sidebar') - end end diff --git a/spec/views/projects/services/_form.haml_spec.rb b/spec/views/projects/services/_form.haml_spec.rb index 272ac97604a..a3faa92b50e 100644 --- a/spec/views/projects/services/_form.haml_spec.rb +++ b/spec/views/projects/services/_form.haml_spec.rb @@ -7,6 +7,8 @@ describe 'projects/services/_form' do let(:user) { create(:admin) } before do + stub_feature_flags(integration_form_refactor: false) + assign(:project, project) allow(controller).to receive(:current_user).and_return(user) @@ -29,20 +31,5 @@ describe 'projects/services/_form' do expect(rendered).to have_content('Event will be triggered when a commit is created/updated') expect(rendered).to have_content('Event will be triggered when a merge request is created/updated/merged') end - - context 'when service is Jira' do - let(:project) { create(:jira_project) } - - before do - assign(:service, project.jira_service) - end - - it 'display merge_request_events and commit_events descriptions' do - render - - expect(rendered).to have_content('Jira comments will be created when an issue gets referenced in a commit.') - expect(rendered).to have_content('Jira comments will be created when an issue gets referenced in a merge request.') - end - end end end diff --git a/spec/views/projects/settings/ci_cd/_autodevops_form.html.haml_spec.rb b/spec/views/projects/settings/ci_cd/_autodevops_form.html.haml_spec.rb index 94a85486cfa..d25860ab301 100644 --- a/spec/views/projects/settings/ci_cd/_autodevops_form.html.haml_spec.rb +++ b/spec/views/projects/settings/ci_cd/_autodevops_form.html.haml_spec.rb @@ -13,7 +13,7 @@ describe 'projects/settings/ci_cd/_autodevops_form' do it 'shows a warning message about Kubernetes cluster' do render - expect(rendered).to have_text('You must add a Kubernetes cluster integration to this project with a domain in order for your deployment strategy to work correctly.') + expect(rendered).to have_text('Add a Kubernetes cluster integration with a domain or create an AUTO_DEVOPS_PLATFORM_TARGET CI variable') end context 'when the project has an available kubernetes cluster' do |