From d87918510a866a5fcbbc2f899ad65c6938ebf5f5 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 6 Feb 2020 09:09:06 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab-ci.yml | 2 +- .gitlab/ci/frontend.gitlab-ci.yml | 2 +- .gitlab/ci/global.gitlab-ci.yml | 6 +- .rubocop.yml | 2 + .../pages/projects/graphs/charts/index.js | 4 +- .../metrics/dashboard/base_service.rb | 6 +- changelogs/unreleased/self-monitoring-env.yml | 5 + doc/development/pipelines.md | 8 +- .../self_monitoring/project/create_service.rb | 12 ++ lib/gitlab/diff/highlight_cache.rb | 6 - lib/gitlab/metrics/dashboard/finder.rb | 2 + locale/gitlab.pot | 3 + .../groups/avatars_controller_spec.rb | 2 +- .../groups/boards_controller_spec.rb | 10 +- .../groups/children_controller_spec.rb | 8 +- .../clusters/applications_controller_spec.rb | 16 +- .../groups/clusters_controller_spec.rb | 4 +- .../groups/group_links_controller_spec.rb | 14 +- .../groups/group_members_controller_spec.rb | 34 ++-- .../groups/labels_controller_spec.rb | 2 +- .../groups/milestones_controller_spec.rb | 24 +-- .../groups/runners_controller_spec.rb | 24 +-- .../groups/settings/ci_cd_controller_spec.rb | 12 +- .../groups/variables_controller_spec.rb | 4 +- .../projects/issues_controller_spec.rb | 6 - .../project/create_service_spec.rb | 19 ++ spec/lib/gitlab/diff/highlight_cache_spec.rb | 7 - spec/support/helpers/dns_helpers.rb | 4 +- .../project_policy_table_shared_context.rb | 164 ++++++++++++++++++ 29 files changed, 302 insertions(+), 110 deletions(-) create mode 100644 changelogs/unreleased/self-monitoring-env.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6a06f3ca325..1b76a3088fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.34" +image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-9.6-graphicsmagick-1.3.34" stages: - sync diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 50358d65513..c8ad888dc08 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -78,7 +78,7 @@ - .default-retry - .default-before_script - .assets-compile-cache - image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.34-docker-19.03.1 + image: registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-graphicsmagick-1.3.34-docker-19.03.1 stage: prepare services: - docker:19.03.0-dind diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index 8253e74b2e8..f5b6a353079 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -9,6 +9,8 @@ - unknown_failure - api_failure - runner_system_failure + - job_execution_timeout + - stuck_or_timeout_failure .default-before_script: before_script: @@ -203,7 +205,7 @@ - name: redis:alpine .use-pg10: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.34" + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-10-graphicsmagick-1.3.34" services: - name: postgres:10.9 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] @@ -217,7 +219,7 @@ - name: elasticsearch:6.4.2 .use-pg10-ee: - image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.34" + image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-10-graphicsmagick-1.3.34" services: - name: postgres:10.9 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] diff --git a/.rubocop.yml b/.rubocop.yml index 9ebb8168a4f..e4d16d53193 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -343,6 +343,8 @@ RSpec/HaveGitlabHttpStatus: - 'ee/spec/controllers/*.rb' - 'spec/controllers/projects/**/*.rb' - 'ee/spec/controllers/projects/**/*.rb' + - 'spec/controllers/groups/**/*.rb' + - 'ee/spec/controllers/groups/**/*.rb' - 'spec/requests/*.rb' - 'ee/spec/requests/*.rb' diff --git a/app/assets/javascripts/pages/projects/graphs/charts/index.js b/app/assets/javascripts/pages/projects/graphs/charts/index.js index 314519ee442..1b94fb06107 100644 --- a/app/assets/javascripts/pages/projects/graphs/charts/index.js +++ b/app/assets/javascripts/pages/projects/graphs/charts/index.js @@ -1,7 +1,5 @@ import $ from 'jquery'; import Chart from 'chart.js'; -import _ from 'underscore'; - import { barChartOptions, pieChartOptions } from '~/lib/utils/chart_utils'; document.addEventListener('DOMContentLoaded', () => { @@ -40,7 +38,7 @@ document.addEventListener('DOMContentLoaded', () => { backgroundColor: 'rgba(220,220,220,0.5)', borderColor: 'rgba(220,220,220,1)', borderWidth: 1, - data: _.values(data), + data: Object.values(data), }, ], }); diff --git a/app/services/metrics/dashboard/base_service.rb b/app/services/metrics/dashboard/base_service.rb index 40c015dff9c..3cd7d8437b1 100644 --- a/app/services/metrics/dashboard/base_service.rb +++ b/app/services/metrics/dashboard/base_service.rb @@ -46,10 +46,14 @@ module Metrics # Returns a new dashboard Hash, supplemented with DB info def process_dashboard ::Gitlab::Metrics::Dashboard::Processor - .new(project, raw_dashboard, sequence, params) + .new(project, raw_dashboard, sequence, process_params) .process end + def process_params + params + end + # @return [String] Relative filepath of the dashboard yml def dashboard_path params[:dashboard_path] diff --git a/changelogs/unreleased/self-monitoring-env.yml b/changelogs/unreleased/self-monitoring-env.yml new file mode 100644 index 00000000000..1e8ec2b83ed --- /dev/null +++ b/changelogs/unreleased/self-monitoring-env.yml @@ -0,0 +1,5 @@ +--- +title: Create an environment for self monitoring project +merge_request: 24403 +author: +type: added diff --git a/doc/development/pipelines.md b/doc/development/pipelines.md index af278dafb76..42b4e7385dc 100644 --- a/doc/development/pipelines.md +++ b/doc/development/pipelines.md @@ -42,9 +42,9 @@ The current stages are: ## Default image The default image is currently -`registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.34`. +`registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.6.5-golang-1.12-git-2.24-lfs-2.9-chrome-73.0-node-12.x-yarn-1.21-postgresql-9.6-graphicsmagick-1.3.34`. -It includes Ruby 2.6.5, Go 1.12, Git 2.24, Git LFS 2.9, Chrome 73, Node 12, Yarn 1.16, +It includes Ruby 2.6.5, Go 1.12, Git 2.24, Git LFS 2.9, Chrome 73, Node 12, Yarn 1.21, PostgreSQL 9.6, and Graphics Magick 1.3.33. The images used in our pipelines are configured in the @@ -71,8 +71,8 @@ These common definitions are: - `.default-tags`: Ensures a job has the `gitlab-org` tag to ensure it's using our dedicated runners. -- `.default-retry`: Allows a job to retry upon `unknown_failure`, `api_failure`, - `runner_system_failure`. +- `.default-retry`: Allows a job to [retry](../ci/yaml/README.md#retry) upon `unknown_failure`, `api_failure`, + `runner_system_failure`, `job_execution_timeout`, or `stuck_or_timeout_failure`. - `.default-before_script`: Allows a job to use a default `before_script` definition suitable for Ruby/Rails tasks that may need a database running (e.g. tests). - `.default-cache`: Allows a job to use a default `cache` definition suitable for diff --git a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb index 49adc93fdc8..ef2e4055c62 100644 --- a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb +++ b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb @@ -15,6 +15,7 @@ module Gitlab :create_group, :create_project, :save_project_id, + :create_environment, :add_prometheus_manual_configuration, :track_event @@ -80,6 +81,17 @@ module Gitlab end end + def create_environment(result) + environment = ::Environment.new(project_id: result[:project].id, name: 'production') + + if environment.save + success(result) + else + log_error("Could not create environment for the Self monitoring project. Errors: %{errors}" % { errors: environment.errors.full_messages }) + error(_('Could not create environment')) + end + end + def add_prometheus_manual_configuration(result) return success(result) unless prometheus_enabled? return success(result) unless prometheus_listen_address.present? diff --git a/lib/gitlab/diff/highlight_cache.rb b/lib/gitlab/diff/highlight_cache.rb index 0cb8020bacb..0a8fbb9a673 100644 --- a/lib/gitlab/diff/highlight_cache.rb +++ b/lib/gitlab/diff/highlight_cache.rb @@ -93,8 +93,6 @@ module Gitlab # redis.expire(key, EXPIRATION) end - - record_metrics(redis.memory("USAGE", key)) end # Subsequent read_file calls would need the latest cache. @@ -103,10 +101,6 @@ module Gitlab clear_memoization(:cacheable_files) end - def record_metrics(memory_usage) - self.class.gitlab_redis_diff_caching_memory_usage_bytes.observe({}, memory_usage) - end - def file_paths strong_memoize(:file_paths) do diff_files.collect(&:file_path) diff --git a/lib/gitlab/metrics/dashboard/finder.rb b/lib/gitlab/metrics/dashboard/finder.rb index 268112f33a9..0374484d357 100644 --- a/lib/gitlab/metrics/dashboard/finder.rb +++ b/lib/gitlab/metrics/dashboard/finder.rb @@ -34,6 +34,8 @@ module Gitlab # cluster, one of [:admin, :project, :group] # @param options - grafana_url [String] URL pointing # to a grafana dashboard panel + # @param options - prometheus_alert_id [Integer] ID of + # a PrometheusAlert. For dashboard embeds. # @return [Hash] def find(project, user, options = {}) service_for(options) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index fba3dd8b55d..9062f1fc5ac 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -5379,6 +5379,9 @@ msgstr "" msgid "Could not create Wiki Repository at this time. Please try again later." msgstr "" +msgid "Could not create environment" +msgstr "" + msgid "Could not create group" msgstr "" diff --git a/spec/controllers/groups/avatars_controller_spec.rb b/spec/controllers/groups/avatars_controller_spec.rb index 7fffafaa2d4..1229328000b 100644 --- a/spec/controllers/groups/avatars_controller_spec.rb +++ b/spec/controllers/groups/avatars_controller_spec.rb @@ -25,6 +25,6 @@ describe Groups::AvatarsController do delete :destroy, params: { group_id: group } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end diff --git a/spec/controllers/groups/boards_controller_spec.rb b/spec/controllers/groups/boards_controller_spec.rb index e4232c2c1ab..79edfd69429 100644 --- a/spec/controllers/groups/boards_controller_spec.rb +++ b/spec/controllers/groups/boards_controller_spec.rb @@ -33,7 +33,7 @@ describe Groups::BoardsController do it 'returns a not found 404 response' do list_boards - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.content_type).to eq 'text/html' end end @@ -76,7 +76,7 @@ describe Groups::BoardsController do it 'returns a not found 404 response' do list_boards format: :json - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.content_type).to eq 'application/json' end end @@ -111,7 +111,7 @@ describe Groups::BoardsController do it 'returns a not found 404 response' do read_board board: board - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.content_type).to eq 'text/html' end end @@ -148,7 +148,7 @@ describe Groups::BoardsController do it 'returns a not found 404 response' do read_board board: board, format: :json - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(response.content_type).to eq 'application/json' end end @@ -160,7 +160,7 @@ describe Groups::BoardsController do read_board board: another_board - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end diff --git a/spec/controllers/groups/children_controller_spec.rb b/spec/controllers/groups/children_controller_spec.rb index 171326f3f8b..a8921300e6b 100644 --- a/spec/controllers/groups/children_controller_spec.rb +++ b/spec/controllers/groups/children_controller_spec.rb @@ -142,7 +142,7 @@ describe Groups::ChildrenController do get :index, params: { group_id: subgroup.to_param, filter: 'test' }, format: :json - expect(response).to have_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'returns an array with one element when only one result is matched' do @@ -185,7 +185,7 @@ describe Groups::ChildrenController do get :index, params: { group_id: group.to_param, filter: 'filter', per_page: 3 }, format: :json - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end it 'includes pagination headers' do @@ -316,7 +316,7 @@ describe Groups::ChildrenController do it 'correctly calculates the counts' do get :index, params: { group_id: group.to_param, sort: 'id_asc', page: 2 }, format: :json - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -328,7 +328,7 @@ describe Groups::ChildrenController do get :index, params: { group_id: group }, format: :json - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end diff --git a/spec/controllers/groups/clusters/applications_controller_spec.rb b/spec/controllers/groups/clusters/applications_controller_spec.rb index 21533d1c89a..bab9e64cfdb 100644 --- a/spec/controllers/groups/clusters/applications_controller_spec.rb +++ b/spec/controllers/groups/clusters/applications_controller_spec.rb @@ -43,7 +43,7 @@ describe Groups::Clusters::ApplicationsController do expect(ClusterInstallAppWorker).to receive(:perform_async).with(application, anything).once expect { subject }.to change { current_application.count } - expect(response).to have_http_status(:no_content) + expect(response).to have_gitlab_http_status(:no_content) expect(cluster.application_helm).to be_scheduled end @@ -54,7 +54,7 @@ describe Groups::Clusters::ApplicationsController do it 'return 404' do expect { subject }.not_to change { current_application.count } - expect(response).to have_http_status(:not_found) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -62,7 +62,7 @@ describe Groups::Clusters::ApplicationsController do let(:application) { 'unkwnown-app' } it 'return 404' do - is_expected.to have_http_status(:not_found) + is_expected.to have_gitlab_http_status(:not_found) end end @@ -72,7 +72,7 @@ describe Groups::Clusters::ApplicationsController do end it 'returns 400' do - is_expected.to have_http_status(:bad_request) + is_expected.to have_gitlab_http_status(:bad_request) end end end @@ -107,7 +107,7 @@ describe Groups::Clusters::ApplicationsController do it "schedules an application update" do expect(ClusterPatchAppWorker).to receive(:perform_async).with(application.name, anything).once - is_expected.to have_http_status(:no_content) + is_expected.to have_gitlab_http_status(:no_content) expect(cluster.application_cert_manager).to be_scheduled end @@ -118,13 +118,13 @@ describe Groups::Clusters::ApplicationsController do cluster.destroy! end - it { is_expected.to have_http_status(:not_found) } + it { is_expected.to have_gitlab_http_status(:not_found) } end context 'when application is unknown' do let(:application_name) { 'unkwnown-app' } - it { is_expected.to have_http_status(:not_found) } + it { is_expected.to have_gitlab_http_status(:not_found) } end context 'when application is already scheduled' do @@ -132,7 +132,7 @@ describe Groups::Clusters::ApplicationsController do application.make_scheduled! end - it { is_expected.to have_http_status(:bad_request) } + it { is_expected.to have_gitlab_http_status(:bad_request) } end end diff --git a/spec/controllers/groups/clusters_controller_spec.rb b/spec/controllers/groups/clusters_controller_spec.rb index cf90d388a61..cdb45e1946e 100644 --- a/spec/controllers/groups/clusters_controller_spec.rb +++ b/spec/controllers/groups/clusters_controller_spec.rb @@ -654,7 +654,7 @@ describe Groups::ClustersController do go(format: :json) cluster.reload - expect(response).to have_http_status(:no_content) + expect(response).to have_gitlab_http_status(:no_content) expect(cluster.enabled).to be_falsey expect(cluster.name).to eq('my-new-cluster-name') expect(cluster).not_to be_managed @@ -674,7 +674,7 @@ describe Groups::ClustersController do it 'rejects changes' do go(format: :json) - expect(response).to have_http_status(:bad_request) + expect(response).to have_gitlab_http_status(:bad_request) end end end diff --git a/spec/controllers/groups/group_links_controller_spec.rb b/spec/controllers/groups/group_links_controller_spec.rb index fc015471d5c..c062de468fc 100644 --- a/spec/controllers/groups/group_links_controller_spec.rb +++ b/spec/controllers/groups/group_links_controller_spec.rb @@ -100,7 +100,7 @@ describe Groups::GroupLinksController do it 'renders 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -113,7 +113,7 @@ describe Groups::GroupLinksController do it 'renders 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -126,7 +126,7 @@ describe Groups::GroupLinksController do it 'renders 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -168,7 +168,7 @@ describe Groups::GroupLinksController do it 'renders 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -180,7 +180,7 @@ describe Groups::GroupLinksController do it 'renders 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -210,7 +210,7 @@ describe Groups::GroupLinksController do it 'renders 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -222,7 +222,7 @@ describe Groups::GroupLinksController do it 'renders 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/groups/group_members_controller_spec.rb b/spec/controllers/groups/group_members_controller_spec.rb index 1c8a2bd160d..f69d0602404 100644 --- a/spec/controllers/groups/group_members_controller_spec.rb +++ b/spec/controllers/groups/group_members_controller_spec.rb @@ -13,7 +13,7 @@ describe Groups::GroupMembersController do it 'renders index with 200 status code' do get :index, params: { group_id: group } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template(:index) end @@ -105,7 +105,7 @@ describe Groups::GroupMembersController do access_level: Gitlab::Access::GUEST } - expect(response).to have_gitlab_http_status(403) + expect(response).to have_gitlab_http_status(:forbidden) expect(group.users).not_to include group_user end end @@ -173,7 +173,7 @@ describe Groups::GroupMembersController do it 'returns 403' do delete :destroy, params: { group_id: group, id: 42 } - expect(response).to have_gitlab_http_status(403) + expect(response).to have_gitlab_http_status(:forbidden) end end @@ -186,7 +186,7 @@ describe Groups::GroupMembersController do it 'returns 403' do delete :destroy, params: { group_id: group, id: member } - expect(response).to have_gitlab_http_status(403) + expect(response).to have_gitlab_http_status(:forbidden) expect(group.members).to include member end end @@ -223,7 +223,7 @@ describe Groups::GroupMembersController do it 'returns 404' do delete :leave, params: { group_id: group } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -244,7 +244,7 @@ describe Groups::GroupMembersController do it 'supports json request' do delete :leave, params: { group_id: group }, format: :json - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(json_response['notice']).to eq "You left the \"#{group.name}\" group." end end @@ -257,7 +257,7 @@ describe Groups::GroupMembersController do it 'cannot removes himself from the group' do delete :leave, params: { group_id: group } - expect(response).to have_gitlab_http_status(403) + expect(response).to have_gitlab_http_status(:forbidden) end end @@ -304,7 +304,7 @@ describe Groups::GroupMembersController do it 'returns 403' do post :approve_access_request, params: { group_id: group, id: 42 } - expect(response).to have_gitlab_http_status(403) + expect(response).to have_gitlab_http_status(:forbidden) end end @@ -317,7 +317,7 @@ describe Groups::GroupMembersController do it 'returns 403' do post :approve_access_request, params: { group_id: group, id: member } - expect(response).to have_gitlab_http_status(403) + expect(response).to have_gitlab_http_status(:forbidden) expect(group.members).not_to include member end end @@ -348,7 +348,7 @@ describe Groups::GroupMembersController do it 'is successful' do get :index, params: { group_id: group } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -356,7 +356,7 @@ describe Groups::GroupMembersController do it 'is successful' do post :create, params: { group_id: group, users: user, access_level: Gitlab::Access::GUEST } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -370,7 +370,7 @@ describe Groups::GroupMembersController do }, format: :js - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -378,7 +378,7 @@ describe Groups::GroupMembersController do it 'is successful' do delete :destroy, params: { group_id: group, id: membership } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -388,7 +388,7 @@ describe Groups::GroupMembersController do post :request_access, params: { group_id: group } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -397,7 +397,7 @@ describe Groups::GroupMembersController do access_request = create(:group_member, :access_request, group: group) post :approve_access_request, params: { group_id: group, id: access_request } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -407,7 +407,7 @@ describe Groups::GroupMembersController do delete :leave, params: { group_id: group } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end @@ -415,7 +415,7 @@ describe Groups::GroupMembersController do it 'is successful' do post :resend_invite, params: { group_id: group, id: membership } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) end end end diff --git a/spec/controllers/groups/labels_controller_spec.rb b/spec/controllers/groups/labels_controller_spec.rb index d4780fa2675..90f91a4ff72 100644 --- a/spec/controllers/groups/labels_controller_spec.rb +++ b/spec/controllers/groups/labels_controller_spec.rb @@ -53,7 +53,7 @@ describe Groups::LabelsController do post :toggle_subscription, params: { group_id: group.to_param, id: label.to_param } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end diff --git a/spec/controllers/groups/milestones_controller_spec.rb b/spec/controllers/groups/milestones_controller_spec.rb index 068ed7fd380..afb950bc538 100644 --- a/spec/controllers/groups/milestones_controller_spec.rb +++ b/spec/controllers/groups/milestones_controller_spec.rb @@ -42,7 +42,7 @@ describe Groups::MilestonesController do get :index, params: { group_id: group.to_param } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.body).to include(milestone.title) end @@ -74,7 +74,7 @@ describe Groups::MilestonesController do get :index, params: { group_id: group.to_param } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.body).to include(milestone.title) end end @@ -84,7 +84,7 @@ describe Groups::MilestonesController do it 'does not return milestone' do get :index, params: { group_id: public_group.to_param } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.body).not_to include(private_milestone.title) end end @@ -125,7 +125,7 @@ describe Groups::MilestonesController do it 'returns the milestone' do get :index, params: { group_id: public_group.to_param } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.body).to include(private_milestone.title) end end @@ -141,7 +141,7 @@ describe Groups::MilestonesController do it 'shows subgroup milestones that user has access to' do get :index, params: { group_id: group.to_param } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.body).to include(group_milestone.title) expect(response.body).to include(sub_project_milestone.title) expect(response.body).to include(subgroup_milestone.title) @@ -157,7 +157,7 @@ describe Groups::MilestonesController do it 'does not show subgroup milestones' do get :index, params: { group_id: group.to_param } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.body).to include(group_milestone.title) expect(response.body).not_to include(sub_project_milestone.title) expect(response.body).not_to include(subgroup_milestone.title) @@ -179,7 +179,7 @@ describe Groups::MilestonesController do expect(milestones.count).to eq(2) expect(milestones.first["title"]).to eq("group milestone") expect(milestones.second["title"]).to eq("legacy") - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response.content_type).to eq 'application/json' end @@ -330,7 +330,7 @@ describe Groups::MilestonesController do it 'does not redirect' do get :index, params: { group_id: group.to_param } - expect(response).not_to have_gitlab_http_status(301) + expect(response).not_to have_gitlab_http_status(:moved_permanently) end end @@ -349,7 +349,7 @@ describe Groups::MilestonesController do it 'does not redirect' do get :show, params: { group_id: group.to_param, id: title } - expect(response).not_to have_gitlab_http_status(301) + expect(response).not_to have_gitlab_http_status(:moved_permanently) end end @@ -439,7 +439,7 @@ describe Groups::MilestonesController do milestone: { title: title } } - expect(response).not_to have_gitlab_http_status(404) + expect(response).not_to have_gitlab_http_status(:not_found) end it 'does not redirect to the correct casing' do @@ -449,7 +449,7 @@ describe Groups::MilestonesController do milestone: { title: title } } - expect(response).not_to have_gitlab_http_status(301) + expect(response).not_to have_gitlab_http_status(:moved_permanently) end end @@ -463,7 +463,7 @@ describe Groups::MilestonesController do milestone: { title: title } } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end diff --git a/spec/controllers/groups/runners_controller_spec.rb b/spec/controllers/groups/runners_controller_spec.rb index 14b0cf959b3..bf556078eec 100644 --- a/spec/controllers/groups/runners_controller_spec.rb +++ b/spec/controllers/groups/runners_controller_spec.rb @@ -21,7 +21,7 @@ describe Groups::RunnersController do it 'renders show with 200 status code' do get :show, params: { group_id: group, id: runner } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template(:show) end end @@ -34,7 +34,7 @@ describe Groups::RunnersController do it 'renders a 404' do get :show, params: { group_id: group, id: runner } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -48,7 +48,7 @@ describe Groups::RunnersController do it 'renders show with 200 status code' do get :edit, params: { group_id: group, id: runner } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template(:edit) end end @@ -61,7 +61,7 @@ describe Groups::RunnersController do it 'renders a 404' do get :edit, params: { group_id: group, id: runner } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -79,7 +79,7 @@ describe Groups::RunnersController do post :update, params: params.merge(runner: { description: new_desc } ) end.to change { runner.ensure_runner_queue_value } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(runner.reload.description).to eq(new_desc) end end @@ -96,7 +96,7 @@ describe Groups::RunnersController do post :update, params: params.merge(runner: { description: old_desc.swapcase } ) end.not_to change { runner.ensure_runner_queue_value } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(runner.reload.description).to eq(old_desc) end end @@ -111,7 +111,7 @@ describe Groups::RunnersController do it 'destroys the runner and redirects' do delete :destroy, params: params - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(Ci::Runner.find_by(id: runner.id)).to be_nil end end @@ -124,7 +124,7 @@ describe Groups::RunnersController do it 'responds 404 and does not destroy the runner' do delete :destroy, params: params - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(Ci::Runner.find_by(id: runner.id)).to be_present end end @@ -143,7 +143,7 @@ describe Groups::RunnersController do post :resume, params: params end.to change { runner.ensure_runner_queue_value } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(runner.reload.active).to eq(true) end end @@ -160,7 +160,7 @@ describe Groups::RunnersController do post :resume, params: params end.not_to change { runner.ensure_runner_queue_value } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(runner.reload.active).to eq(false) end end @@ -179,7 +179,7 @@ describe Groups::RunnersController do post :pause, params: params end.to change { runner.ensure_runner_queue_value } - expect(response).to have_gitlab_http_status(302) + expect(response).to have_gitlab_http_status(:found) expect(runner.reload.active).to eq(false) end end @@ -196,7 +196,7 @@ describe Groups::RunnersController do post :pause, params: params end.not_to change { runner.ensure_runner_queue_value } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) expect(runner.reload.active).to eq(true) end end diff --git a/spec/controllers/groups/settings/ci_cd_controller_spec.rb b/spec/controllers/groups/settings/ci_cd_controller_spec.rb index 897ba491036..4e8cb3f94fb 100644 --- a/spec/controllers/groups/settings/ci_cd_controller_spec.rb +++ b/spec/controllers/groups/settings/ci_cd_controller_spec.rb @@ -21,7 +21,7 @@ describe Groups::Settings::CiCdController do it 'renders show with 200 status code' do get :show, params: { group_id: group } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to render_template(:show) end end @@ -34,7 +34,7 @@ describe Groups::Settings::CiCdController do it 'renders a 404' do get :show, params: { group_id: group } - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end @@ -47,7 +47,7 @@ describe Groups::Settings::CiCdController do it 'renders show with 200 status code' do get :show, params: { group_id: group } - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end @@ -79,7 +79,7 @@ describe Groups::Settings::CiCdController do it 'renders a 404' do subject - expect(response).to have_gitlab_http_status(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -99,7 +99,7 @@ describe Groups::Settings::CiCdController do group.add_maintainer(user) end - it { is_expected.to have_gitlab_http_status(404) } + it { is_expected.to have_gitlab_http_status(:not_found) } end context 'when user has enough privileges' do @@ -170,7 +170,7 @@ describe Groups::Settings::CiCdController do group.add_owner(user) end - it { is_expected.to have_gitlab_http_status(404) } + it { is_expected.to have_gitlab_http_status(:not_found) } end context 'when user is an admin' do diff --git a/spec/controllers/groups/variables_controller_spec.rb b/spec/controllers/groups/variables_controller_spec.rb index 2d9c5c9d799..d6c790ae7b8 100644 --- a/spec/controllers/groups/variables_controller_spec.rb +++ b/spec/controllers/groups/variables_controller_spec.rb @@ -50,7 +50,7 @@ describe Groups::VariablesController do it 'is successful' do get :show, params: { group_id: group }, format: :json - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -66,7 +66,7 @@ describe Groups::VariablesController do }, format: :json - expect(response).to have_gitlab_http_status(200) + expect(response).to have_gitlab_http_status(:ok) end end end diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb index 608e4a58e5a..fb4d1cf59fe 100644 --- a/spec/controllers/projects/issues_controller_spec.rb +++ b/spec/controllers/projects/issues_controller_spec.rb @@ -1084,12 +1084,6 @@ describe Projects::IssuesController do it 'creates a sentry issue' do expect { subject }.to change(SentryIssue, :count) end - - it 'with existing issue it will not create an issue' do - post_new_issue(sentry_issue_attributes: { sentry_issue_identifier: 1234567 }) - - expect { subject }.not_to change(Issue, :count) - end end end diff --git a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb index e425acd4ae5..8311f3f4539 100644 --- a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb +++ b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb @@ -125,6 +125,25 @@ describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService do expect(application_setting.self_monitoring_project_id).to eq(project.id) end + it 'creates an environment for the project' do + expect(project.default_environment.name).to eq('production') + end + + context 'when the environment creation fails' do + let(:environment) { build(:environment, name: 'production') } + + it 'returns error' do + allow(Environment).to receive(:new).and_return(environment) + allow(environment).to receive(:save).and_return(false) + + expect(result).to eq( + status: :error, + message: 'Could not create environment', + last_step: :create_environment + ) + end + end + it 'returns error when saving project ID fails' do allow(application_setting).to receive(:update).and_call_original allow(application_setting).to receive(:update) diff --git a/spec/lib/gitlab/diff/highlight_cache_spec.rb b/spec/lib/gitlab/diff/highlight_cache_spec.rb index c1ec97ae88c..218c393c409 100644 --- a/spec/lib/gitlab/diff/highlight_cache_spec.rb +++ b/spec/lib/gitlab/diff/highlight_cache_spec.rb @@ -101,13 +101,6 @@ describe Gitlab::Diff::HighlightCache, :clean_gitlab_redis_cache do let(:paths) { merge_request.diffs.raw_diff_files.select(&:text?).map(&:file_path) } end - it 'updates memory usage metrics' do - expect(described_class.gitlab_redis_diff_caching_memory_usage_bytes) - .to receive(:observe).and_call_original - - cache.send(:write_to_redis_hash, diff_hash) - end - context 'different diff_collections for the same diffable' do before do cache.write_if_empty diff --git a/spec/support/helpers/dns_helpers.rb b/spec/support/helpers/dns_helpers.rb index 941b57c2c97..29be4da6902 100644 --- a/spec/support/helpers/dns_helpers.rb +++ b/spec/support/helpers/dns_helpers.rb @@ -17,13 +17,13 @@ module DnsHelpers end def stub_invalid_dns! - allow(Addrinfo).to receive(:getaddrinfo).with(/foobar\.\w|(\d{1,3}\.){4,}\d{1,3}/i, anything, nil, :STREAM) do + allow(Addrinfo).to receive(:getaddrinfo).with(/\Afoobar\.\w|(\d{1,3}\.){4,}\d{1,3}\z/i, anything, nil, :STREAM) do raise SocketError.new("getaddrinfo: Name or service not known") end end def permit_local_dns! - local_addresses = /(127|10)\.0\.0\.\d{1,3}|(192\.168|172\.16)\.\d{1,3}\.\d{1,3}|0\.0\.0\.0|localhost/i + local_addresses = /\A(127|10)\.0\.0\.\d{1,3}|(192\.168|172\.16)\.\d{1,3}\.\d{1,3}|0\.0\.0\.0|localhost\z/i allow(Addrinfo).to receive(:getaddrinfo).with(local_addresses, anything, nil, :STREAM).and_call_original allow(Addrinfo).to receive(:getaddrinfo).with(local_addresses, anything, nil, :STREAM, anything, anything).and_call_original end diff --git a/spec/support/shared_contexts/policies/project_policy_table_shared_context.rb b/spec/support/shared_contexts/policies/project_policy_table_shared_context.rb index 0a918ccde81..efd82ecb15a 100644 --- a/spec/support/shared_contexts/policies/project_policy_table_shared_context.rb +++ b/spec/support/shared_contexts/policies/project_policy_table_shared_context.rb @@ -318,5 +318,169 @@ RSpec.shared_context 'ProjectPolicyTable context' do :private | :non_member | 0 :private | :anonymous | 0 end + + # :snippet_level, :project_level, :feature_access_level, :membership, :expected_count + def permission_table_for_project_snippet_access + :public | :public | :enabled | :admin | 1 + :public | :public | :enabled | :reporter | 1 + :public | :public | :enabled | :guest | 1 + :public | :public | :enabled | :non_member | 1 + :public | :public | :enabled | :anonymous | 1 + + :public | :public | :private | :admin | 1 + :public | :public | :private | :reporter | 1 + :public | :public | :private | :guest | 1 + :public | :public | :private | :non_member | 0 + :public | :public | :private | :anonymous | 0 + + :public | :public | :disabled | :admin | 1 + :public | :public | :disabled | :reporter | 0 + :public | :public | :disabled | :guest | 0 + :public | :public | :disabled | :non_member | 0 + :public | :public | :disabled | :anonymous | 0 + + :public | :internal | :enabled | :admin | 1 + :public | :internal | :enabled | :reporter | 1 + :public | :internal | :enabled | :guest | 1 + :public | :internal | :enabled | :non_member | 1 + :public | :internal | :enabled | :anonymous | 0 + + :public | :internal | :private | :admin | 1 + :public | :internal | :private | :reporter | 1 + :public | :internal | :private | :guest | 1 + :public | :internal | :private | :non_member | 0 + :public | :internal | :private | :anonymous | 0 + + :public | :internal | :disabled | :admin | 1 + :public | :internal | :disabled | :reporter | 0 + :public | :internal | :disabled | :guest | 0 + :public | :internal | :disabled | :non_member | 0 + :public | :internal | :disabled | :anonymous | 0 + + :public | :private | :private | :admin | 1 + :public | :private | :private | :reporter | 1 + :public | :private | :private | :guest | 1 + :public | :private | :private | :non_member | 0 + :public | :private | :private | :anonymous | 0 + + :public | :private | :disabled | :reporter | 0 + :public | :private | :disabled | :guest | 0 + :public | :private | :disabled | :non_member | 0 + :public | :private | :disabled | :anonymous | 0 + + :internal | :public | :enabled | :admin | 1 + :internal | :public | :enabled | :reporter | 1 + :internal | :public | :enabled | :guest | 1 + :internal | :public | :enabled | :non_member | 1 + :internal | :public | :enabled | :anonymous | 0 + + :internal | :public | :private | :admin | 1 + :internal | :public | :private | :reporter | 1 + :internal | :public | :private | :guest | 1 + :internal | :public | :private | :non_member | 0 + :internal | :public | :private | :anonymous | 0 + + :internal | :public | :disabled | :admin | 1 + :internal | :public | :disabled | :reporter | 0 + :internal | :public | :disabled | :guest | 0 + :internal | :public | :disabled | :non_member | 0 + :internal | :public | :disabled | :anonymous | 0 + + :internal | :internal | :enabled | :admin | 1 + :internal | :internal | :enabled | :reporter | 1 + :internal | :internal | :enabled | :guest | 1 + :internal | :internal | :enabled | :non_member | 1 + :internal | :internal | :enabled | :anonymous | 0 + + :internal | :internal | :private | :admin | 1 + :internal | :internal | :private | :reporter | 1 + :internal | :internal | :private | :guest | 1 + :internal | :internal | :private | :non_member | 0 + :internal | :internal | :private | :anonymous | 0 + + :internal | :internal | :disabled | :admin | 1 + :internal | :internal | :disabled | :reporter | 0 + :internal | :internal | :disabled | :guest | 0 + :internal | :internal | :disabled | :non_member | 0 + :internal | :internal | :disabled | :anonymous | 0 + + :internal | :private | :private | :admin | 1 + :internal | :private | :private | :reporter | 1 + :internal | :private | :private | :guest | 1 + :internal | :private | :private | :non_member | 0 + :internal | :private | :private | :anonymous | 0 + + :internal | :private | :disabled | :admin | 1 + :internal | :private | :disabled | :reporter | 0 + :internal | :private | :disabled | :guest | 0 + :internal | :private | :disabled | :non_member | 0 + :internal | :private | :disabled | :anonymous | 0 + + :private | :public | :enabled | :admin | 1 + :private | :public | :enabled | :reporter | 1 + :private | :public | :enabled | :guest | 1 + :private | :public | :enabled | :non_member | 0 + :private | :public | :enabled | :anonymous | 0 + + :private | :public | :private | :admin | 1 + :private | :public | :private | :reporter | 1 + :private | :public | :private | :guest | 1 + :private | :public | :private | :non_member | 0 + :private | :public | :private | :anonymous | 0 + + :private | :public | :disabled | :admin | 1 + :private | :public | :disabled | :reporter | 0 + :private | :public | :disabled | :guest | 0 + :private | :public | :disabled | :non_member | 0 + :private | :public | :disabled | :anonymous | 0 + + :private | :internal | :enabled | :admin | 1 + :private | :internal | :enabled | :reporter | 1 + :private | :internal | :enabled | :guest | 1 + :private | :internal | :enabled | :non_member | 0 + :private | :internal | :enabled | :anonymous | 0 + + :private | :internal | :private | :admin | 1 + :private | :internal | :private | :reporter | 1 + :private | :internal | :private | :guest | 1 + :private | :internal | :private | :non_member | 0 + :private | :internal | :private | :anonymous | 0 + + :private | :internal | :disabled | :admin | 1 + :private | :internal | :disabled | :reporter | 0 + :private | :internal | :disabled | :guest | 0 + :private | :internal | :disabled | :non_member | 0 + :private | :internal | :disabled | :anonymous | 0 + + :private | :private | :private | :admin | 1 + :private | :private | :private | :reporter | 1 + :private | :private | :private | :guest | 1 + :private | :private | :private | :non_member | 0 + :private | :private | :private | :anonymous | 0 + + :private | :private | :disabled | :admin | 1 + :private | :private | :disabled | :reporter | 0 + :private | :private | :disabled | :guest | 0 + :private | :private | :disabled | :non_member | 0 + :private | :private | :disabled | :anonymous | 0 + end + + # :snippet_level, :membership, :expected_count + def permission_table_for_personal_snippet_access + :public | :admin | 1 + :public | :author | 1 + :public | :non_member | 1 + :public | :anonymous | 1 + + :internal | :admin | 1 + :internal | :author | 1 + :internal | :non_member | 1 + :internal | :anonymous | 0 + + :private | :admin | 1 + :private | :author | 1 + :private | :non_member | 0 + :private | :anonymous | 0 + end # rubocop:enable Metrics/AbcSize end