summaryrefslogtreecommitdiff
path: root/qa/qa/specs/features/shared_contexts/packages_registry_shared_context.rb
blob: a611a801b110e42a3d7f2bfd05cf1d356760bd39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# frozen_string_literal: true

module QA
  RSpec.shared_context 'packages registry qa scenario' do
    let(:personal_access_token) { Runtime::Env.personal_access_token }

    let(:package_project) do
      Resource::Project.fabricate_via_api! do |project|
        project.name = "#{package_type}_package_project"
        project.initialize_with_readme = true
        project.visibility = :private
      end
    end

    let(:client_project) do
      Resource::Project.fabricate_via_api! do |client_project|
        client_project.name = "#{package_type}_client_project"
        client_project.initialize_with_readme = true
        client_project.group = package_project.group
      end
    end

    let(:package) do
      Resource::Package.init do |package|
        package.name = package_name
        package.project = package_project
      end
    end

    let(:runner) do
      Resource::GroupRunner.fabricate! do |runner|
        runner.name = "qa-runner-#{Time.now.to_i}"
        runner.tags = ["runner-for-#{package_project.group.name}"]
        runner.executor = :docker
        runner.group = package_project.group
      end
    end

    let(:gitlab_address_with_port) do
      uri = URI.parse(Runtime::Scenario.gitlab_address)
      "#{uri.scheme}://#{uri.host}:#{uri.port}"
    end

    let(:project_deploy_token) do
      Resource::ProjectDeployToken.fabricate_via_api! do |deploy_token|
        deploy_token.name = 'package-deploy-token'
        deploy_token.project = package_project
        deploy_token.scopes = %w[
          read_repository
          read_package_registry
          write_package_registry
        ]
      end
    end

    before do
      Flow::Login.sign_in_unless_signed_in
      runner
    end

    after do
      runner.remove_via_api!
      package.remove_via_api!
      package_project.remove_via_api!
      client_project.remove_via_api!
    end
  end
end