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/controllers/projects_controller_spec.rb')
-rw-r--r--spec/controllers/projects_controller_spec.rb59
1 files changed, 48 insertions, 11 deletions
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb
index bc58eaa1d6f..51f8a3b1197 100644
--- a/spec/controllers/projects_controller_spec.rb
+++ b/spec/controllers/projects_controller_spec.rb
@@ -2,7 +2,7 @@
require('spec_helper')
-RSpec.describe ProjectsController do
+RSpec.describe ProjectsController, feature_category: :projects do
include ExternalAuthorizationServiceHelpers
include ProjectForksHelper
using RSpec::Parameterized::TableSyntax
@@ -629,29 +629,66 @@ RSpec.describe ProjectsController do
describe '#housekeeping' do
let_it_be(:group) { create(:group) }
- let_it_be(:project) { create(:project, group: group) }
+ let(:housekeeping_service_dbl) { instance_double(Repositories::HousekeepingService) }
+ let(:params) do
+ {
+ namespace_id: project.namespace.path,
+ id: project.path,
+ prune: prune
+ }
+ end
+ let(:prune) { nil }
+ let_it_be(:project) { create(:project, group: group) }
let(:housekeeping) { Repositories::HousekeepingService.new(project) }
+ subject { post :housekeeping, params: params }
+
context 'when authenticated as owner' do
before do
group.add_owner(user)
sign_in(user)
- allow(Repositories::HousekeepingService).to receive(:new).with(project, :gc).and_return(housekeeping)
+ allow(Repositories::HousekeepingService).to receive(:new).with(project, :eager).and_return(housekeeping)
end
it 'forces a full garbage collection' do
expect(housekeeping).to receive(:execute).once
post :housekeeping,
- params: {
- namespace_id: project.namespace.path,
- id: project.path
- }
+ params: {
+ namespace_id: project.namespace.path,
+ id: project.path
+ }
expect(response).to have_gitlab_http_status(:found)
end
+
+ it 'logs an audit event' do
+ expect(housekeeping).to receive(:execute).once.and_yield
+
+ expect(::Gitlab::Audit::Auditor).to receive(:audit).with(a_hash_including(
+ name: 'manually_trigger_housekeeping',
+ author: user,
+ scope: project,
+ target: project,
+ message: "Housekeeping task: eager"
+ ))
+
+ subject
+ end
+
+ context 'and requesting prune' do
+ let(:prune) { true }
+
+ it 'enqueues pruning' do
+ allow(Repositories::HousekeepingService).to receive(:new).with(project, :prune).and_return(housekeeping_service_dbl)
+ expect(housekeeping_service_dbl).to receive(:execute)
+
+ subject
+ expect(response).to have_gitlab_http_status(:found)
+ end
+ end
end
context 'when authenticated as developer' do
@@ -665,10 +702,10 @@ RSpec.describe ProjectsController do
expect(housekeeping).not_to receive(:execute)
post :housekeeping,
- params: {
- namespace_id: project.namespace.path,
- id: project.path
- }
+ params: {
+ namespace_id: project.namespace.path,
+ id: project.path
+ }
expect(response).to have_gitlab_http_status(:found)
end