Commit 4e1b6d1e authored by Rémy Coutable's avatar Rémy Coutable

Merge branch 'winh-fix-gpg-regressions' into 'master'

Fix GPG status badge loading regressions

Closes #49878, #49870, gitlab-org/quality/nightly#6 et #49831

See merge request gitlab-org/gitlab-ce!20987
parents 84f24dce fed97a68
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
- page_title @blob.path, @ref - 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 } %div{ class: container_class }
= render 'projects/last_push' = render 'projects/last_push'
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
= render partial: 'flash_messages', locals: { project: @project } = render partial: 'flash_messages', locals: { project: @project }
- if @project.repository_exists? && !@project.empty_repo? - 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 } } .js-signature-container{ data: { 'signatures-path': signatures_path } }
%div{ class: [container_class, ("limit-container-width" unless fluid_layout)] } %div{ class: [container_class, ("limit-container-width" unless fluid_layout)] }
......
- @no_container = true - @no_container = true
- breadcrumb_title _("Repository") - breadcrumb_title _("Repository")
- @content_class = "limit-container-width" unless fluid_layout - @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 - page_title @path.presence || _("Files"), @ref
= content_for :meta_tags do = content_for :meta_tags do
......
---
title: Fix GPG status badge loading regressions
merge_request: 20987
author:
type: fixed
...@@ -552,4 +552,33 @@ describe 'File blob', :js do ...@@ -552,4 +552,33 @@ describe 'File blob', :js do
end end
end 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 end
require 'spec_helper' require 'spec_helper'
describe 'Projects tree' do describe 'Projects tree', :js do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:project) { create(:project, :repository) } let(:project) { create(:project, :repository) }
before do before do
project.add_maintainer(user) project.add_maintainer(user)
sign_in(user) sign_in(user)
end
it 'renders tree table without errors' do
visit project_tree_path(project, 'master') visit project_tree_path(project, 'master')
end wait_for_requests
it 'renders tree table' do
expect(page).to have_selector('.tree-item') expect(page).to have_selector('.tree-item')
expect(page).not_to have_selector('.label-lfs', text: 'LFS') expect(page).not_to have_selector('.label-lfs', text: 'LFS')
expect(page).not_to have_selector('.flash-alert')
end end
context 'LFS' do context 'for signed commit' do
before do it 'displays a GPG badge' do
visit project_tree_path(project, File.join('master', 'files/lfs')) 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
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 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') expect(page).to have_selector('.label-lfs', text: 'LFS')
end end
end end
context 'web IDE', :js do context 'web IDE' do
before do it 'opens folder in IDE' do
visit project_tree_path(project, File.join('master', 'bar')) visit project_tree_path(project, File.join('master', 'bar'))
click_link 'Web IDE' click_link 'Web IDE'
wait_for_requests
find('.ide-file-list') find('.ide-file-list')
wait_for_requests
expect(page).to have_selector('.is-open', text: 'bar')
end end
end
it 'opens folder in IDE' do context 'for subgroups' do
expect(page).to have_selector('.is-open', text: 'bar') 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 end
end end
...@@ -197,6 +197,49 @@ describe 'Project' do ...@@ -197,6 +197,49 @@ describe 'Project' do
expect(page.status_code).to eq(200) expect(page.status_code).to eq(200)
end 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 end
describe 'activity view' do describe 'activity view' do
......
require 'spec_helper' require 'spec_helper'
describe 'GPG signed commits', :js do describe 'GPG signed commits', :js do
set(:ref) { :'2d1096e3a0ecf1d2baf6dee036cc80775d4940ba' }
let(:project) { create(:project, :repository) } let(:project) { create(:project, :repository) }
it 'changes from unverified to verified when the user changes his email to match the gpg key' do 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 ...@@ -13,7 +14,7 @@ describe 'GPG signed commits', :js do
sign_in(user) sign_in(user)
visit project_commits_path(project, :'signed-commits') visit project_commits_path(project, ref)
within '#commits-list' do within '#commits-list' do
expect(page).to have_content 'Unverified' expect(page).to have_content 'Unverified'
...@@ -26,7 +27,7 @@ describe 'GPG signed commits', :js do ...@@ -26,7 +27,7 @@ describe 'GPG signed commits', :js do
user.update!(email: GpgHelpers::User1.emails.first) user.update!(email: GpgHelpers::User1.emails.first)
end end
visit project_commits_path(project, :'signed-commits') visit project_commits_path(project, ref)
within '#commits-list' do within '#commits-list' do
expect(page).to have_content 'Unverified' expect(page).to have_content 'Unverified'
...@@ -40,7 +41,7 @@ describe 'GPG signed commits', :js do ...@@ -40,7 +41,7 @@ describe 'GPG signed commits', :js do
sign_in(user) sign_in(user)
visit project_commits_path(project, :'signed-commits') visit project_commits_path(project, ref)
within '#commits-list' do within '#commits-list' do
expect(page).to have_content 'Unverified' expect(page).to have_content 'Unverified'
...@@ -52,7 +53,7 @@ describe 'GPG signed commits', :js do ...@@ -52,7 +53,7 @@ describe 'GPG signed commits', :js do
create :gpg_key, key: GpgHelpers::User1.public_key, user: user create :gpg_key, key: GpgHelpers::User1.public_key, user: user
end end
visit project_commits_path(project, :'signed-commits') visit project_commits_path(project, ref)
within '#commits-list' do within '#commits-list' do
expect(page).to have_content 'Unverified' expect(page).to have_content 'Unverified'
...@@ -92,7 +93,7 @@ describe 'GPG signed commits', :js do ...@@ -92,7 +93,7 @@ describe 'GPG signed commits', :js do
end end
it 'unverified signature' do 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 within(find('.commit', text: 'signed commit by bette cartwright')) do
click_on 'Unverified' click_on 'Unverified'
...@@ -107,7 +108,7 @@ describe 'GPG signed commits', :js do ...@@ -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 it 'unverified signature: user email does not match the committer email, but is the same user' do
user_2_key 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 within(find('.commit', text: 'signed and authored commit by bette cartwright, different email')) do
click_on 'Unverified' click_on 'Unverified'
...@@ -124,7 +125,7 @@ describe 'GPG signed commits', :js do ...@@ -124,7 +125,7 @@ describe 'GPG signed commits', :js do
it 'unverified signature: user email does not match the committer email' do it 'unverified signature: user email does not match the committer email' do
user_2_key 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 within(find('.commit', text: 'signed commit by bette cartwright')) do
click_on 'Unverified' click_on 'Unverified'
...@@ -141,7 +142,7 @@ describe 'GPG signed commits', :js do ...@@ -141,7 +142,7 @@ describe 'GPG signed commits', :js do
it 'verified and the gpg user has a gitlab profile' do it 'verified and the gpg user has a gitlab profile' do
user_1_key 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 within(find('.commit', text: 'signed and authored commit by nannie bernhard')) do
click_on 'Verified' click_on 'Verified'
...@@ -158,7 +159,7 @@ describe 'GPG signed commits', :js do ...@@ -158,7 +159,7 @@ describe 'GPG signed commits', :js do
it "verified and the gpg user's profile doesn't exist anymore" do it "verified and the gpg user's profile doesn't exist anymore" do
user_1_key user_1_key
visit project_commits_path(project, :'signed-commits') visit project_commits_path(project, ref)
# wait for the signature to get generated # wait for the signature to get generated
within(find('.commit', text: 'signed and authored commit by nannie bernhard')) do within(find('.commit', text: 'signed and authored commit by nannie bernhard')) do
......
...@@ -8,7 +8,7 @@ module TestEnv ...@@ -8,7 +8,7 @@ module TestEnv
# When developing the seed repository, comment out the branch you will modify. # When developing the seed repository, comment out the branch you will modify.
BRANCH_SHA = { BRANCH_SHA = {
'signed-commits' => '2d1096e', 'signed-commits' => '6101e87',
'not-merged-branch' => 'b83d6e3', 'not-merged-branch' => 'b83d6e3',
'branch-merged' => '498214d', 'branch-merged' => '498214d',
'empty-branch' => '7efb185', 'empty-branch' => '7efb185',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment