diff options
Diffstat (limited to 'spec/lib/gitlab/pages/cache_control_spec.rb')
-rw-r--r-- | spec/lib/gitlab/pages/cache_control_spec.rb | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/spec/lib/gitlab/pages/cache_control_spec.rb b/spec/lib/gitlab/pages/cache_control_spec.rb index 6ed823427fb..431c989e874 100644 --- a/spec/lib/gitlab/pages/cache_control_spec.rb +++ b/spec/lib/gitlab/pages/cache_control_spec.rb @@ -3,21 +3,16 @@ require 'spec_helper' RSpec.describe Gitlab::Pages::CacheControl do - it 'fails with invalid type' do - expect { described_class.new(type: :unknown, id: nil) } - .to raise_error(ArgumentError, "type must be :namespace or :project") - end - describe '.for_namespace' do - let(:subject) { described_class.for_namespace(1) } + subject(:cache_control) { described_class.for_namespace(1) } - it { expect(subject.cache_key).to eq('pages_domain_for_namespace_1') } + it { expect(subject.cache_key).to match(/pages_domain_for_namespace_1_*/) } describe '#clear_cache' do it 'clears the cache' do expect(Rails.cache) .to receive(:delete) - .with('pages_domain_for_namespace_1') + .with(/pages_domain_for_namespace_1_*/) subject.clear_cache end @@ -25,18 +20,48 @@ RSpec.describe Gitlab::Pages::CacheControl do end describe '.for_project' do - let(:subject) { described_class.for_project(1) } + subject(:cache_control) { described_class.for_project(1) } - it { expect(subject.cache_key).to eq('pages_domain_for_project_1') } + it { expect(subject.cache_key).to match(/pages_domain_for_project_1_*/) } describe '#clear_cache' do it 'clears the cache' do expect(Rails.cache) .to receive(:delete) - .with('pages_domain_for_project_1') + .with(/pages_domain_for_project_1_*/) subject.clear_cache end end end + + describe '#cache_key' do + it 'does not change the pages config' do + expect { described_class.new(type: :project, id: 1).cache_key } + .not_to change(Gitlab.config, :pages) + end + + it 'is based on pages settings' do + access_control = Gitlab.config.pages.access_control + cache_key = described_class.new(type: :project, id: 1).cache_key + + stub_config(pages: { access_control: !access_control }) + + expect(described_class.new(type: :project, id: 1).cache_key).not_to eq(cache_key) + end + + it 'is based on the force_pages_access_control settings' do + force_pages_access_control = ::Gitlab::CurrentSettings.force_pages_access_control + cache_key = described_class.new(type: :project, id: 1).cache_key + + ::Gitlab::CurrentSettings.force_pages_access_control = !force_pages_access_control + + expect(described_class.new(type: :project, id: 1).cache_key).not_to eq(cache_key) + end + end + + it 'fails with invalid type' do + expect { described_class.new(type: :unknown, id: nil) } + .to raise_error(ArgumentError, "type must be :namespace or :project") + end end |