Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/policies/environment_policy_spec.rb')
-rw-r--r--spec/policies/environment_policy_spec.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/policies/environment_policy_spec.rb b/spec/policies/environment_policy_spec.rb
index 63a9512afcd..a098b52023d 100644
--- a/spec/policies/environment_policy_spec.rb
+++ b/spec/policies/environment_policy_spec.rb
@@ -86,6 +86,50 @@ describe EnvironmentPolicy do
it { expect(policy).to be_allowed :stop_environment }
end
end
+
+ describe '#destroy_environment' do
+ let(:environment) do
+ create(:environment, project: project)
+ end
+
+ where(:access_level, :allowed?) do
+ nil | false
+ :guest | false
+ :reporter | false
+ :developer | true
+ :maintainer | true
+ end
+
+ with_them do
+ before do
+ project.add_user(user, access_level) unless access_level.nil?
+ end
+
+ it { expect(policy).to be_disallowed :destroy_environment }
+
+ context 'when environment is stopped' do
+ before do
+ environment.stop!
+ end
+
+ it { expect(policy.allowed?(:destroy_environment)).to be allowed? }
+ end
+ end
+
+ context 'when an admin user' do
+ let(:user) { create(:user, :admin) }
+
+ it { expect(policy).to be_disallowed :destroy_environment }
+
+ context 'when environment is stopped' do
+ before do
+ environment.stop!
+ end
+
+ it { expect(policy).to be_allowed :destroy_environment }
+ end
+ end
+ end
end
context 'when project is public' do