Sha256: db636ddd48c43f8686399351f859946267754fdb794934f43f929cae7926b34a

Contents?: true

Size: 1.73 KB

Versions: 20

Compression:

Stored size: 1.73 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 }
          @log_volume = {}
        end

        attr_reader :name
        attr_writer :tls

        def prepare
          super

          setup_tls if tls
        end

        # Print smocker log output by using docker logs command because smocker only logs to stdout
        #
        # @return [void]
        def teardown!
          Docker::Command.execute("logs #{name}")

          super
        end

        private

        attr_reader :tls_path, :tls

        # Set up tls certs
        #
        # @return [void]
        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

20 entries across 20 versions & 1 rubygems

Version Path
gitlab-qa-12.3.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.3.0.1 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-12.2.1 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-12.2.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-12.1.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-12.0.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-11.3.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-11.2.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-11.1.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-11.0.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.6.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.5.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.4.1 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.4.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.3.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.2.2 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.2.1 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.2.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.1.0 lib/gitlab/qa/component/mock_server.rb
gitlab-qa-10.0.0 lib/gitlab/qa/component/mock_server.rb