summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2018-08-07 14:02:53 +0000
committerRémy Coutable <remy@rymai.me>2018-08-07 14:02:53 +0000
commit4e1b6d1eda7a9861c4e9a7418a32a424cb2fdd4f (patch)
treecfaa02c09a407376ac1e9fb0904e93faa3c1c370
parent84f24dcef0d44e7447d3f3de4ec91668e5d9d3a3 (diff)
parentfed97a68b941659949e7b8b40977d54850bfbf8f (diff)
downloadgitlab-ce-4e1b6d1eda7a9861c4e9a7418a32a424cb2fdd4f.tar.gz
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
-rw-r--r--app/views/projects/blob/show.html.haml3
-rw-r--r--app/views/projects/show.html.haml2
-rw-r--r--app/views/projects/tree/show.html.haml2
-rw-r--r--changelogs/unreleased/winh-fix-gpg-regressions.yml5
-rw-r--r--spec/features/projects/blobs/blob_show_spec.rb29
-rw-r--r--spec/features/projects/tree/tree_show_spec.rb64
-rw-r--r--spec/features/projects_spec.rb43
-rw-r--r--spec/features/signed_commits_spec.rb19
-rw-r--r--spec/support/helpers/test_env.rb2
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',