Sha256: 0ccbe4fb8279484ea24cae4dfe0696fde5214ed0e8b72136a82f28d0fd81f592

Contents?: true

Size: 1.41 KB

Versions: 8

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

module Gitlab
  module QA
    module Component
      # General purpose http mock server
      # see: https://smocker.dev/
      #
      class MockServer < Base
        DOCKER_IMAGE = "thiht/smocker"
        DOCKER_IMAGE_TAG = "0.18.2"

        def initialize
          super

          @tls = false
          @name = "smocker"
          @tls_path = "/etc/smocker/tls"
          @ports = [80, 8081]
          @environment = { "SMOCKER_MOCK_SERVER_LISTEN_PORT" => 80 }
        end

        attr_reader :name
        attr_writer :tls

        def prepare
          super

          setup_tls if tls
        end

        private

        attr_reader :tls_path, :tls

        def setup_tls
          @volumes = { "smocker-ssl" => tls_path }
          @ports = [443, 8081]
          @environment = {
            "SMOCKER_MOCK_SERVER_LISTEN_PORT" => 443,
            "SMOCKER_TLS_ENABLE" => "true",
            "SMOCKER_TLS_CERT_FILE" => "#{@tls_path}/smocker.crt",
            "SMOCKER_TLS_PRIVATE_KEY_FILE" => "#{@tls_path}/smocker.key"
          }

          Alpine.perform do |alpine|
            alpine.volumes = volumes

            alpine.start_instance
            docker.copy(alpine.name, "#{CERTIFICATES_PATH}/smocker/.", tls_path)
          ensure
            alpine.teardown! # always remove container, even when global `--no-tests` flag was provided
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
gitlab-qa-9.1.2 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-9.1.1 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-9.1.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-9.0.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-8.15.3 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-8.15.2 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-8.15.1 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-8.15.0 lib/gitlab/qa/component/mock_server.rb