integtest/spec/air_gapped_spec.rb (67 lines of code) (raw):

# frozen_string_literal: true ## # Test for the air gapped deploy of the docs. For the most part the air gapped # deploy is the same as a preview that doesn't attempt to update itself so we # don't test a ton of things here. RSpec.describe 'air gapped deploy', order: :defined do convert_before do |src, dest| repo = src.repo_with_index 'repo', <<~ASCIIDOC Some text. ASCIIDOC book = src.book 'Test' book.source repo, 'index.asciidoc' dest.prepare_convert_all(src.conf).convert end before(:context) do @air_gapped = @dest.start_air_gapped end after(:context) do @air_gapped&.exit end let(:air_gapped) { @air_gapped } let(:host) { 'localhost' } let(:books_index) { air_gapped.get 'guide/index.html', host: host } let(:outside_of_guide) do air_gapped.get 'cloud/elasticsearch-service/signup', host: host end context 'the logs' do it "don't contain anything git" do air_gapped.wait_for_logs(/Built docs are ready/, 10) expect(air_gapped.logs).not_to include('Cloning built docs') expect(air_gapped.logs).not_to include('git') end end include_examples 'the favicon' context 'the books index' do it 'links to the book' do expect(books_index).to serve(doc_body(include(<<~HTML.strip))) <a href="test/current/index.html" class="ulink" target="_top">Test</a> HTML end it 'logs the access to the docs root' do air_gapped.wait_for_logs %r{localhost GET /guide/index.html}, 10 expect(air_gapped.logs).to include(<<~LOGS) localhost GET /guide/index.html HTTP/1.1 200 LOGS end it 'uses the air gapped template' do expect(books_index).not_to serve(include(<<~HTML.strip)) https://www.googletagmanager.com/gtag/js HTML end end context 'for a url outside of the docs' do it '404s' do expect(outside_of_guide.code).to eq('404') end end context "when the host isn't localhost" do let(:host) { 'dot.dot.localhost' } it 'we can still serve the books index' do expect(books_index).to serve(doc_body(include(<<~HTML.strip))) <a href="test/current/index.html" class="ulink" target="_top">Test</a> HTML end it 'logs the access to the funny host' do air_gapped.wait_for_logs %r{dot.dot.localhost GET /guide/index.html}, 10 expect(air_gapped.logs).to include(<<~LOGS) dot.dot.localhost GET /guide/index.html HTTP/1.1 200 LOGS end end end