mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-20 10:06:04 +10:00
Merge branch 'fix/deprecated-ci-badge-permissions' into 'master'
Fix permissions for deprecated CI build status badge This fixes permissions for deprecated status badge, being unavailable even if project is public. Closes #13324 See merge request !3030
This commit is contained in:
@@ -13,6 +13,7 @@ v 8.6.0 (unreleased)
|
||||
|
||||
v 8.5.2
|
||||
- Fix sidebar overlapping content when screen width was below 1200px
|
||||
- Fix permissions for deprecated CI build status badge
|
||||
- Fix error 500 when commenting on a commit
|
||||
- Fix broken icons on installations with relative URL (Artem Sidorenko)
|
||||
- Fix import from gitlab.com (KazSawada)
|
||||
|
||||
@@ -3,6 +3,7 @@ module Ci
|
||||
before_action :project
|
||||
before_action :authorize_read_project!, except: [:badge]
|
||||
before_action :no_cache, only: [:badge]
|
||||
skip_before_action :authenticate_user!, only: [:badge]
|
||||
protect_from_forgery
|
||||
|
||||
def show
|
||||
@@ -18,6 +19,7 @@ module Ci
|
||||
#
|
||||
def badge
|
||||
return render_404 unless @project
|
||||
|
||||
image = Ci::ImageForBuildService.new.execute(@project, params)
|
||||
send_file image.path, filename: image.name, disposition: 'inline', type:"image/svg+xml"
|
||||
end
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Ci::ProjectsController do
|
||||
let(:visibility) { :public }
|
||||
let!(:project) { create(:project, visibility, ci_id: 1) }
|
||||
let(:ci_id) { project.ci_id }
|
||||
|
||||
##
|
||||
# Specs for *deprecated* CI badge
|
||||
#
|
||||
describe '#badge' do
|
||||
shared_examples 'badge provider' do
|
||||
it 'shows badge' do
|
||||
expect(response.status).to eq 200
|
||||
expect(response.headers)
|
||||
.to include('Content-Type' => 'image/svg+xml')
|
||||
end
|
||||
end
|
||||
|
||||
context 'user not signed in' do
|
||||
before { get(:badge, id: ci_id) }
|
||||
|
||||
context 'project has no ci_id reference' do
|
||||
let(:ci_id) { 123 }
|
||||
|
||||
it 'returns 404' do
|
||||
expect(response.status).to eq 404
|
||||
end
|
||||
end
|
||||
|
||||
context 'project is public' do
|
||||
let(:visibility) { :public }
|
||||
it_behaves_like 'badge provider'
|
||||
end
|
||||
|
||||
context 'project is private' do
|
||||
let(:visibility) { :private }
|
||||
it_behaves_like 'badge provider'
|
||||
end
|
||||
end
|
||||
|
||||
context 'user signed in' do
|
||||
let(:user) { create(:user) }
|
||||
before { sign_in(user) }
|
||||
before { get(:badge, id: ci_id) }
|
||||
|
||||
context 'private is internal' do
|
||||
let(:visibility) { :internal }
|
||||
it_behaves_like 'badge provider'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user