BigW Consortium Gitlab

6_validations_spec.rb 1.67 KB
Newer Older
1
require 'spec_helper'
2
require_relative '../../config/initializers/6_validations.rb'
3 4

describe '6_validations', lib: true do
5 6 7 8 9 10 11 12 13 14
  before :all do
    FileUtils.mkdir_p('tmp/tests/paths/a/b/c/d')
    FileUtils.mkdir_p('tmp/tests/paths/a/b/c2')
    FileUtils.mkdir_p('tmp/tests/paths/a/b/d')
  end

  after :all do
    FileUtils.rm_rf('tmp/tests/paths')
  end

15 16
  context 'with correct settings' do
    before do
17
      mock_storages('foo' => 'tmp/tests/paths/a/b/c', 'bar' => 'tmp/tests/paths/a/b/d')
18 19 20
    end

    it 'passes through' do
21
      expect { validate_storages }.not_to raise_error
22 23 24 25 26
    end
  end

  context 'with invalid storage names' do
    before do
27
      mock_storages('name with spaces' => 'tmp/tests/paths/a/b/c')
28 29 30
    end

    it 'throws an error' do
31
      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.')
32 33 34 35 36
    end
  end

  context 'with nested storage paths' do
    before do
37
      mock_storages('foo' => 'tmp/tests/paths/a/b/c', 'bar' => 'tmp/tests/paths/a/b/c/d')
38 39 40
    end

    it 'throws an error' do
41
      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.')
42 43 44
    end
  end

45 46 47 48 49 50
  context 'with similar but un-nested storage paths' do
    before do
      mock_storages('foo' => 'tmp/tests/paths/a/b/c', 'bar' => 'tmp/tests/paths/a/b/c2')
    end

    it 'passes through' do
51
      expect { validate_storages }.not_to raise_error
52 53 54
    end
  end

55 56 57 58
  def mock_storages(storages)
    allow(Gitlab.config.repositories).to receive(:storages).and_return(storages)
  end
end