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:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-09-20 02:18:09 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-09-20 02:18:09 +0300
commit6ed4ec3e0b1340f96b7c043ef51d1b33bbe85fde (patch)
treedc4d20fe6064752c0bd323187252c77e0a89144b /spec/initializers
parent9868dae7fc0655bd7ce4a6887d4e6d487690eeed (diff)
Add latest changes from gitlab-org/gitlab@15-4-stable-eev15.4.0-rc42
Diffstat (limited to 'spec/initializers')
-rw-r--r--spec/initializers/00_rails_disable_joins_spec.rb6
-rw-r--r--spec/initializers/action_cable_subscription_adapter_identifier_spec.rb2
-rw-r--r--spec/initializers/carrierwave_patch_spec.rb6
-rw-r--r--spec/initializers/load_balancing_spec.rb100
-rw-r--r--spec/initializers/microsoft_graph_mailer_spec.rb56
-rw-r--r--spec/initializers/net_http_patch_spec.rb1
-rw-r--r--spec/initializers/settings_spec.rb36
-rw-r--r--spec/initializers/trusted_proxies_spec.rb2
8 files changed, 201 insertions, 8 deletions
diff --git a/spec/initializers/00_rails_disable_joins_spec.rb b/spec/initializers/00_rails_disable_joins_spec.rb
index 78e78b6810b..3b390f1ef17 100644
--- a/spec/initializers/00_rails_disable_joins_spec.rb
+++ b/spec/initializers/00_rails_disable_joins_spec.rb
@@ -98,8 +98,8 @@ RSpec.describe 'DisableJoins' do
primary_model.has_one :test_bridge, anonymous_class: bridge_model, foreign_key: :primary_record_id
bridge_model.belongs_to :test_secondary, anonymous_class: secondary_model, foreign_key: :secondary_record_id
- primary_model.has_one :test_secondary, through: :test_bridge, anonymous_class: secondary_model,
- disable_joins: -> { joins_disabled_flag }
+ primary_model.has_one :test_secondary,
+ through: :test_bridge, anonymous_class: secondary_model, disable_joins: -> { joins_disabled_flag }
primary_record = primary_model.create!
secondary_record = secondary_model.create!
@@ -149,7 +149,7 @@ RSpec.describe 'DisableJoins' do
primary_model.has_many :test_bridges, anonymous_class: bridge_model, foreign_key: :primary_record_id
bridge_model.has_many :test_secondaries, anonymous_class: secondary_model, foreign_key: :bridge_record_id
primary_model.has_many :test_secondaries, through: :test_bridges, anonymous_class: secondary_model,
- disable_joins: -> { disabled_join_flag }
+ disable_joins: -> { disabled_join_flag }
primary_record = primary_model.create!
bridge_record = bridge_model.create!(primary_record_id: primary_record.id)
diff --git a/spec/initializers/action_cable_subscription_adapter_identifier_spec.rb b/spec/initializers/action_cable_subscription_adapter_identifier_spec.rb
index 074df9adc21..94134ce44fd 100644
--- a/spec/initializers/action_cable_subscription_adapter_identifier_spec.rb
+++ b/spec/initializers/action_cable_subscription_adapter_identifier_spec.rb
@@ -22,7 +22,7 @@ RSpec.describe 'ActionCableSubscriptionAdapterIdentifier override' do
sub = ActionCable.server.pubsub.send(:redis_connection)
- expect(sub.connection[:id]).to eq('redis:///home/localuser/redis/redis.socket/0')
+ expect(sub.connection[:id]).to eq('unix:///home/localuser/redis/redis.socket/0')
expect(ActionCable.server.config.cable[:id]).to be_nil
end
end
diff --git a/spec/initializers/carrierwave_patch_spec.rb b/spec/initializers/carrierwave_patch_spec.rb
index b0f337935ef..0910342f10f 100644
--- a/spec/initializers/carrierwave_patch_spec.rb
+++ b/spec/initializers/carrierwave_patch_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe 'CarrierWave::Storage::Fog::File' do
let(:storage) { CarrierWave::Storage::Fog.new(uploader) }
let(:bucket_name) { 'some-bucket' }
let(:connection) { ::Fog::Storage.new(connection_options) }
- let(:bucket) { connection.directories.new(key: bucket_name )}
+ let(:bucket) { connection.directories.new(key: bucket_name ) }
let(:test_filename) { 'test' }
let(:test_data) { File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) }
@@ -33,7 +33,7 @@ RSpec.describe 'CarrierWave::Storage::Fog::File' do
end
describe '#copy_to' do
- let(:dest_filename) { 'copied.txt'}
+ let(:dest_filename) { 'copied.txt' }
it 'copies the file' do
fog_file = subject.send(:file)
@@ -67,7 +67,7 @@ RSpec.describe 'CarrierWave::Storage::Fog::File' do
end
describe '#copy_to' do
- let(:dest_filename) { 'copied.txt'}
+ let(:dest_filename) { 'copied.txt' }
it 'copies the file' do
result = subject.copy_to(dest_filename)
diff --git a/spec/initializers/load_balancing_spec.rb b/spec/initializers/load_balancing_spec.rb
new file mode 100644
index 00000000000..d9162acd2cd
--- /dev/null
+++ b/spec/initializers/load_balancing_spec.rb
@@ -0,0 +1,100 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'load_balancing', :delete, :reestablished_active_record_base do
+ subject(:initialize_load_balancer) do
+ load Rails.root.join('config/initializers/load_balancing.rb')
+ end
+
+ before do
+ # Stub out middleware call, as not idempotent
+ allow(Gitlab::Application.instance.middleware).to receive(:use)
+ end
+
+ context 'with replica hosts configured' do
+ before do
+ # Setup host-based load balancing
+ # Patch in our load balancer config, simply pointing at the test database twice
+ allow(Gitlab::Database::LoadBalancing::Configuration).to receive(:for_model) do |base_model|
+ db_host = base_model.connection_pool.db_config.host
+
+ Gitlab::Database::LoadBalancing::Configuration.new(base_model, [db_host, db_host])
+ end
+ end
+
+ after do
+ # reset load balancing to original state
+ allow(Gitlab::Database::LoadBalancing::Configuration).to receive(:for_model).and_call_original
+ allow(Gitlab::Cluster::LifecycleEvents).to receive(:in_clustered_puma?).and_call_original
+
+ load Rails.root.join('config/initializers/load_balancing.rb')
+ end
+
+ it 'configures load balancer with two replica hosts' do
+ expect(ApplicationRecord.connection.load_balancer.configuration.hosts.size).to eq(0)
+ expect(Ci::ApplicationRecord.connection.load_balancer.configuration.hosts.size).to eq(0)
+
+ initialize_load_balancer
+
+ expect(ApplicationRecord.connection.load_balancer.configuration.hosts.size).to eq(2)
+ expect(Ci::ApplicationRecord.connection.load_balancer.configuration.hosts.size).to eq(2)
+ end
+
+ context 'for a clustered puma worker' do
+ let!(:group) { create(:group, name: 'my group') }
+
+ before do
+ # Pretend we are in clustered environment
+ allow(Gitlab::Cluster::LifecycleEvents).to receive(:in_clustered_puma?).and_return(true)
+ end
+
+ it 'configures load balancer to have two replica hosts' do
+ initialize_load_balancer
+
+ simulate_puma_worker do
+ expect(ApplicationRecord.connection.load_balancer.configuration.hosts.size).to eq(2)
+ expect(Ci::ApplicationRecord.connection.load_balancer.configuration.hosts.size).to eq(2)
+ end
+ end
+
+ # We tried using Process.fork for a more realistic simulation
+ # but run into bugs where GPRC cannot be used before forking processes.
+ # See https://gitlab.com/gitlab-org/gitlab/-/issues/333184#note_1081658113
+ def simulate_puma_worker
+ # Called in https://github.com/rails/rails/blob/6-1-stable/activerecord/lib/active_record/connection_adapters/pool_config.rb#L73
+ ActiveRecord::ConnectionAdapters::PoolConfig.discard_pools!
+
+ # Called in config/puma.rb
+ Gitlab::Cluster::LifecycleEvents.do_worker_start
+
+ yield
+ end
+
+ it 'makes a read query successfully' do
+ # Clear any previous sticky writes
+ ::Gitlab::Database::LoadBalancing::Session.clear_session
+
+ initialize_load_balancer
+
+ group_name = simulate_puma_worker do
+ Group.find_by_name('my group').name
+ end
+
+ expect(group_name).to eq(group.name)
+ end
+
+ it 'makes a write query successfully' do
+ initialize_load_balancer
+
+ expect do
+ simulate_puma_worker do
+ Group.touch_all
+ end
+
+ group.reload
+ end.to change(group, :updated_at)
+ end
+ end
+ end
+end
diff --git a/spec/initializers/microsoft_graph_mailer_spec.rb b/spec/initializers/microsoft_graph_mailer_spec.rb
new file mode 100644
index 00000000000..fbe667e34fe
--- /dev/null
+++ b/spec/initializers/microsoft_graph_mailer_spec.rb
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe 'microsoft_graph_mailer initializer for GitLab' do
+ let(:microsoft_graph_setting) do
+ {
+ user_id: SecureRandom.hex,
+ tenant: SecureRandom.hex,
+ client_id: SecureRandom.hex,
+ client_secret: SecureRandom.hex,
+ azure_ad_endpoint: 'https://test-azure_ad_endpoint',
+ graph_endpoint: 'https://test-graph_endpoint'
+ }
+ end
+
+ def load_microsoft_graph_mailer_initializer
+ load Rails.root.join('config/initializers/microsoft_graph_mailer.rb')
+ end
+
+ context 'when microsoft_graph_mailer is enabled' do
+ before do
+ stub_microsoft_graph_mailer_setting(microsoft_graph_setting.merge(enabled: true))
+ end
+
+ it 'configures ActionMailer' do
+ previous_delivery_method = ActionMailer::Base.delivery_method
+ previous_microsoft_graph_settings = ActionMailer::Base.microsoft_graph_settings
+
+ load_microsoft_graph_mailer_initializer
+
+ expect(ActionMailer::Base.delivery_method).to eq(:microsoft_graph)
+ expect(ActionMailer::Base.microsoft_graph_settings).to eq(microsoft_graph_setting)
+ ensure
+ ActionMailer::Base.delivery_method = previous_delivery_method
+ ActionMailer::Base.microsoft_graph_settings = previous_microsoft_graph_settings
+ end
+ end
+
+ context 'when microsoft_graph_mailer is disabled' do
+ before do
+ stub_microsoft_graph_mailer_setting(microsoft_graph_setting.merge(enabled: false))
+ end
+
+ it 'does not configure ActionMailer' do
+ previous_delivery_method = ActionMailer::Base.delivery_method
+ previous_microsoft_graph_settings = ActionMailer::Base.microsoft_graph_settings
+
+ load_microsoft_graph_mailer_initializer
+
+ expect(previous_microsoft_graph_settings).not_to eq(:microsoft_graph)
+ expect(ActionMailer::Base.delivery_method).to eq(previous_delivery_method)
+ expect(ActionMailer::Base.microsoft_graph_settings).to eq(previous_microsoft_graph_settings)
+ end
+ end
+end
diff --git a/spec/initializers/net_http_patch_spec.rb b/spec/initializers/net_http_patch_spec.rb
index d6b003d84fa..d56730917f1 100644
--- a/spec/initializers/net_http_patch_spec.rb
+++ b/spec/initializers/net_http_patch_spec.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: true
require 'fast_spec_helper'
+require 'net/http'
require_relative '../../config/initializers/net_http_patch'
diff --git a/spec/initializers/settings_spec.rb b/spec/initializers/settings_spec.rb
index 71ea12a41aa..c3200d2fab1 100644
--- a/spec/initializers/settings_spec.rb
+++ b/spec/initializers/settings_spec.rb
@@ -58,4 +58,40 @@ RSpec.describe Settings do
end
end
end
+
+ describe "#weak_passwords_digest_set" do
+ subject { described_class.gitlab.weak_passwords_digest_set }
+
+ it 'is a Set' do
+ expect(subject).to be_kind_of(Set)
+ end
+
+ it 'contains 4500 password digests' do
+ expect(subject.length).to eq(4500)
+ end
+
+ it 'includes 8 char weak password digest' do
+ expect(subject).to include(digest("password"))
+ end
+
+ it 'includes 16 char weak password digest' do
+ expect(subject).to include(digest("progressivehouse"))
+ end
+
+ it 'includes long char weak password digest' do
+ expect(subject).to include(digest("01234567890123456789"))
+ end
+
+ it 'does not include 7 char weak password digest' do
+ expect(subject).not_to include(digest("1234567"))
+ end
+
+ it 'does not include plaintext' do
+ expect(subject).not_to include("password")
+ end
+
+ def digest(plaintext)
+ Digest::SHA256.base64digest(plaintext)
+ end
+ end
end
diff --git a/spec/initializers/trusted_proxies_spec.rb b/spec/initializers/trusted_proxies_spec.rb
index 2786f034969..63c96ce17d1 100644
--- a/spec/initializers/trusted_proxies_spec.rb
+++ b/spec/initializers/trusted_proxies_spec.rb
@@ -58,7 +58,7 @@ RSpec.describe 'trusted_proxies' do
end
def stub_request(headers = {})
- ActionDispatch::RemoteIp.new(proc { }, false, Rails.application.config.action_dispatch.trusted_proxies).call(headers)
+ ActionDispatch::RemoteIp.new(proc {}, false, Rails.application.config.action_dispatch.trusted_proxies).call(headers)
ActionDispatch::Request.new(headers)
end