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
path: root/spec/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2024-01-05 09:14:27 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2024-01-05 09:14:27 +0300
commit309dbdc49533a76243003a3f662736ae0b0ec14a (patch)
treeb42d671d3cf72336014d3545c872f3068d5bde97 /spec/lib
parent77f4cd207cb3a831ffa36d67377e28030622a4a8 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/gitlab/database/dictionary_spec.rb52
-rw-r--r--spec/lib/gitlab/database/gitlab_schema_spec.rb56
2 files changed, 83 insertions, 25 deletions
diff --git a/spec/lib/gitlab/database/dictionary_spec.rb b/spec/lib/gitlab/database/dictionary_spec.rb
index 261cf27ed69..59145842b24 100644
--- a/spec/lib/gitlab/database/dictionary_spec.rb
+++ b/spec/lib/gitlab/database/dictionary_spec.rb
@@ -24,6 +24,25 @@ RSpec.describe Gitlab::Database::Dictionary, feature_category: :database do
end
end
+ describe '.any_entry' do
+ it 'loads an entry from any scope' do
+ expect(described_class.any_entry('ci_pipelines')).to be_present # Regular table
+ expect(described_class.any_entry('audit_events_archived')).to be_present # Deleted table
+ expect(described_class.any_entry('postgres_constraints')).to be_present # View
+ expect(described_class.any_entry('not_a_table_ever')).to be_nil
+ end
+ end
+
+ describe '.entry' do
+ it 'loads an Entry from the given scope' do
+ expect(described_class.entry('ci_pipelines')).to be_present # Regular table
+ expect(described_class.entry('audit_events_archived')).not_to be_present # Deleted table
+ expect(described_class.entry('postgres_constraints')).not_to be_present # Deleted table
+ expect(described_class.entry('audit_events_archived', 'deleted_tables')).to be_present # Deleted table
+ expect(described_class.entry('postgres_constraints', 'views')).to be_present # View
+ end
+ end
+
describe '::Entry' do
subject(:database_dictionary) { described_class::Entry.new(file_path) }
@@ -80,6 +99,39 @@ RSpec.describe Gitlab::Database::Dictionary, feature_category: :database do
expect { database_dictionary.validate! }.to raise_error(Gitlab::Database::GitlabSchema::UnknownSchemaError)
end
end
+
+ context 'with allow_cross_joins' do
+ let(:file_path) { 'db/docs/achievements.yml' }
+
+ describe '#allow_cross_to_schemas' do
+ it 'returns the list of allowed schemas' do
+ expect(database_dictionary.allow_cross_to_schemas(:joins))
+ .to contain_exactly(:gitlab_main_clusterwide)
+ end
+ end
+ end
+
+ context 'with allow_cross_transactions' do
+ let(:file_path) { 'db/docs/activity_pub_releases_subscriptions.yml' }
+
+ describe '#allow_cross_to_schemas' do
+ it 'returns the list of allowed schemas' do
+ expect(database_dictionary.allow_cross_to_schemas(:transactions))
+ .to contain_exactly(:gitlab_main_clusterwide)
+ end
+ end
+ end
+
+ context 'with allow_cross_foreign_keys' do
+ let(:file_path) { 'db/docs/agent_group_authorizations.yml' }
+
+ describe '#allow_cross_to_schemas' do
+ it 'returns the list of allowed schemas' do
+ expect(database_dictionary.allow_cross_to_schemas(:foreign_keys))
+ .to contain_exactly(:gitlab_main_clusterwide)
+ end
+ end
+ end
end
context 'for a view' do
diff --git a/spec/lib/gitlab/database/gitlab_schema_spec.rb b/spec/lib/gitlab/database/gitlab_schema_spec.rb
index 7fca47c707c..f716bcfcf49 100644
--- a/spec/lib/gitlab/database/gitlab_schema_spec.rb
+++ b/spec/lib/gitlab/database/gitlab_schema_spec.rb
@@ -217,17 +217,19 @@ RSpec.describe Gitlab::Database::GitlabSchema, feature_category: :database do
describe '.cross_joins_allowed?' do
where(:schemas, :tables, :result) do
- %i[] | %i[] | true
- %i[gitlab_main] | %i[] | true
- %i[gitlab_main_clusterwide gitlab_main] | %i[] | true
- %i[gitlab_main_clusterwide gitlab_ci] | %i[] | false
- %i[gitlab_main_clusterwide gitlab_main gitlab_ci] | %i[] | false
- %i[gitlab_main_clusterwide gitlab_internal] | %i[] | false
- %i[gitlab_main gitlab_ci] | %i[] | false
- %i[gitlab_main_clusterwide gitlab_main gitlab_shared] | %i[] | true
- %i[gitlab_main_clusterwide gitlab_shared] | %i[] | true
+ %i[] | %w[] | true
+ %i[gitlab_main] | %w[evidences] | true
+ %i[gitlab_main_clusterwide gitlab_main] | %w[users evidences] | true
+ %i[gitlab_main_clusterwide gitlab_ci] | %w[users ci_pipelines] | false
+ %i[gitlab_main_clusterwide gitlab_main gitlab_ci] | %w[users evidences ci_pipelines] | false
+ %i[gitlab_main_clusterwide gitlab_internal] | %w[users schema_migrations] | false
+ %i[gitlab_main gitlab_ci] | %w[evidences schema_migrations] | false
+ %i[gitlab_main_clusterwide gitlab_main gitlab_shared] | %w[users evidences detached_partitions] | true
+ %i[gitlab_main_clusterwide gitlab_shared] | %w[users detached_partitions] | true
%i[gitlab_main_clusterwide gitlab_main_cell] | %w[users namespaces] | false
%i[gitlab_main_clusterwide gitlab_main_cell] | %w[plans namespaces] | true
+ %i[gitlab_main_clusterwide gitlab_main_cell] | %w[users achievements] | true
+ %i[gitlab_main_clusterwide gitlab_main_cell] | %w[users activity_pub_releases_subscriptions] | false
end
with_them do
@@ -237,17 +239,19 @@ RSpec.describe Gitlab::Database::GitlabSchema, feature_category: :database do
describe '.cross_transactions_allowed?' do
where(:schemas, :tables, :result) do
- %i[] | %i[] | true
- %i[gitlab_main] | %i[] | true
- %i[gitlab_main_clusterwide gitlab_main] | %i[] | true
- %i[gitlab_main_clusterwide gitlab_ci] | %i[] | false
- %i[gitlab_main_clusterwide gitlab_main gitlab_ci] | %i[] | false
- %i[gitlab_main_clusterwide gitlab_internal] | %i[] | true
- %i[gitlab_main gitlab_ci] | %i[] | false
- %i[gitlab_main_clusterwide gitlab_main gitlab_shared] | %i[] | true
- %i[gitlab_main_clusterwide gitlab_shared] | %i[] | true
+ %i[] | %w[] | true
+ %i[gitlab_main] | %w[evidences] | true
+ %i[gitlab_main_clusterwide gitlab_main] | %w[users evidences] | true
+ %i[gitlab_main_clusterwide gitlab_ci] | %w[users ci_pipelines] | false
+ %i[gitlab_main_clusterwide gitlab_main gitlab_ci] | %w[users evidences ci_pipelines] | false
+ %i[gitlab_main_clusterwide gitlab_internal] | %w[users schema_migrations] | true
+ %i[gitlab_main gitlab_ci] | %w[evidences ci_pipelines] | false
+ %i[gitlab_main_clusterwide gitlab_main gitlab_shared] | %w[users evidences detached_partitions] | true
+ %i[gitlab_main_clusterwide gitlab_shared] | %w[users detached_partitions] | true
%i[gitlab_main_clusterwide gitlab_main_cell] | %w[users namespaces] | false
%i[gitlab_main_clusterwide gitlab_main_cell] | %w[plans namespaces] | true
+ %i[gitlab_main_clusterwide gitlab_main_cell] | %w[users achievements] | false
+ %i[gitlab_main_clusterwide gitlab_main_cell] | %w[users activity_pub_releases_subscriptions] | true
end
with_them do
@@ -257,15 +261,17 @@ RSpec.describe Gitlab::Database::GitlabSchema, feature_category: :database do
describe '.cross_foreign_key_allowed?' do
where(:schemas, :tables, :result) do
- %i[] | %i[] | false
- %i[gitlab_main] | %i[] | true
- %i[gitlab_main_clusterwide gitlab_main] | %i[] | true
- %i[gitlab_main_clusterwide gitlab_ci] | %i[] | false
- %i[gitlab_main_clusterwide gitlab_internal] | %i[] | false
- %i[gitlab_main gitlab_ci] | %i[] | false
- %i[gitlab_main_clusterwide gitlab_shared] | %i[] | false
+ %i[] | %w[] | false
+ %i[gitlab_main] | %w[evidences] | true
+ %i[gitlab_main_clusterwide gitlab_main] | %w[users evidences] | true
+ %i[gitlab_main_clusterwide gitlab_ci] | %w[users ci_pipelines] | false
+ %i[gitlab_main_clusterwide gitlab_internal] | %w[users schema_migrations] | false
+ %i[gitlab_main gitlab_ci] | %w[evidences ci_pipelines] | false
+ %i[gitlab_main_clusterwide gitlab_shared] | %w[users detached_partitions] | false
%i[gitlab_main_clusterwide gitlab_main_cell] | %w[users namespaces] | false
%i[gitlab_main_clusterwide gitlab_main_cell] | %w[plans namespaces] | true
+ %i[gitlab_main_clusterwide gitlab_main_cell] | %w[users achievements] | false
+ %i[gitlab_main_clusterwide gitlab_main_cell] | %w[users agent_group_authorizations] | true
end
with_them do