140 lines
4.6 KiB
Ruby
140 lines
4.6 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Projects::PipelineSchedulesController do
|
|
set(:project) { create(:empty_project, :public) }
|
|
let!(:pipeline_schedule) { create(:ci_pipeline_schedule, project: project) }
|
|
|
|
describe 'GET #index' do
|
|
let(:scope) { nil }
|
|
let!(:inactive_pipeline_schedule) do
|
|
create(:ci_pipeline_schedule, :inactive, project: project)
|
|
end
|
|
|
|
it 'renders the index view' do
|
|
visit_pipelines_schedules
|
|
|
|
expect(response).to have_http_status(:ok)
|
|
expect(response).to render_template(:index)
|
|
end
|
|
|
|
context 'when the scope is set to active' do
|
|
let(:scope) { 'active' }
|
|
|
|
before do
|
|
visit_pipelines_schedules
|
|
end
|
|
|
|
it 'only shows active pipeline schedules' do
|
|
expect(response).to have_http_status(:ok)
|
|
expect(assigns(:schedules)).to include(pipeline_schedule)
|
|
expect(assigns(:schedules)).not_to include(inactive_pipeline_schedule)
|
|
end
|
|
end
|
|
|
|
def visit_pipelines_schedules
|
|
get :index, namespace_id: project.namespace.to_param, project_id: project, scope: scope
|
|
end
|
|
end
|
|
|
|
describe 'GET edit' do
|
|
let(:user) { create(:user) }
|
|
|
|
before do
|
|
project.add_master(user)
|
|
|
|
sign_in(user)
|
|
end
|
|
|
|
it 'loads the pipeline schedule' do
|
|
get :edit, namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id
|
|
|
|
expect(response).to have_http_status(:ok)
|
|
expect(assigns(:schedule)).to eq(pipeline_schedule)
|
|
end
|
|
end
|
|
|
|
describe 'DELETE #destroy' do
|
|
set(:user) { create(:user) }
|
|
|
|
context 'when a developer makes the request' do
|
|
before do
|
|
project.add_developer(user)
|
|
sign_in(user)
|
|
|
|
delete :destroy, namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id
|
|
end
|
|
|
|
it 'does not delete the pipeline schedule' do
|
|
expect(response).not_to have_http_status(:ok)
|
|
end
|
|
end
|
|
|
|
context 'when a master makes the request' do
|
|
before do
|
|
project.add_master(user)
|
|
sign_in(user)
|
|
end
|
|
|
|
it 'destroys the pipeline schedule' do
|
|
expect do
|
|
delete :destroy, namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id
|
|
end.to change { project.pipeline_schedules.count }.by(-1)
|
|
|
|
expect(response).to have_http_status(302)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'security' do
|
|
include AccessMatchersForController
|
|
|
|
describe 'GET edit' do
|
|
it { expect { go }.to be_allowed_for(:admin) }
|
|
it { expect { go }.to be_allowed_for(:owner).of(project) }
|
|
it { expect { go }.to be_allowed_for(:master).of(project) }
|
|
it { expect { go }.to be_allowed_for(:developer).of(project) }
|
|
it { expect { go }.to be_denied_for(:reporter).of(project) }
|
|
it { expect { go }.to be_denied_for(:guest).of(project) }
|
|
it { expect { go }.to be_denied_for(:user) }
|
|
it { expect { go }.to be_denied_for(:external) }
|
|
it { expect { go }.to be_denied_for(:visitor) }
|
|
|
|
def go
|
|
get :edit, namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id
|
|
end
|
|
end
|
|
|
|
describe 'GET take_ownership' do
|
|
it { expect { go }.to be_allowed_for(:admin) }
|
|
it { expect { go }.to be_allowed_for(:owner).of(project) }
|
|
it { expect { go }.to be_allowed_for(:master).of(project) }
|
|
it { expect { go }.to be_allowed_for(:developer).of(project) }
|
|
it { expect { go }.to be_denied_for(:reporter).of(project) }
|
|
it { expect { go }.to be_denied_for(:guest).of(project) }
|
|
it { expect { go }.to be_denied_for(:user) }
|
|
it { expect { go }.to be_denied_for(:external) }
|
|
it { expect { go }.to be_denied_for(:visitor) }
|
|
|
|
def go
|
|
post :take_ownership, namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id
|
|
end
|
|
end
|
|
|
|
describe 'PUT update' do
|
|
it { expect { go }.to be_allowed_for(:admin) }
|
|
it { expect { go }.to be_allowed_for(:owner).of(project) }
|
|
it { expect { go }.to be_allowed_for(:master).of(project) }
|
|
it { expect { go }.to be_allowed_for(:developer).of(project) }
|
|
it { expect { go }.to be_denied_for(:reporter).of(project) }
|
|
it { expect { go }.to be_denied_for(:guest).of(project) }
|
|
it { expect { go }.to be_denied_for(:user) }
|
|
it { expect { go }.to be_denied_for(:external) }
|
|
it { expect { go }.to be_denied_for(:visitor) }
|
|
|
|
def go
|
|
put :update, namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id,
|
|
schedule: { description: 'a' }
|
|
end
|
|
end
|
|
end
|
|
end
|