Commit 84a731c7 authored by Michael Kozono's avatar Michael Kozono

Merge branch...

Merge branch '35608-enable-let-s-encrypt-certificates-for-new-pages-domains-by-default-if-it-s-enabled-on-the' into 'master'

Enable Let's Encrypt certificates for new pages domains by default if it's enabled on the instance level.

See merge request gitlab-org/gitlab!19608
parents 2657c3e8 4ab82656
...@@ -24,6 +24,8 @@ class PagesDomain < ApplicationRecord ...@@ -24,6 +24,8 @@ class PagesDomain < ApplicationRecord
validate :validate_matching_key, if: ->(domain) { domain.certificate.present? || domain.key.present? } validate :validate_matching_key, if: ->(domain) { domain.certificate.present? || domain.key.present? }
validate :validate_intermediates, if: ->(domain) { domain.certificate.present? && domain.certificate_changed? } validate :validate_intermediates, if: ->(domain) { domain.certificate.present? && domain.certificate_changed? }
default_value_for(:auto_ssl_enabled, allow_nil: false) { ::Gitlab::LetsEncrypt.enabled? }
attr_encrypted :key, attr_encrypted :key,
mode: :per_attribute_iv_and_salt, mode: :per_attribute_iv_and_salt,
insecure_mode: true, insecure_mode: true,
......
...@@ -23,6 +23,18 @@ describe "Pages with Let's Encrypt", :https_pages_enabled do ...@@ -23,6 +23,18 @@ describe "Pages with Let's Encrypt", :https_pages_enabled do
end end
end end
it "creates new domain with Let's Encrypt enabled by default" do
visit new_project_pages_domain_path(project)
fill_in 'Domain', with: 'my.test.domain.com'
expect(find("#pages_domain_auto_ssl_enabled", visible: false).value).to eq 'true'
click_button 'Create New Domain'
expect(page).to have_content('my.test.domain.com')
expect(PagesDomain.find_by_domain('my.test.domain.com').auto_ssl_enabled).to eq(true)
end
context 'when the auto SSL management is initially disabled' do context 'when the auto SSL management is initially disabled' do
let(:domain) do let(:domain) do
create(:pages_domain, auto_ssl_enabled: false, project: project) create(:pages_domain, auto_ssl_enabled: false, project: project)
...@@ -96,7 +108,7 @@ describe "Pages with Let's Encrypt", :https_pages_enabled do ...@@ -96,7 +108,7 @@ describe "Pages with Let's Encrypt", :https_pages_enabled do
end end
context 'when certificate is provided by user' do context 'when certificate is provided by user' do
let(:domain) { create(:pages_domain, project: project) } let(:domain) { create(:pages_domain, project: project, auto_ssl_enabled: false) }
it 'user sees certificate subject' do it 'user sees certificate subject' do
visit edit_project_pages_domain_path(project, domain) visit edit_project_pages_domain_path(project, domain)
......
...@@ -133,7 +133,7 @@ shared_examples 'pages settings editing' do ...@@ -133,7 +133,7 @@ shared_examples 'pages settings editing' do
end end
end end
context 'when pages are exposed on external HTTPS address', :https_pages_enabled do context 'when pages are exposed on external HTTPS address', :https_pages_enabled, :js do
let(:certificate_pem) do let(:certificate_pem) do
<<~PEM <<~PEM
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
...@@ -178,6 +178,11 @@ shared_examples 'pages settings editing' do ...@@ -178,6 +178,11 @@ shared_examples 'pages settings editing' do
visit new_project_pages_domain_path(project) visit new_project_pages_domain_path(project)
fill_in 'Domain', with: 'my.test.domain.com' fill_in 'Domain', with: 'my.test.domain.com'
if ::Gitlab::LetsEncrypt.enabled?
find('.js-auto-ssl-toggle-container .project-feature-toggle').click
end
fill_in 'Certificate (PEM)', with: certificate_pem fill_in 'Certificate (PEM)', with: certificate_pem
fill_in 'Key (PEM)', with: certificate_key fill_in 'Key (PEM)', with: certificate_key
click_button 'Create New Domain' click_button 'Create New Domain'
...@@ -202,7 +207,7 @@ shared_examples 'pages settings editing' do ...@@ -202,7 +207,7 @@ shared_examples 'pages settings editing' do
describe 'updating the certificate for an existing domain' do describe 'updating the certificate for an existing domain' do
let!(:domain) do let!(:domain) do
create(:pages_domain, project: project) create(:pages_domain, project: project, auto_ssl_enabled: false)
end end
it 'allows the certificate to be updated' do it 'allows the certificate to be updated' do
...@@ -215,7 +220,7 @@ shared_examples 'pages settings editing' do ...@@ -215,7 +220,7 @@ shared_examples 'pages settings editing' do
end end
context 'when the certificate is invalid' do context 'when the certificate is invalid' do
let_it_be(:domain) do let!(:domain) do
create(:pages_domain, :without_certificate, :without_key, project: project) create(:pages_domain, :without_certificate, :without_key, project: project)
end end
...@@ -224,6 +229,10 @@ shared_examples 'pages settings editing' do ...@@ -224,6 +229,10 @@ shared_examples 'pages settings editing' do
within('#content-body') { click_link 'Edit' } within('#content-body') { click_link 'Edit' }
if ::Gitlab::LetsEncrypt.enabled?
find('.js-auto-ssl-toggle-container .project-feature-toggle').click
end
fill_in 'Certificate (PEM)', with: 'invalid data' fill_in 'Certificate (PEM)', with: 'invalid data'
click_button 'Save Changes' click_button 'Save Changes'
......
...@@ -13,7 +13,7 @@ describe PagesDomainSslRenewalCronWorker do ...@@ -13,7 +13,7 @@ describe PagesDomainSslRenewalCronWorker do
describe '#perform' do describe '#perform' do
let(:project) { create :project } let(:project) { create :project }
let!(:domain) { create(:pages_domain, project: project) } let!(:domain) { create(:pages_domain, project: project, auto_ssl_enabled: false) }
let!(:domain_with_enabled_auto_ssl) { create(:pages_domain, project: project, auto_ssl_enabled: true) } let!(:domain_with_enabled_auto_ssl) { create(:pages_domain, project: project, auto_ssl_enabled: true) }
let!(:domain_with_obtained_letsencrypt) do let!(:domain_with_obtained_letsencrypt) do
create(:pages_domain, :letsencrypt, project: project, auto_ssl_enabled: true) create(:pages_domain, :letsencrypt, project: project, auto_ssl_enabled: true)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment