Skip to content

Commit df76c27

Browse files
wip: testing gitlab-ee
1 parent 3cb2352 commit df76c27

File tree

8 files changed

+103
-5
lines changed

8 files changed

+103
-5
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import gitlab
2+
import gitlab.v4.objects
3+
4+
5+
def test_merge_request_approvals(gl: gitlab.Gitlab, project):
6+
license = gl.get_license()
7+
print(license)
8+
9+
config = project.approvals.get()
10+
assert config is None

tests/functional/conftest.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ def fixture_dir(test_dir):
1515

1616

1717
def reset_gitlab(gl):
18+
# NOTE(jlvillal): By default in GitLab EE it will wait 7 days before
19+
# deleting a group. Change it to 0 days.
20+
settings = gl.settings.get()
21+
if settings.deletion_adjourned_period != 0:
22+
settings.deletion_adjourned_period = 0
23+
settings.save()
1824
# previously tools/reset_gitlab.py
1925
for project in gl.projects.list():
2026
for deploy_token in project.deploytokens.list():
@@ -134,7 +140,7 @@ def gitlab_config(check_is_alive, docker_ip, docker_services, temp_dir, fixture_
134140
port = docker_services.port_for("gitlab", 80)
135141

136142
docker_services.wait_until_responsive(
137-
timeout=200, pause=5, check=lambda: check_is_alive("gitlab-test")
143+
timeout=300, pause=5, check=lambda: check_is_alive("gitlab-test")
138144
)
139145

140146
token = set_token("gitlab-test", fixture_dir=fixture_dir)

tests/functional/fixtures/.env

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
GITLAB_IMAGE=gitlab/gitlab-ce
2-
GITLAB_TAG=14.5.2-ce.0
1+
GITLAB_IMAGE=gitlab/gitlab-ee
2+
GITLAB_TAG=14.5.2-ee.0
3+
4+
GITLAB_CI_IMAGE=localhost/gitlab-ci
5+
GITLAB_CI_TAG=latest

tests/functional/fixtures/Dockerfile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
ARG GITLAB_IMAGE=get_this_from_env
2+
ARG GITLAB_TAG=get_this_from_env
3+
FROM ${GITLAB_IMAGE}:${GITLAB_TAG}
4+
5+
COPY create_license.rb /
6+
RUN ruby /create_license.rb
7+
8+
CMD ["/assets/wrapper"]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/bash
2+
3+
set -u
4+
set -e
5+
6+
TOP_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
7+
8+
cd "${TOP_DIR}" || exit 1
9+
10+
source .env
11+
12+
docker build \
13+
-t "${GITLAB_CI_IMAGE}:${GITLAB_CI_TAG}" \
14+
--build-arg GITLAB_IMAGE="${GITLAB_IMAGE}" \
15+
--build-arg GITLAB_TAG="${GITLAB_TAG}" \
16+
--no-cache \
17+
"${TOP_DIR}"
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# NOTE: As of 2021-12-26 the GitLab Enterprise Edition License has the following
2+
# section:
3+
# Notwithstanding the foregoing, you may copy and modify the Software for development
4+
# and testing purposes, without requiring a subscription.
5+
#
6+
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/LICENSE
7+
#
8+
# This code is strictly intended for use in the testing framework of python-gitlab
9+
10+
# Code inspired by: https://github.com/CONIGUERO/gitlab-license.git
11+
12+
require 'openssl'
13+
require 'gitlab/license'
14+
15+
# Generate a 2048 bit key pair.
16+
license_encryption_key = OpenSSL::PKey::RSA.generate(2048)
17+
18+
# Save the private key
19+
File.open("/.license_encryption_key", "w") { |f| f.write(license_encryption_key.to_pem) }
20+
# Save the public key
21+
public_key = license_encryption_key.public_key
22+
File.open("/.license_encryption_key.pub", "w") { |f| f.write(public_key.to_pem) }
23+
File.open("/opt/gitlab/embedded/service/gitlab-rails/.license_encryption_key.pub", "w") { |f| f.write(public_key.to_pem) }
24+
25+
Gitlab::License.encryption_key = license_encryption_key
26+
27+
# Build a new license.
28+
license = Gitlab::License.new
29+
30+
license.licensee = {
31+
"Name" => "python-gitlab-ci",
32+
"Company" => "python-gitlab-ci",
33+
"Email" => "python-gitlab-ci@example.com",
34+
}
35+
36+
# The date the license starts.
37+
license.starts_at = Date.today
38+
# Want to make sure we get at least 1 day of usage. Do two days after because if CI
39+
# started at 23:59 we could be expired in one minute if we only did one next_day.
40+
license.expires_at = Date.today.next_day.next_day
41+
42+
# Use 'ultimate' plan so that we can test all features in the CI
43+
license.restrictions = {
44+
:plan => "ultimate",
45+
:id => rand(1000..99999999)
46+
}
47+
48+
# Export the license, which encrypts and encodes it.
49+
data = license.export
50+
51+
File.open("/python-gitlab-ci.gitlab-license", 'w') { |file| file.write(data) }

tests/functional/fixtures/docker-compose.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
version: '3'
1+
version: '3.5'
22

33
networks:
44
gitlab-network:
55
name: gitlab-network
66

77
services:
88
gitlab:
9-
image: '${GITLAB_IMAGE}:${GITLAB_TAG}'
9+
image: '${GITLAB_CI_IMAGE}:${GITLAB_CI_TAG}'
1010
container_name: 'gitlab-test'
1111
hostname: 'gitlab.test'
1212
privileged: true # Just in case https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/1350
@@ -31,6 +31,7 @@ services:
3131
gitlab_exporter['enable'] = false
3232
grafana['enable'] = false
3333
letsencrypt['enable'] = false
34+
gitlab_rails['initial_license_file'] = "/python-gitlab-ci.gitlab-license"
3435
ports:
3536
- '8080:80'
3637
- '2222:22'

tox.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,13 @@ exclude_lines =
9595
[testenv:cli_func_v4]
9696
deps = -r{toxinidir}/requirements-docker.txt
9797
commands =
98+
{toxinidir}/tests/functional/fixtures/build-dockerfile.sh
9899
pytest --script-launch-mode=subprocess --cov --cov-report xml tests/functional/cli {posargs}
99100

100101
[testenv:py_func_v4]
101102
deps = -r{toxinidir}/requirements-docker.txt
102103
commands =
104+
{toxinidir}/tests/functional/fixtures/build-dockerfile.sh
103105
pytest --cov --cov-report xml tests/functional/api {posargs}
104106

105107
[testenv:smoke]

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy