summaryrefslogtreecommitdiff
path: root/spec/support/shared_contexts
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-06-16 18:25:58 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-06-16 18:25:58 +0000
commita5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch)
treefb69158581673816a8cd895f9d352dcb3c678b1e /spec/support/shared_contexts
parentd16b2e8639e99961de6ddc93909f3bb5c1445ba1 (diff)
downloadgitlab-ce-a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4.tar.gz
Add latest changes from gitlab-org/gitlab@14-0-stable-eev14.0.0-rc42
Diffstat (limited to 'spec/support/shared_contexts')
-rw-r--r--spec/support/shared_contexts/changes_access_checks_shared_context.rb40
-rw-r--r--spec/support/shared_contexts/features/integrations/group_integrations_shared_context.rb28
-rw-r--r--spec/support/shared_contexts/features/integrations/instance_and_group_integrations_shared_context.rb18
-rw-r--r--spec/support/shared_contexts/features/integrations/instance_integrations_shared_context.rb24
-rw-r--r--spec/support/shared_contexts/features/integrations/integrations_shared_context.rb (renamed from spec/support/shared_contexts/services_shared_context.rb)10
-rw-r--r--spec/support/shared_contexts/features/integrations/project_integrations_jira_context.rb (renamed from spec/support/shared_contexts/project_service_jira_context.rb)0
-rw-r--r--spec/support/shared_contexts/features/integrations/project_integrations_shared_context.rb (renamed from spec/support/shared_contexts/project_service_shared_context.rb)6
-rw-r--r--spec/support/shared_contexts/graphql/requests/packages_shared_context.rb33
-rw-r--r--spec/support/shared_contexts/load_balancing_configuration_shared_context.rb19
-rw-r--r--spec/support/shared_contexts/navbar_structure_context.rb20
-rw-r--r--spec/support/shared_contexts/policies/project_policy_shared_context.rb4
-rw-r--r--spec/support/shared_contexts/read_ci_configuration_shared_context.rb4
-rw-r--r--spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb4
-rw-r--r--spec/support/shared_contexts/requests/api/helm_packages_shared_context.rb10
-rw-r--r--spec/support/shared_contexts/requests/api/npm_packages_shared_context.rb2
-rw-r--r--spec/support/shared_contexts/services/packages/debian/distribution_shared_context.rb20
-rw-r--r--spec/support/shared_contexts/single_change_access_checks_shared_context.rb (renamed from spec/support/shared_contexts/change_access_checks_shared_context.rb)2
17 files changed, 226 insertions, 18 deletions
diff --git a/spec/support/shared_contexts/changes_access_checks_shared_context.rb b/spec/support/shared_contexts/changes_access_checks_shared_context.rb
new file mode 100644
index 00000000000..ec3727b6d6c
--- /dev/null
+++ b/spec/support/shared_contexts/changes_access_checks_shared_context.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+RSpec.shared_context 'changes access checks context' do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, :repository) }
+
+ let(:user_access) { Gitlab::UserAccess.new(user, container: project) }
+ let(:protocol) { 'ssh' }
+ let(:timeout) { Gitlab::GitAccess::INTERNAL_TIMEOUT }
+ let(:oldrev) { 'be93687618e4b132087f430a4d8fc3a609c9b77c' }
+ let(:newrev) { '54fcc214b94e78d7a41a9a8fe6d87a5e59500e51' }
+ let(:ref) { 'refs/heads/master' }
+ let(:changes) do
+ [
+ # Update of existing branch
+ { oldrev: oldrev, newrev: newrev, ref: ref },
+ # Creation of new branch
+ { newrev: newrev, ref: 'refs/heads/something' },
+ # Deletion of branch
+ { oldrev: oldrev, ref: 'refs/heads/deleteme' }
+ ]
+ end
+
+ let(:logger) { Gitlab::Checks::TimedLogger.new(timeout: timeout) }
+ let(:changes_access) do
+ Gitlab::Checks::ChangesAccess.new(
+ changes,
+ project: project,
+ user_access: user_access,
+ protocol: protocol,
+ logger: logger
+ )
+ end
+
+ subject { described_class.new(changes_access) }
+
+ before do
+ project.add_developer(user)
+ end
+end
diff --git a/spec/support/shared_contexts/features/integrations/group_integrations_shared_context.rb b/spec/support/shared_contexts/features/integrations/group_integrations_shared_context.rb
new file mode 100644
index 00000000000..5996fcc6593
--- /dev/null
+++ b/spec/support/shared_contexts/features/integrations/group_integrations_shared_context.rb
@@ -0,0 +1,28 @@
+# frozen_string_literal: true
+
+RSpec.shared_context 'group integration activation' do
+ include_context 'instance and group integration activation'
+
+ let_it_be(:group) { create(:group) }
+ let_it_be(:user) { create(:user) }
+
+ before_all do
+ group.add_owner(user)
+ end
+
+ before do
+ sign_in(user)
+ end
+
+ def visit_group_integrations
+ visit group_settings_integrations_path(group)
+ end
+
+ def visit_group_integration(name)
+ visit_group_integrations
+
+ within('#content-body') do
+ click_link(name)
+ end
+ end
+end
diff --git a/spec/support/shared_contexts/features/integrations/instance_and_group_integrations_shared_context.rb b/spec/support/shared_contexts/features/integrations/instance_and_group_integrations_shared_context.rb
new file mode 100644
index 00000000000..58ee341f71f
--- /dev/null
+++ b/spec/support/shared_contexts/features/integrations/instance_and_group_integrations_shared_context.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+RSpec.shared_context 'instance and group integration activation' do
+ include_context 'integration activation'
+
+ def click_save_integration
+ click_save_changes_button
+ click_save_settings_modal
+ end
+
+ def click_save_changes_button
+ click_button('Save changes')
+ end
+
+ def click_save_settings_modal
+ click_button('Save')
+ end
+end
diff --git a/spec/support/shared_contexts/features/integrations/instance_integrations_shared_context.rb b/spec/support/shared_contexts/features/integrations/instance_integrations_shared_context.rb
new file mode 100644
index 00000000000..3b02db994a3
--- /dev/null
+++ b/spec/support/shared_contexts/features/integrations/instance_integrations_shared_context.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+RSpec.shared_context 'instance integration activation' do
+ include_context 'instance and group integration activation'
+
+ let_it_be(:user) { create(:user, :admin) }
+
+ before do
+ sign_in(user)
+ gitlab_enable_admin_mode_sign_in(user)
+ end
+
+ def visit_instance_integrations
+ visit integrations_admin_application_settings_path
+ end
+
+ def visit_instance_integration(name)
+ visit_instance_integrations
+
+ within('#content-body') do
+ click_link(name)
+ end
+ end
+end
diff --git a/spec/support/shared_contexts/services_shared_context.rb b/spec/support/shared_contexts/features/integrations/integrations_shared_context.rb
index 34c92367efa..e532b42fd1c 100644
--- a/spec/support/shared_contexts/services_shared_context.rb
+++ b/spec/support/shared_contexts/features/integrations/integrations_shared_context.rb
@@ -5,8 +5,8 @@ Integration.available_services_names.each do |service|
include JiraServiceHelper if service == 'jira'
let(:dashed_service) { service.dasherize }
- let(:service_method) { "#{service}_service".to_sym }
- let(:service_klass) { Integration.service_name_to_model(service) }
+ let(:service_method) { Project.integration_association_name(service) }
+ let(:service_klass) { Integration.integration_name_to_model(service) }
let(:service_instance) { service_klass.new }
let(:service_fields) { service_instance.fields }
let(:service_attrs_list) { service_fields.inject([]) {|arr, hash| arr << hash[:name].to_sym } }
@@ -70,3 +70,9 @@ Integration.available_services_names.each do |service|
end
end
end
+
+RSpec.shared_context 'integration activation' do
+ def click_active_checkbox
+ find('label', text: 'Active').click
+ end
+end
diff --git a/spec/support/shared_contexts/project_service_jira_context.rb b/spec/support/shared_contexts/features/integrations/project_integrations_jira_context.rb
index 54bb9fd108e..54bb9fd108e 100644
--- a/spec/support/shared_contexts/project_service_jira_context.rb
+++ b/spec/support/shared_contexts/features/integrations/project_integrations_jira_context.rb
diff --git a/spec/support/shared_contexts/project_service_shared_context.rb b/spec/support/shared_contexts/features/integrations/project_integrations_shared_context.rb
index 0e3540a3e15..b10844320d0 100644
--- a/spec/support/shared_contexts/project_service_shared_context.rb
+++ b/spec/support/shared_contexts/features/integrations/project_integrations_shared_context.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
RSpec.shared_context 'project service activation' do
+ include_context 'integration activation'
+
let(:project) { create(:project) }
let(:user) { create(:user) }
@@ -21,10 +23,6 @@ RSpec.shared_context 'project service activation' do
end
end
- def click_active_checkbox
- find('label', text: 'Active').click
- end
-
def click_save_integration
click_button('Save changes')
end
diff --git a/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb b/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb
new file mode 100644
index 00000000000..334b11c9f6e
--- /dev/null
+++ b/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+RSpec.shared_context 'package details setup' do
+ let_it_be(:project) { create(:project) }
+ let_it_be(:package) { create(:package, project: project) }
+
+ let(:package_global_id) { global_id_of(package) }
+
+ let(:depth) { 3 }
+ let(:excluded) { %w[metadata apiFuzzingCiConfiguration pipeline packageFiles] }
+ let(:package_files) { all_graphql_fields_for('PackageFile') }
+ let(:user) { project.owner }
+ let(:package_details) { graphql_data_at(:package) }
+ let(:metadata_response) { graphql_data_at(:package, :metadata) }
+ let(:first_file) { package.package_files.find { |f| global_id_of(f) == first_file_response['id'] } }
+ let(:package_files_response) { graphql_data_at(:package, :package_files, :nodes) }
+ let(:first_file_response) { graphql_data_at(:package, :package_files, :nodes, 0)}
+ let(:first_file_response_metadata) { graphql_data_at(:package, :package_files, :nodes, 0, :file_metadata)}
+
+ let(:query) do
+ graphql_query_for(:package, { id: package_global_id }, <<~FIELDS)
+ #{all_graphql_fields_for('PackageDetailsType', max_depth: depth, excluded: excluded)}
+ metadata {
+ #{metadata}
+ }
+ packageFiles {
+ nodes {
+ #{package_files}
+ }
+ }
+ FIELDS
+ end
+end
diff --git a/spec/support/shared_contexts/load_balancing_configuration_shared_context.rb b/spec/support/shared_contexts/load_balancing_configuration_shared_context.rb
new file mode 100644
index 00000000000..a61b8e9a074
--- /dev/null
+++ b/spec/support/shared_contexts/load_balancing_configuration_shared_context.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+RSpec.shared_context 'clear DB Load Balancing configuration' do
+ def clear_load_balancing_configuration
+ proxy = ::Gitlab::Database::LoadBalancing.instance_variable_get(:@proxy)
+ proxy.load_balancer.release_host if proxy
+ ::Gitlab::Database::LoadBalancing.instance_variable_set(:@proxy, nil)
+
+ ::Gitlab::Database::LoadBalancing::Session.clear_session
+ end
+
+ around do |example|
+ clear_load_balancing_configuration
+
+ example.run
+
+ clear_load_balancing_configuration
+ end
+end
diff --git a/spec/support/shared_contexts/navbar_structure_context.rb b/spec/support/shared_contexts/navbar_structure_context.rb
index 4f8e88ae9da..c00b7203af6 100644
--- a/spec/support/shared_contexts/navbar_structure_context.rb
+++ b/spec/support/shared_contexts/navbar_structure_context.rb
@@ -18,8 +18,8 @@ RSpec.shared_context 'project navbar structure' do
{
nav_item: _('Security & Compliance'),
nav_sub_items: [
- _('Configuration'),
- (_('Audit Events') if Gitlab.ee?)
+ (_('Audit Events') if Gitlab.ee?),
+ _('Configuration')
]
}
end
@@ -71,8 +71,16 @@ RSpec.shared_context 'project navbar structure' do
]
end
+ let(:project_context_nav_item) do
+ {
+ nav_item: "#{project.name[0, 1].upcase} #{project.name}",
+ nav_sub_items: []
+ }
+ end
+
let(:structure) do
[
+ project_context_nav_item,
project_information_nav_item,
{
nav_item: _('Repository'),
@@ -200,8 +208,16 @@ RSpec.shared_context 'group navbar structure' do
]
end
+ let(:group_context_nav_item) do
+ {
+ nav_item: "#{group.name[0, 1].upcase} #{group.name}",
+ nav_sub_items: []
+ }
+ end
+
let(:structure) do
[
+ group_context_nav_item,
group_information_nav_item,
{
nav_item: _('Issues'),
diff --git a/spec/support/shared_contexts/policies/project_policy_shared_context.rb b/spec/support/shared_contexts/policies/project_policy_shared_context.rb
index 35dc709b5d9..d638ffcf8fa 100644
--- a/spec/support/shared_contexts/policies/project_policy_shared_context.rb
+++ b/spec/support/shared_contexts/policies/project_policy_shared_context.rb
@@ -26,7 +26,7 @@ RSpec.shared_context 'ProjectPolicy context' do
let(:base_reporter_permissions) do
%i[
admin_issue admin_issue_link admin_label admin_issue_board_list create_snippet
- download_code download_wiki_code fork_project metrics_dashboard
+ daily_statistics download_code download_wiki_code fork_project metrics_dashboard
read_build read_commit_status read_confidential_issues
read_container_image read_deployment read_environment read_merge_request
read_metrics_dashboard_annotation read_pipeline read_prometheus
@@ -44,7 +44,7 @@ RSpec.shared_context 'ProjectPolicy context' do
create_commit_status create_container_image create_deployment
create_environment create_merge_request_from
create_metrics_dashboard_annotation create_pipeline create_release
- create_wiki daily_statistics delete_metrics_dashboard_annotation
+ create_wiki delete_metrics_dashboard_annotation
destroy_container_image push_code read_pod_logs read_terraform_state
resolve_note update_build update_commit_status update_container_image
update_deployment update_environment update_merge_request
diff --git a/spec/support/shared_contexts/read_ci_configuration_shared_context.rb b/spec/support/shared_contexts/read_ci_configuration_shared_context.rb
index 04c50171766..f5d70d5ef5a 100644
--- a/spec/support/shared_contexts/read_ci_configuration_shared_context.rb
+++ b/spec/support/shared_contexts/read_ci_configuration_shared_context.rb
@@ -5,10 +5,6 @@ RSpec.shared_context 'read ci configuration for sast enabled project' do
File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci_for_sast.yml'))
end
- let_it_be(:gitlab_ci_yml_default_analyzers_content) do
- File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci_for_sast_default_analyzers.yml'))
- end
-
let_it_be(:gitlab_ci_yml_excluded_analyzers_content) do
File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci_for_sast_excluded_analyzers.yml'))
end
diff --git a/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb b/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb
index ac53be1a1cb..c69a987c00d 100644
--- a/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb
+++ b/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb
@@ -8,11 +8,11 @@ RSpec.shared_context 'conan api setup' do
let_it_be(:personal_access_token) { create(:personal_access_token) }
let_it_be(:user) { personal_access_token.user }
let_it_be(:base_secret) { SecureRandom.base64(64) }
- let_it_be(:job) { create(:ci_build, :running, user: user) }
- let_it_be(:job_token) { job.token }
let_it_be(:deploy_token) { create(:deploy_token, read_package_registry: true, write_package_registry: true) }
let(:project) { package.project }
+ let(:job) { create(:ci_build, :running, user: user, project: project) }
+ let(:job_token) { job.token }
let(:auth_token) { personal_access_token.token }
let(:project_deploy_token) { create(:project_deploy_token, deploy_token: deploy_token, project: project) }
diff --git a/spec/support/shared_contexts/requests/api/helm_packages_shared_context.rb b/spec/support/shared_contexts/requests/api/helm_packages_shared_context.rb
new file mode 100644
index 00000000000..099fdec0cc8
--- /dev/null
+++ b/spec/support/shared_contexts/requests/api/helm_packages_shared_context.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+RSpec.shared_context 'helm api setup' do
+ include WorkhorseHelpers
+ include PackagesManagerApiSpecHelpers
+ include HttpBasicAuthHelpers
+
+ let_it_be(:user) { create(:user) }
+ let_it_be(:personal_access_token) { create(:personal_access_token, user: user) }
+end
diff --git a/spec/support/shared_contexts/requests/api/npm_packages_shared_context.rb b/spec/support/shared_contexts/requests/api/npm_packages_shared_context.rb
index 815108be447..c737091df48 100644
--- a/spec/support/shared_contexts/requests/api/npm_packages_shared_context.rb
+++ b/spec/support/shared_contexts/requests/api/npm_packages_shared_context.rb
@@ -11,7 +11,7 @@ RSpec.shared_context 'npm api setup' do
let_it_be(:package, reload: true) { create(:npm_package, project: project, name: "@#{group.path}/scoped_package") }
let_it_be(:token) { create(:oauth_access_token, scopes: 'api', resource_owner: user) }
let_it_be(:personal_access_token) { create(:personal_access_token, user: user) }
- let_it_be(:job, reload: true) { create(:ci_build, user: user, status: :running) }
+ let_it_be(:job, reload: true) { create(:ci_build, user: user, status: :running, project: project) }
let_it_be(:deploy_token) { create(:deploy_token, read_package_registry: true, write_package_registry: true) }
let_it_be(:project_deploy_token) { create(:project_deploy_token, deploy_token: deploy_token, project: project) }
diff --git a/spec/support/shared_contexts/services/packages/debian/distribution_shared_context.rb b/spec/support/shared_contexts/services/packages/debian/distribution_shared_context.rb
new file mode 100644
index 00000000000..67e2c0629cc
--- /dev/null
+++ b/spec/support/shared_contexts/services/packages/debian/distribution_shared_context.rb
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+RSpec.shared_context 'with published Debian package' do
+ let_it_be(:group) { create(:group, :public) }
+ let_it_be(:project) { create(:project, :public, group: group) }
+ let_it_be(:project_distribution) { create(:debian_project_distribution, container: project, codename: 'unstable', valid_time_duration_seconds: 48.hours.to_i) }
+ let_it_be(:package) { create(:debian_package, project: project, published_in: project_distribution) }
+end
+
+RSpec.shared_context 'with Debian distribution' do |container_type|
+ let_it_be(:container_type) { container_type }
+
+ if container_type == :project
+ let_it_be(:container) { project }
+ let_it_be(:distribution, reload: true) { project_distribution }
+ else
+ let_it_be(:container) { group }
+ let_it_be(:distribution, reload: true) { create(:debian_group_distribution, container: group, codename: 'unstable', valid_time_duration_seconds: 48.hours.to_i) }
+ end
+end
diff --git a/spec/support/shared_contexts/change_access_checks_shared_context.rb b/spec/support/shared_contexts/single_change_access_checks_shared_context.rb
index 4c55990c901..bf90c26047b 100644
--- a/spec/support/shared_contexts/change_access_checks_shared_context.rb
+++ b/spec/support/shared_contexts/single_change_access_checks_shared_context.rb
@@ -12,7 +12,7 @@ RSpec.shared_context 'change access checks context' do
let(:timeout) { Gitlab::GitAccess::INTERNAL_TIMEOUT }
let(:logger) { Gitlab::Checks::TimedLogger.new(timeout: timeout) }
let(:change_access) do
- Gitlab::Checks::ChangeAccess.new(
+ Gitlab::Checks::SingleChangeAccess.new(
changes,
project: project,
user_access: user_access,