summaryrefslogtreecommitdiff
path: root/spec/initializers
diff options
context:
space:
mode:
authorAlejandro Rodríguez <alejorro70@gmail.com>2017-03-08 13:15:05 -0300
committerAlejandro Rodríguez <alejorro70@gmail.com>2017-03-08 15:51:30 -0300
commit46214d5e7b0142af67e2f8a5fa4b54c423d3b3a2 (patch)
tree11515d844f18d90cfc97248e9adb60a3663dfd9b /spec/initializers
parentc14d37a33440d70780928586e4df223301ef8746 (diff)
downloadgitlab-ce-46214d5e7b0142af67e2f8a5fa4b54c423d3b3a2.tar.gz
Improve storage validation after configuration structure updatestorage-validation-improvement
Besides improving the error message to specify what exactly you need to do to solve the error, we now don't skip all storage validations on the test environment, so that you also get a nice error message if you're running tests. Now if conditions are met to skip valitaions (test env or env variable) we still make sure the settings _look_ sane, we just skip verifying the paths exists and meet the given conditions.
Diffstat (limited to 'spec/initializers')
-rw-r--r--spec/initializers/6_validations_spec.rb92
1 files changed, 53 insertions, 39 deletions
diff --git a/spec/initializers/6_validations_spec.rb b/spec/initializers/6_validations_spec.rb
index cf182e6d221..374517fec37 100644
--- a/spec/initializers/6_validations_spec.rb
+++ b/spec/initializers/6_validations_spec.rb
@@ -12,63 +12,77 @@ describe '6_validations', lib: true do
FileUtils.rm_rf('tmp/tests/paths')
end
- context 'with correct settings' do
- before do
- mock_storages('foo' => { 'path' => 'tmp/tests/paths/a/b/c' }, 'bar' => { 'path' => 'tmp/tests/paths/a/b/d' })
- end
+ describe 'validate_storages_config' do
+ context 'with correct settings' do
+ before do
+ mock_storages('foo' => { 'path' => 'tmp/tests/paths/a/b/c' }, 'bar' => { 'path' => 'tmp/tests/paths/a/b/d' })
+ end
- it 'passes through' do
- expect { validate_storages }.not_to raise_error
+ it 'passes through' do
+ expect { validate_storages_config }.not_to raise_error
+ end
end
- end
- context 'with invalid storage names' do
- before do
- mock_storages('name with spaces' => { 'path' => 'tmp/tests/paths/a/b/c' })
- end
+ context 'with invalid storage names' do
+ before do
+ mock_storages('name with spaces' => { 'path' => 'tmp/tests/paths/a/b/c' })
+ end
- it 'throws an error' do
- expect { validate_storages }.to raise_error('"name with spaces" is not a valid storage name. Please fix this in your gitlab.yml before starting GitLab.')
+ it 'throws an error' do
+ expect { validate_storages_config }.to raise_error('"name with spaces" is not a valid storage name. Please fix this in your gitlab.yml before starting GitLab.')
+ end
end
- end
- context 'with nested storage paths' do
- before do
- mock_storages('foo' => { 'path' => 'tmp/tests/paths/a/b/c' }, 'bar' => { 'path' => 'tmp/tests/paths/a/b/c/d' })
- end
+ context 'with incomplete settings' do
+ before do
+ mock_storages('foo' => {})
+ end
- it 'throws an error' do
- expect { validate_storages }.to raise_error('bar is a nested path of foo. Nested paths are not supported for repository storages. Please fix this in your gitlab.yml before starting GitLab.')
+ it 'throws an error suggesting the user to update its settings' do
+ expect { validate_storages_config }.to raise_error('foo is not a valid storage, because it has no `path` key. Refer to gitlab.yml.example for an updated example. Please fix this in your gitlab.yml before starting GitLab.')
+ end
end
- end
- context 'with similar but un-nested storage paths' do
- before do
- mock_storages('foo' => { 'path' => 'tmp/tests/paths/a/b/c' }, 'bar' => { 'path' => 'tmp/tests/paths/a/b/c2' })
- end
+ context 'with deprecated settings structure' do
+ before do
+ mock_storages('foo' => 'tmp/tests/paths/a/b/c')
+ end
- it 'passes through' do
- expect { validate_storages }.not_to raise_error
+ it 'throws an error suggesting the user to update its settings' do
+ expect { validate_storages_config }.to raise_error("foo is not a valid storage, because it has no `path` key. It may be configured as:\n\nfoo:\n path: tmp/tests/paths/a/b/c\n\nFor source installations, update your config/gitlab.yml Refer to gitlab.yml.example for an updated example.\n\nIf you're using the Gitlab Development Kit, you can update your configuration running `gdk reconfigure`.\n")
+ end
end
end
- context 'with incomplete settings' do
- before do
- mock_storages('foo' => {})
- end
+ describe 'validate_storages_paths' do
+ context 'with correct settings' do
+ before do
+ mock_storages('foo' => { 'path' => 'tmp/tests/paths/a/b/c' }, 'bar' => { 'path' => 'tmp/tests/paths/a/b/d' })
+ end
- it 'throws an error suggesting the user to update its settings' do
- expect { validate_storages }.to raise_error('foo is not a valid storage, because it has no `path` key. Refer to gitlab.yml.example for an updated example. Please fix this in your gitlab.yml before starting GitLab.')
+ it 'passes through' do
+ expect { validate_storages_paths }.not_to raise_error
+ end
end
- end
- context 'with deprecated settings structure' do
- before do
- mock_storages('foo' => 'tmp/tests/paths/a/b/c')
+ context 'with nested storage paths' do
+ before do
+ mock_storages('foo' => { 'path' => 'tmp/tests/paths/a/b/c' }, 'bar' => { 'path' => 'tmp/tests/paths/a/b/c/d' })
+ end
+
+ it 'throws an error' do
+ expect { validate_storages_paths }.to raise_error('bar is a nested path of foo. Nested paths are not supported for repository storages. Please fix this in your gitlab.yml before starting GitLab.')
+ end
end
- it 'throws an error suggesting the user to update its settings' do
- expect { validate_storages }.to raise_error("foo is not a valid storage, because it has no `path` key. It may be configured as:\n\nfoo:\n path: tmp/tests/paths/a/b/c\n\nRefer to gitlab.yml.example for an updated example. Please fix this in your gitlab.yml before starting GitLab.")
+ context 'with similar but un-nested storage paths' do
+ before do
+ mock_storages('foo' => { 'path' => 'tmp/tests/paths/a/b/c' }, 'bar' => { 'path' => 'tmp/tests/paths/a/b/c2' })
+ end
+
+ it 'passes through' do
+ expect { validate_storages_paths }.not_to raise_error
+ end
end
end