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:
Diffstat (limited to 'spec/lib/gitlab/pages/cache_control_spec.rb')
-rw-r--r--spec/lib/gitlab/pages/cache_control_spec.rb47
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