70 lines
2.5 KiB
Bash
70 lines
2.5 KiB
Bash
|
[[ "$TRACE" ]] && set -x
|
||
|
|
||
|
function create_user() {
|
||
|
local user="${1}"
|
||
|
|
||
|
# API details at https://docs.gitlab.com/ee/api/users.html#user-creation
|
||
|
#
|
||
|
# We set "can_create_group=false" because we don't want the DAST user to create groups.
|
||
|
# Otherwise, the DAST user likely creates a group and enables 2FA for all group members,
|
||
|
# which leads to the DAST scan getting "stuck" on the 2FA set up page.
|
||
|
# Once https://gitlab.com/gitlab-org/gitlab/-/issues/231447 is resolved, we can use
|
||
|
# DAST_AUTH_EXCLUDE_URLS instead to prevent DAST from enabling 2FA.
|
||
|
curl --silent --show-error --header "PRIVATE-TOKEN: ${REVIEW_APPS_ROOT_TOKEN}" \
|
||
|
--data "email=${user}@example.com" \
|
||
|
--data "name=${user}" \
|
||
|
--data "username=${user}" \
|
||
|
--data "password=${REVIEW_APPS_ROOT_PASSWORD}" \
|
||
|
--data "skip_confirmation=true" \
|
||
|
--data "can_create_group=false" \
|
||
|
"${CI_ENVIRONMENT_URL}/api/v4/users" > /tmp/user.json
|
||
|
|
||
|
[[ "$TRACE" ]] && cat /tmp/user.json >&2
|
||
|
|
||
|
jq .id /tmp/user.json
|
||
|
}
|
||
|
|
||
|
function create_project_for_user() {
|
||
|
local userid="${1}"
|
||
|
|
||
|
# API details at https://docs.gitlab.com/ee/api/projects.html#create-project-for-user
|
||
|
curl --silent --show-error --header "PRIVATE-TOKEN: ${REVIEW_APPS_ROOT_TOKEN}" \
|
||
|
--data "user_id=${userid}" \
|
||
|
--data "name=awesome-test-project-${userid}" \
|
||
|
--data "visibility=private" \
|
||
|
"${CI_ENVIRONMENT_URL}/api/v4/projects/user/${userid}" > /tmp/project.json
|
||
|
|
||
|
[[ "$TRACE" ]] && cat /tmp/project.json >&2
|
||
|
}
|
||
|
|
||
|
function trigger_proj_user_creation(){
|
||
|
local u1=$(create_user "user1")
|
||
|
create_project_for_user $u1
|
||
|
local u2=$(create_user "user2")
|
||
|
create_project_for_user $u2
|
||
|
local u3=$(create_user "user3")
|
||
|
create_project_for_user $u3
|
||
|
local u4=$(create_user "user4")
|
||
|
create_project_for_user $u4
|
||
|
local u5=$(create_user "user5")
|
||
|
create_project_for_user $u5
|
||
|
local u6=$(create_user "user6")
|
||
|
create_project_for_user $u6
|
||
|
local u7=$(create_user "user7")
|
||
|
create_project_for_user $u7
|
||
|
local u8=$(create_user "user8")
|
||
|
create_project_for_user $u8
|
||
|
local u9=$(create_user "user9")
|
||
|
create_project_for_user $u9
|
||
|
local u10=$(create_user "user10")
|
||
|
create_project_for_user $u10
|
||
|
local u11=$(create_user "user11")
|
||
|
create_project_for_user $u11
|
||
|
local u12=$(create_user "user12")
|
||
|
create_project_for_user $u12
|
||
|
local u13=$(create_user "user13")
|
||
|
create_project_for_user $u13
|
||
|
local u14=$(create_user "user14")
|
||
|
create_project_for_user $u14
|
||
|
}
|