diff options
-rw-r--r-- | app/views/projects/blob/show.html.haml | 3 | ||||
-rw-r--r-- | app/views/projects/show.html.haml | 2 | ||||
-rw-r--r-- | app/views/projects/tree/show.html.haml | 2 | ||||
-rw-r--r-- | changelogs/unreleased/winh-fix-gpg-regressions.yml | 5 | ||||
-rw-r--r-- | spec/features/projects/blobs/blob_show_spec.rb | 29 | ||||
-rw-r--r-- | spec/features/projects/tree/tree_show_spec.rb | 64 | ||||
-rw-r--r-- | spec/features/projects_spec.rb | 43 | ||||
-rw-r--r-- | spec/features/signed_commits_spec.rb | 19 | ||||
-rw-r--r-- | spec/support/helpers/test_env.rb | 2 |
9 files changed, 146 insertions, 23 deletions
diff --git a/app/views/projects/blob/show.html.haml b/app/views/projects/blob/show.html.haml index 5edab38bd64..a0b0384d78d 100644 --- a/app/views/projects/blob/show.html.haml +++ b/app/views/projects/blob/show.html.haml @@ -3,7 +3,8 @@ - page_title @blob.path, @ref -.js-signature-container{ data: { 'signatures-path': namespace_project_signatures_path } } +- signatures_path = namespace_project_signatures_path(namespace_id: @project.namespace.full_path, project_id: @project.path, id: @last_commit) +.js-signature-container{ data: { 'signatures-path': signatures_path } } %div{ class: container_class } = render 'projects/last_push' diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index e011851be78..8a5abb64515 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -9,7 +9,7 @@ = render partial: 'flash_messages', locals: { project: @project } - if @project.repository_exists? && !@project.empty_repo? - - signatures_path = namespace_project_signatures_path(project_id: @project.path, id: @project.default_branch) + - signatures_path = namespace_project_signatures_path(namespace_id: @project.namespace.full_path, project_id: @project.path, id: @project.default_branch) .js-signature-container{ data: { 'signatures-path': signatures_path } } %div{ class: [container_class, ("limit-container-width" unless fluid_layout)] } diff --git a/app/views/projects/tree/show.html.haml b/app/views/projects/tree/show.html.haml index ace8120eeff..9d2aee7a8bd 100644 --- a/app/views/projects/tree/show.html.haml +++ b/app/views/projects/tree/show.html.haml @@ -1,7 +1,7 @@ - @no_container = true - breadcrumb_title _("Repository") - @content_class = "limit-container-width" unless fluid_layout -- signatures_path = namespace_project_signatures_path(namespace_id: @project.namespace.path, project_id: @project.path, id: @ref) +- signatures_path = namespace_project_signatures_path(namespace_id: @project.namespace.full_path, project_id: @project.path, id: @last_commit) - page_title @path.presence || _("Files"), @ref = content_for :meta_tags do diff --git a/changelogs/unreleased/winh-fix-gpg-regressions.yml b/changelogs/unreleased/winh-fix-gpg-regressions.yml new file mode 100644 index 00000000000..75d28321259 --- /dev/null +++ b/changelogs/unreleased/winh-fix-gpg-regressions.yml @@ -0,0 +1,5 @@ +--- +title: Fix GPG status badge loading regressions +merge_request: 20987 +author: +type: fixed diff --git a/spec/features/projects/blobs/blob_show_spec.rb b/spec/features/projects/blobs/blob_show_spec.rb index 27589428896..1064f72c271 100644 --- a/spec/features/projects/blobs/blob_show_spec.rb +++ b/spec/features/projects/blobs/blob_show_spec.rb @@ -552,4 +552,33 @@ describe 'File blob', :js do end end end + + context 'for subgroups' do + let(:group) { create(:group) } + let(:subgroup) { create(:group, parent: group) } + let(:project) { create(:project, :public, :repository, group: subgroup) } + + it 'renders tree table without errors' do + visit_blob('README.md') + + expect(page).to have_selector('.file-content') + expect(page).not_to have_selector('.flash-alert') + end + + it 'displays a GPG badge' do + visit_blob('CONTRIBUTING.md', ref: '33f3729a45c02fc67d00adb1b8bca394b0e761d9') + + expect(page).not_to have_selector '.gpg-status-box.js-loading-gpg-badge' + expect(page).to have_selector '.gpg-status-box.invalid' + end + end + + context 'on signed merge commit' do + it 'displays a GPG badge' do + visit_blob('conflicting-file.md', ref: '6101e87e575de14b38b4e1ce180519a813671e10') + + expect(page).not_to have_selector '.gpg-status-box.js-loading-gpg-badge' + expect(page).to have_selector '.gpg-status-box.invalid' + end + end end diff --git a/spec/features/projects/tree/tree_show_spec.rb b/spec/features/projects/tree/tree_show_spec.rb index 9e15163fd72..8ae036cd29f 100644 --- a/spec/features/projects/tree/tree_show_spec.rb +++ b/spec/features/projects/tree/tree_show_spec.rb @@ -1,42 +1,86 @@ require 'spec_helper' -describe 'Projects tree' do +describe 'Projects tree', :js do let(:user) { create(:user) } let(:project) { create(:project, :repository) } before do project.add_maintainer(user) sign_in(user) + end + it 'renders tree table without errors' do visit project_tree_path(project, 'master') - end + wait_for_requests - it 'renders tree table' do expect(page).to have_selector('.tree-item') expect(page).not_to have_selector('.label-lfs', text: 'LFS') + expect(page).not_to have_selector('.flash-alert') end - context 'LFS' do - before do - visit project_tree_path(project, File.join('master', 'files/lfs')) + context 'for signed commit' do + it 'displays a GPG badge' do + visit project_tree_path(project, '33f3729a45c02fc67d00adb1b8bca394b0e761d9') + wait_for_requests + + expect(page).not_to have_selector '.gpg-status-box.js-loading-gpg-badge' + expect(page).to have_selector '.gpg-status-box.invalid' end + context 'on a directory that has not changed recently' do + it 'displays a GPG badge' do + tree_path = File.join('eee736adc74341c5d3e26cd0438bc697f26a7575', 'subdir') + visit project_tree_path(project, tree_path) + wait_for_requests + + expect(page).not_to have_selector '.gpg-status-box.js-loading-gpg-badge' + expect(page).to have_selector '.gpg-status-box.invalid' + end + end + end + + context 'LFS' do it 'renders LFS badge on blob item' do + visit project_tree_path(project, File.join('master', 'files/lfs')) + expect(page).to have_selector('.label-lfs', text: 'LFS') end end - context 'web IDE', :js do - before do + context 'web IDE' do + it 'opens folder in IDE' do visit project_tree_path(project, File.join('master', 'bar')) click_link 'Web IDE' + wait_for_requests find('.ide-file-list') + wait_for_requests + expect(page).to have_selector('.is-open', text: 'bar') end + end - it 'opens folder in IDE' do - expect(page).to have_selector('.is-open', text: 'bar') + context 'for subgroups' do + let(:group) { create(:group) } + let(:subgroup) { create(:group, parent: group) } + let(:project) { create(:project, :repository, group: subgroup) } + + it 'renders tree table without errors' do + visit project_tree_path(project, 'master') + wait_for_requests + + expect(page).to have_selector('.tree-item') + expect(page).not_to have_selector('.flash-alert') + end + + context 'for signed commit' do + it 'displays a GPG badge' do + visit project_tree_path(project, '33f3729a45c02fc67d00adb1b8bca394b0e761d9') + wait_for_requests + + expect(page).not_to have_selector '.gpg-status-box.js-loading-gpg-badge' + expect(page).to have_selector '.gpg-status-box.invalid' + end end end end diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb index 39b47d99040..56ed0c936a6 100644 --- a/spec/features/projects_spec.rb +++ b/spec/features/projects_spec.rb @@ -197,6 +197,49 @@ describe 'Project' do expect(page.status_code).to eq(200) end + + context 'for signed commit on default branch', :js do + before do + project.change_head('33f3729a45c02fc67d00adb1b8bca394b0e761d9') + end + + it 'displays a GPG badge' do + visit project_path(project) + wait_for_requests + + expect(page).not_to have_selector '.gpg-status-box.js-loading-gpg-badge' + expect(page).to have_selector '.gpg-status-box.invalid' + end + end + + context 'for subgroups', :js do + let(:group) { create(:group) } + let(:subgroup) { create(:group, parent: group) } + let(:project) { create(:project, :repository, group: subgroup) } + + it 'renders tree table without errors' do + wait_for_requests + + expect(page).to have_selector('.tree-item') + expect(page).not_to have_selector('.flash-alert') + end + + context 'for signed commit' do + before do + repository = project.repository + repository.write_ref("refs/heads/#{project.default_branch}", '33f3729a45c02fc67d00adb1b8bca394b0e761d9') + repository.expire_branches_cache + end + + it 'displays a GPG badge' do + visit project_path(project) + wait_for_requests + + expect(page).not_to have_selector '.gpg-status-box.js-loading-gpg-badge' + expect(page).to have_selector '.gpg-status-box.invalid' + end + end + end end describe 'activity view' do diff --git a/spec/features/signed_commits_spec.rb b/spec/features/signed_commits_spec.rb index 5003eb508c2..ef0e55a1468 100644 --- a/spec/features/signed_commits_spec.rb +++ b/spec/features/signed_commits_spec.rb @@ -1,6 +1,7 @@ require 'spec_helper' describe 'GPG signed commits', :js do + set(:ref) { :'2d1096e3a0ecf1d2baf6dee036cc80775d4940ba' } let(:project) { create(:project, :repository) } it 'changes from unverified to verified when the user changes his email to match the gpg key' do @@ -13,7 +14,7 @@ describe 'GPG signed commits', :js do sign_in(user) - visit project_commits_path(project, :'signed-commits') + visit project_commits_path(project, ref) within '#commits-list' do expect(page).to have_content 'Unverified' @@ -26,7 +27,7 @@ describe 'GPG signed commits', :js do user.update!(email: GpgHelpers::User1.emails.first) end - visit project_commits_path(project, :'signed-commits') + visit project_commits_path(project, ref) within '#commits-list' do expect(page).to have_content 'Unverified' @@ -40,7 +41,7 @@ describe 'GPG signed commits', :js do sign_in(user) - visit project_commits_path(project, :'signed-commits') + visit project_commits_path(project, ref) within '#commits-list' do expect(page).to have_content 'Unverified' @@ -52,7 +53,7 @@ describe 'GPG signed commits', :js do create :gpg_key, key: GpgHelpers::User1.public_key, user: user end - visit project_commits_path(project, :'signed-commits') + visit project_commits_path(project, ref) within '#commits-list' do expect(page).to have_content 'Unverified' @@ -92,7 +93,7 @@ describe 'GPG signed commits', :js do end it 'unverified signature' do - visit project_commits_path(project, :'signed-commits') + visit project_commits_path(project, ref) within(find('.commit', text: 'signed commit by bette cartwright')) do click_on 'Unverified' @@ -107,7 +108,7 @@ describe 'GPG signed commits', :js do it 'unverified signature: user email does not match the committer email, but is the same user' do user_2_key - visit project_commits_path(project, :'signed-commits') + visit project_commits_path(project, ref) within(find('.commit', text: 'signed and authored commit by bette cartwright, different email')) do click_on 'Unverified' @@ -124,7 +125,7 @@ describe 'GPG signed commits', :js do it 'unverified signature: user email does not match the committer email' do user_2_key - visit project_commits_path(project, :'signed-commits') + visit project_commits_path(project, ref) within(find('.commit', text: 'signed commit by bette cartwright')) do click_on 'Unverified' @@ -141,7 +142,7 @@ describe 'GPG signed commits', :js do it 'verified and the gpg user has a gitlab profile' do user_1_key - visit project_commits_path(project, :'signed-commits') + visit project_commits_path(project, ref) within(find('.commit', text: 'signed and authored commit by nannie bernhard')) do click_on 'Verified' @@ -158,7 +159,7 @@ describe 'GPG signed commits', :js do it "verified and the gpg user's profile doesn't exist anymore" do user_1_key - visit project_commits_path(project, :'signed-commits') + visit project_commits_path(project, ref) # wait for the signature to get generated within(find('.commit', text: 'signed and authored commit by nannie bernhard')) do diff --git a/spec/support/helpers/test_env.rb b/spec/support/helpers/test_env.rb index 9c6486a35c4..f392660d2c7 100644 --- a/spec/support/helpers/test_env.rb +++ b/spec/support/helpers/test_env.rb @@ -8,7 +8,7 @@ module TestEnv # When developing the seed repository, comment out the branch you will modify. BRANCH_SHA = { - 'signed-commits' => '2d1096e', + 'signed-commits' => '6101e87', 'not-merged-branch' => 'b83d6e3', 'branch-merged' => '498214d', 'empty-branch' => '7efb185', |