Commit d4699d09 authored by Peter Leitzen's avatar Peter Leitzen

Implement project policy `publish_status_page`

parent 7f4cd47e
...@@ -124,6 +124,11 @@ module EE ...@@ -124,6 +124,11 @@ module EE
@subject.feature_available?(:code_review_analytics, @user) @subject.feature_available?(:code_review_analytics, @user)
end end
condition(:status_page_available) do
@subject.feature_available?(:status_page, @user) &&
@subject.beta_feature_available?(:status_page)
end
condition(:group_timelogs_available) do condition(:group_timelogs_available) do
@subject.feature_available?(:group_timelogs) @subject.feature_available?(:group_timelogs)
end end
...@@ -235,6 +240,8 @@ module EE ...@@ -235,6 +240,8 @@ module EE
rule { prometheus_alerts_enabled & can?(:maintainer_access) }.enable :read_prometheus_alerts rule { prometheus_alerts_enabled & can?(:maintainer_access) }.enable :read_prometheus_alerts
rule { status_page_available & can?(:maintainer_access) }.enable :publish_status_page
rule { auditor }.policy do rule { auditor }.policy do
enable :public_user_access enable :public_user_access
prevent :request_access prevent :request_access
......
...@@ -1022,6 +1022,53 @@ describe ProjectPolicy do ...@@ -1022,6 +1022,53 @@ describe ProjectPolicy do
end end
end end
describe 'publish_status_page' do
let(:feature) { :status_page }
let(:policy) { :publish_status_page }
context 'when feature is available' do
using RSpec::Parameterized::TableSyntax
where(:role, :allowed) do
:guest | false
:reporter | false
:developer | false
:maintainer | true
:owner | true
:admin | true
end
with_them do
let(:current_user) { public_send(role) }
before do
stub_feature_flags(feature => true)
stub_licensed_features(feature => true)
end
it do
is_expected.to(allowed ? be_allowed(policy) : be_disallowed(policy))
end
context 'when feature is not available' do
before do
stub_licensed_features(feature => false)
end
it { is_expected.to be_disallowed(policy) }
end
context 'when feature flag is disabled' do
before do
stub_feature_flags(feature => false)
end
it { is_expected.to be_disallowed(policy) }
end
end
end
end
context 'support bot' do context 'support bot' do
let(:current_user) { User.support_bot } let(:current_user) { User.support_bot }
......
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