Commit 46150551 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '20150-retry-button-on-build-page-displays-for-users-who-can-t-use-it' into 'master'

Ensure current user can retry a build before showing the 'Retry' button

## What does this MR do?

Fixes #20150.

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- Tests
  - [x] Added for this feature/bug
  - [ ] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

See merge request !5476
Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent 99d1f33d
...@@ -9,6 +9,7 @@ v 8.10.2 (unreleased) ...@@ -9,6 +9,7 @@ v 8.10.2 (unreleased)
- Add iid to MR API response. !5468 - Add iid to MR API response. !5468
- Disable MySQL foreign key checks before dropping all tables. !5472 - Disable MySQL foreign key checks before dropping all tables. !5472
- Ensure relative paths for video are rewritten as we do for images. !5474 - Ensure relative paths for video are rewritten as we do for images. !5474
- Ensure current user can retry a build before showing the 'Retry' button. !5476
- Don't show comment button in gutter of diffs on MR discussion tab - Don't show comment button in gutter of diffs on MR discussion tab
v 8.10.1 v 8.10.1
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
.block{ class: ("block-first" if !@build.coverage && !(can?(current_user, :read_build, @project) && (@build.artifacts? || @build.artifacts_expired?))) } .block{ class: ("block-first" if !@build.coverage && !(can?(current_user, :read_build, @project) && (@build.artifacts? || @build.artifacts_expired?))) }
.title .title
Build details Build details
- if @build.retryable? - if can?(current_user, :update_build, @build) && @build.retryable?
= link_to "Retry", retry_namespace_project_build_path(@project.namespace, @project, @build), class: 'pull-right', method: :post = link_to "Retry", retry_namespace_project_build_path(@project.namespace, @project, @build), class: 'pull-right', method: :post
- if @build.merge_request - if @build.merge_request
%p.build-detail-row %p.build-detail-row
......
...@@ -199,9 +199,13 @@ describe "Builds" do ...@@ -199,9 +199,13 @@ describe "Builds" do
click_link 'Retry' click_link 'Retry'
end end
it { expect(page.status_code).to eq(200) } it 'shows the right status and buttons' do
it { expect(page).to have_content 'pending' } expect(page).to have_http_status(200)
it { expect(page).to have_content 'Cancel' } expect(page).to have_content 'pending'
page.within('aside.right-sidebar') do
expect(page).to have_content 'Cancel'
end
end
end end
context "Build from other project" do context "Build from other project" do
...@@ -212,7 +216,25 @@ describe "Builds" do ...@@ -212,7 +216,25 @@ describe "Builds" do
page.driver.post(retry_namespace_project_build_path(@project.namespace, @project, @build2)) page.driver.post(retry_namespace_project_build_path(@project.namespace, @project, @build2))
end end
it { expect(page.status_code).to eq(404) } it { expect(page).to have_http_status(404) }
end
context "Build that current user is not allowed to retry" do
before do
@build.run!
@build.cancel!
@project.update(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
logout_direct
login_with(create(:user))
visit namespace_project_build_path(@project.namespace, @project, @build)
end
it 'does not show the Retry button' do
page.within('aside.right-sidebar') do
expect(page).not_to have_content 'Retry'
end
end
end end
end end
......
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