Commit ff575b78 authored by Robert Speicher's avatar Robert Speicher

Merge branch '6045-extract-ee-specific-specs-lines' into 'master'

[CE] Resolve "Extract EE specific files/lines for some controller specs"

Closes #6045

See merge request gitlab-org/gitlab-ce!19089
parents 4aae86f6 9471c3f6
...@@ -71,19 +71,6 @@ class Projects::ClustersController < Projects::ApplicationController ...@@ -71,19 +71,6 @@ class Projects::ClustersController < Projects::ApplicationController
.present(current_user: current_user) .present(current_user: current_user)
end end
def create_params
params.require(:cluster).permit(
:enabled,
:name,
:provider_type,
provider_gcp_attributes: [
:gcp_project_id,
:zone,
:num_nodes,
:machine_type
])
end
def update_params def update_params
if cluster.managed? if cluster.managed?
params.require(:cluster).permit( params.require(:cluster).permit(
......
...@@ -7,6 +7,7 @@ class Projects::EnvironmentsController < Projects::ApplicationController ...@@ -7,6 +7,7 @@ class Projects::EnvironmentsController < Projects::ApplicationController
before_action :authorize_admin_environment!, only: [:terminal, :terminal_websocket_authorize] before_action :authorize_admin_environment!, only: [:terminal, :terminal_websocket_authorize]
before_action :environment, only: [:show, :edit, :update, :stop, :terminal, :terminal_websocket_authorize, :metrics] before_action :environment, only: [:show, :edit, :update, :stop, :terminal, :terminal_websocket_authorize, :metrics]
before_action :verify_api_request!, only: :terminal_websocket_authorize before_action :verify_api_request!, only: :terminal_websocket_authorize
before_action :expire_etag_cache, only: [:index]
def index def index
@environments = project.environments @environments = project.environments
...@@ -148,6 +149,15 @@ class Projects::EnvironmentsController < Projects::ApplicationController ...@@ -148,6 +149,15 @@ class Projects::EnvironmentsController < Projects::ApplicationController
Gitlab::Workhorse.verify_api_request!(request.headers) Gitlab::Workhorse.verify_api_request!(request.headers)
end end
def expire_etag_cache
return if request.format.json?
# this forces to reload json content
Gitlab::EtagCaching::Store.new.tap do |store|
store.touch(project_environments_path(project, format: :json))
end
end
def environment_params def environment_params
params.require(:environment).permit(:name, :external_url) params.require(:environment).permit(:name, :external_url)
end end
......
...@@ -138,8 +138,8 @@ module Gitlab ...@@ -138,8 +138,8 @@ module Gitlab
def ee_branch_presence_check! def ee_branch_presence_check!
ee_remotes.keys.each do |remote| ee_remotes.keys.each do |remote|
[ee_branch_prefix, ee_branch_suffix].each do |branch| [ce_branch, ee_branch_prefix, ee_branch_suffix].each do |branch|
_, status = step("Fetching #{remote}/#{ee_branch_prefix}", %W[git fetch #{remote} #{branch}]) _, status = step("Fetching #{remote}/#{branch}", %W[git fetch #{remote} #{branch}])
if status.zero? if status.zero?
@ee_remote_with_branch = remote @ee_remote_with_branch = remote
......
...@@ -17,7 +17,7 @@ describe Boards::IssuesController do ...@@ -17,7 +17,7 @@ describe Boards::IssuesController do
project.add_guest(guest) project.add_guest(guest)
end end
describe 'GET index' do describe 'GET index', :request_store do
let(:johndoe) { create(:user, avatar: fixture_file_upload(File.join(Rails.root, 'spec/fixtures/dk.png'))) } let(:johndoe) { create(:user, avatar: fixture_file_upload(File.join(Rails.root, 'spec/fixtures/dk.png'))) }
context 'with invalid board id' do context 'with invalid board id' do
......
...@@ -27,6 +27,20 @@ describe Projects::BoardsController do ...@@ -27,6 +27,20 @@ describe Projects::BoardsController do
expect(response).to render_template :index expect(response).to render_template :index
expect(response.content_type).to eq 'text/html' expect(response.content_type).to eq 'text/html'
end end
context 'with unauthorized user' do
before do
allow(Ability).to receive(:allowed?).with(user, :read_project, project).and_return(true)
allow(Ability).to receive(:allowed?).with(user, :read_board, project).and_return(false)
end
it 'returns a not found 404 response' do
list_boards
expect(response).to have_gitlab_http_status(404)
expect(response.content_type).to eq 'text/html'
end
end
end end
context 'when format is JSON' do context 'when format is JSON' do
...@@ -40,18 +54,19 @@ describe Projects::BoardsController do ...@@ -40,18 +54,19 @@ describe Projects::BoardsController do
expect(response).to match_response_schema('boards') expect(response).to match_response_schema('boards')
expect(parsed_response.length).to eq 2 expect(parsed_response.length).to eq 2
end end
end
context 'with unauthorized user' do context 'with unauthorized user' do
before do before do
allow(Ability).to receive(:allowed?).with(user, :read_project, project).and_return(true) allow(Ability).to receive(:allowed?).with(user, :read_project, project).and_return(true)
allow(Ability).to receive(:allowed?).with(user, :read_board, project).and_return(false) allow(Ability).to receive(:allowed?).with(user, :read_board, project).and_return(false)
end end
it 'returns a not found 404 response' do it 'returns a not found 404 response' do
list_boards list_boards format: :json
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(404)
expect(response.content_type).to eq 'application/json'
end
end end
end end
...@@ -88,6 +103,20 @@ describe Projects::BoardsController do ...@@ -88,6 +103,20 @@ describe Projects::BoardsController do
expect(response).to render_template :show expect(response).to render_template :show
expect(response.content_type).to eq 'text/html' expect(response.content_type).to eq 'text/html'
end end
context 'with unauthorized user' do
before do
allow(Ability).to receive(:allowed?).with(user, :read_project, project).and_return(true)
allow(Ability).to receive(:allowed?).with(user, :read_board, project).and_return(false)
end
it 'returns a not found 404 response' do
read_board board: board
expect(response).to have_gitlab_http_status(404)
expect(response.content_type).to eq 'text/html'
end
end
end end
context 'when format is JSON' do context 'when format is JSON' do
...@@ -96,18 +125,19 @@ describe Projects::BoardsController do ...@@ -96,18 +125,19 @@ describe Projects::BoardsController do
expect(response).to match_response_schema('board') expect(response).to match_response_schema('board')
end end
end
context 'with unauthorized user' do context 'with unauthorized user' do
before do before do
allow(Ability).to receive(:allowed?).with(user, :read_project, project).and_return(true) allow(Ability).to receive(:allowed?).with(user, :read_project, project).and_return(true)
allow(Ability).to receive(:allowed?).with(user, :read_board, project).and_return(false) allow(Ability).to receive(:allowed?).with(user, :read_board, project).and_return(false)
end end
it 'returns a not found 404 response' do it 'returns a not found 404 response' do
read_board board: board read_board board: board, format: :json
expect(response).to have_gitlab_http_status(404) expect(response).to have_gitlab_http_status(404)
expect(response.content_type).to eq 'application/json'
end
end end
end end
......
...@@ -146,6 +146,24 @@ describe Projects::BranchesController do ...@@ -146,6 +146,24 @@ describe Projects::BranchesController do
it_behaves_like 'same behavior between KubernetesService and Platform::Kubernetes' it_behaves_like 'same behavior between KubernetesService and Platform::Kubernetes'
end end
it 'redirects to autodeploy setup page' do
result = { status: :success, branch: double(name: branch) }
create(:cluster, :provided_by_gcp, projects: [project])
expect_any_instance_of(CreateBranchService).to receive(:execute).and_return(result)
expect(SystemNoteService).to receive(:new_issue_branch).and_return(true)
post :create,
namespace_id: project.namespace.to_param,
project_id: project.to_param,
branch_name: branch,
issue_iid: issue.iid
expect(response.location).to include(project_new_blob_path(project, branch))
expect(response).to have_gitlab_http_status(302)
end
end end
context 'when create branch service fails' do context 'when create branch service fails' do
......
...@@ -2,7 +2,6 @@ require 'spec_helper' ...@@ -2,7 +2,6 @@ require 'spec_helper'
describe Projects::ClustersController do describe Projects::ClustersController do
include AccessMatchersForController include AccessMatchersForController
include GoogleApi::CloudPlatformHelpers
set(:project) { create(:project) } set(:project) { create(:project) }
...@@ -333,7 +332,7 @@ describe Projects::ClustersController do ...@@ -333,7 +332,7 @@ describe Projects::ClustersController do
context 'when cluster is provided by GCP' do context 'when cluster is provided by GCP' do
context 'when cluster is created' do context 'when cluster is created' do
let!(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) } let!(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, projects: [project]) }
it "destroys and redirects back to clusters list" do it "destroys and redirects back to clusters list" do
expect { go } expect { go }
...@@ -347,7 +346,7 @@ describe Projects::ClustersController do ...@@ -347,7 +346,7 @@ describe Projects::ClustersController do
end end
context 'when cluster is being created' do context 'when cluster is being created' do
let!(:cluster) { create(:cluster, :providing_by_gcp, projects: [project]) } let!(:cluster) { create(:cluster, :providing_by_gcp, :production_environment, projects: [project]) }
it "destroys and redirects back to clusters list" do it "destroys and redirects back to clusters list" do
expect { go } expect { go }
...@@ -361,7 +360,7 @@ describe Projects::ClustersController do ...@@ -361,7 +360,7 @@ describe Projects::ClustersController do
end end
context 'when cluster is provided by user' do context 'when cluster is provided by user' do
let!(:cluster) { create(:cluster, :provided_by_user, projects: [project]) } let!(:cluster) { create(:cluster, :provided_by_user, :production_environment, projects: [project]) }
it "destroys and redirects back to clusters list" do it "destroys and redirects back to clusters list" do
expect { go } expect { go }
...@@ -376,7 +375,7 @@ describe Projects::ClustersController do ...@@ -376,7 +375,7 @@ describe Projects::ClustersController do
end end
describe 'security' do describe 'security' do
set(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) } set(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, projects: [project]) }
it { expect { go }.to be_allowed_for(:admin) } 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(:owner).of(project) }
......
...@@ -21,6 +21,13 @@ describe Projects::EnvironmentsController do ...@@ -21,6 +21,13 @@ describe Projects::EnvironmentsController do
expect(response).to have_gitlab_http_status(:ok) expect(response).to have_gitlab_http_status(:ok)
end end
it 'expires etag cache to force reload environments list' do
expect_any_instance_of(Gitlab::EtagCaching::Store)
.to receive(:touch).with(project_environments_path(project, format: :json))
get :index, environment_params
end
end end
context 'when requesting JSON response for folders' do context 'when requesting JSON response for folders' do
......
...@@ -21,6 +21,18 @@ describe Projects::GroupLinksController do ...@@ -21,6 +21,18 @@ describe Projects::GroupLinksController do
end end
end end
context 'when project is not allowed to be shared with a group' do
before do
group.update_attributes(share_with_group_lock: false)
end
include_context 'link project to group'
it 'responds with status 404' do
expect(response).to have_gitlab_http_status(404)
end
end
context 'when user has access to group he want to link project to' do context 'when user has access to group he want to link project to' do
before do before do
group.add_developer(user) group.add_developer(user)
......
...@@ -2,16 +2,15 @@ require 'spec_helper' ...@@ -2,16 +2,15 @@ require 'spec_helper'
describe Projects::ImportsController do describe Projects::ImportsController do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:project) { create(:project) }
before do
sign_in(user)
project.add_master(user)
end
describe 'GET #show' do describe 'GET #show' do
context 'when repository does not exists' do context 'when repository does not exists' do
let(:project) { create(:project) }
before do
sign_in(user)
project.add_master(user)
end
it 'renders template' do it 'renders template' do
get :show, namespace_id: project.namespace.to_param, project_id: project get :show, namespace_id: project.namespace.to_param, project_id: project
...@@ -28,11 +27,6 @@ describe Projects::ImportsController do ...@@ -28,11 +27,6 @@ describe Projects::ImportsController do
context 'when repository exists' do context 'when repository exists' do
let(:project) { create(:project_empty_repo, import_url: 'https://github.com/vim/vim.git') } let(:project) { create(:project_empty_repo, import_url: 'https://github.com/vim/vim.git') }
before do
sign_in(user)
project.add_master(user)
end
context 'when import is in progress' do context 'when import is in progress' do
before do before do
project.update_attribute(:import_status, :started) project.update_attribute(:import_status, :started)
......
require('spec_helper') require 'spec_helper'
describe Projects::IssuesController do describe Projects::IssuesController do
let(:project) { create(:project) } let(:project) { create(:project) }
......
...@@ -184,7 +184,7 @@ describe Projects::ProjectMembersController do ...@@ -184,7 +184,7 @@ describe Projects::ProjectMembersController do
project.add_master(user) project.add_master(user)
end end
it 'cannot remove himself from the project' do it 'cannot remove themselves from the project' do
delete :leave, namespace_id: project.namespace, delete :leave, namespace_id: project.namespace,
project_id: project project_id: project
......
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