def gitlab(request):

    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)

    create_users_in_project(USER_BASE_NAME, 4, GROUP_AND_PROJECT_NAME)

    create_group(GROUP_WITH_USER1_AND_USER2)
    add_users_to_group(GROUP_WITH_USER1_AND_USER2,
                       ['merge_requests_user1', 'merge_requests_user2'],
                       OWNER_ACCESS)
    remove_users_from_group(GROUP_WITH_USER1_AND_USER2, ['root'])

    create_group(GROUP_WITH_USER3)
    add_users_to_group(GROUP_WITH_USER3, ['merge_requests_user3'],
                       OWNER_ACCESS)
    remove_users_from_group(GROUP_WITH_USER3, ['root'])

    create_group(GROUP_WITH_USER4)
    add_users_to_group(GROUP_WITH_USER4, ['merge_requests_user4'],
                       OWNER_ACCESS)
    remove_users_from_group(GROUP_WITH_USER4, ['root'])

    gl = get_gitlab()

    def fin():
        # remove all the approval rules and disable approvals in the project
        rules = gl.get_approvals_rules(GROUP_AND_PROJECT_NAME)
        for rule in rules:
            gl.delete_approvals_rule(GROUP_AND_PROJECT_NAME, rule['id'])
        gl.put_project_settings(GROUP_AND_PROJECT_NAME,
                                {'merge_requests_access_level': 'disabled'})

    request.addfinalizer(fin)
    return gl  # provide fixture value
Example #2
0
def gitlab(request):
    gl = get_gitlab()

    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)
    create_readme_in_project(GROUP_AND_PROJECT_NAME)  # in master branch

    branches = [
        "protect_branch_but_allow_all",
        "protect_branch_and_disallow_all",
        "protect_branch_and_allow_merges",
        "protect_branch_and_allow_pushes",
        "protect_branch_and_allow_merges_access_levels",
        "protect_branch_and_allow_pushes_access_levels",
        "protect_branch",
    ]
    for branch in branches:
        gl.create_branch(GROUP_AND_PROJECT_NAME, branch, "master")

    def fin():
        # delete all created branches
        for branch_to_delete in branches:
            gl.delete_branch(GROUP_AND_PROJECT_NAME, branch_to_delete)

    request.addfinalizer(fin)
    return gl  # provide fixture value
Example #3
0
def project(group):
    project_name = get_random_name()
    create_project(group, project_name)

    yield project_name

    gl = get_gitlab()
    gl.delete_project(f"{group}/{project_name}")
Example #4
0
def group():
    group_name = get_random_name()
    create_group(group_name)

    yield group_name

    gl = get_gitlab()
    gl.delete_group(group_name)
Example #5
0
def other_group():
    # TODO: deduplicate this - it's a copy and paste from the above fixture
    group_name = get_random_name()
    create_group(group_name)

    yield group_name

    gl = get_gitlab()
    gl.delete_group(group_name)
Example #6
0
def other_project(group):
    # TODO: deduplicate this - it's a copy and paste from the above fixture
    project_name = get_random_name()
    create_project(group, project_name)

    yield project_name

    gl = get_gitlab()
    gl.delete_project(f"{group}/{project_name}")
def gitlab(request):
    create_group(GROUP_NAME)

    gl = get_gitlab()

    def fin():
        delete_variables_from_group(GROUP_NAME, ["FOO", "BAR"])

    request.addfinalizer(fin)
    return gl  # provide fixture value
Example #8
0
def gitlab(request):
    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)

    gl = get_gitlab()

    def fin():
        gl.delete_project(GROUP_AND_PROJECT_NAME)

    request.addfinalizer(fin)
    return gl  # provide fixture value
Example #9
0
def gitlab(request):
    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)

    gl = get_gitlab()

    def fin():
        # disable test integrations
        gl.delete_service(GROUP_AND_PROJECT_NAME, 'mattermost')

    request.addfinalizer(fin)
    return gl  # provide fixture value
Example #10
0
def gitlab(request):
    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)

    gl = get_gitlab()

    def fin():
        # disable test integrations
        for service in ['asana', 'hipchat', 'redmine', 'jira', 'mattermost']:
            gl.delete_service(GROUP_AND_PROJECT_NAME, service)

    request.addfinalizer(fin)
    return gl  # provide fixture value
def gitlab(request):
    gl = get_gitlab()

    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)
    create_readme_in_project(GROUP_AND_PROJECT_NAME)  # in main branch

    def fin():
        gl.delete_project(GROUP_AND_PROJECT_NAME)
        # TODO: find some smarter way to avoid 400 when trying to create project while it is still being deleted
        time.sleep(15)

    request.addfinalizer(fin)
    return gl  # provide fixture value
Example #12
0
def gitlab(request):
    gl = get_gitlab()

    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)
    create_readme_in_project(GROUP_AND_PROJECT_NAME)  # in main branch

    delete_pipeline_schedules_from_project(GROUP_AND_PROJECT_NAME)

    another_branch = "scheduled/new-feature"
    gl.create_branch(GROUP_AND_PROJECT_NAME, another_branch, "main")

    gl.create_pipeline_schedule(
        GROUP_AND_PROJECT_NAME,
        "Existing schedule",
        "main",
        "0 * * * *",
        {"active": "true"},
    )
    gl.create_pipeline_schedule(
        GROUP_AND_PROJECT_NAME, "Existing schedule with vars", "main", "30 * * * *"
    )

    gl.create_pipeline_schedule(
        GROUP_AND_PROJECT_NAME, "Existing schedule to replace", "main", "30 1 * * *"
    )
    gl.create_pipeline_schedule(
        GROUP_AND_PROJECT_NAME,
        "Existing schedule to replace",
        another_branch,
        "30 2 * * *",
    )

    redundant_schedule = gl.create_pipeline_schedule(
        GROUP_AND_PROJECT_NAME, "Redundant schedule", "main", "0 * * * *"
    )
    gl.create_pipeline_schedule_variable(
        GROUP_AND_PROJECT_NAME, redundant_schedule["id"], "test_variable", "test_value"
    )

    def fin():
        # delete all created resources
        delete_pipeline_schedules_from_project(GROUP_AND_PROJECT_NAME)
        gl.delete_branch(GROUP_AND_PROJECT_NAME, another_branch)
        gl.delete_project(GROUP_AND_PROJECT_NAME)

    request.addfinalizer(fin)
    return gl  # provide fixture value
Example #13
0
def gitlab(request):
    gl = get_gitlab()

    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)
    create_readme_in_project(GROUP_AND_PROJECT_NAME)  # in master branch
    branches_to_create = [
        'protected_branch1', 'protected_branch2', 'protected_branch3',
        'regular_branch1', 'regular_branch2'
    ]
    for branch in branches_to_create:
        gl.create_branch(GROUP_AND_PROJECT_NAME, branch, 'master')

    def fin():
        # delete all created branches
        for branch_to_delete in branches_to_create:
            gl.delete_branch(GROUP_AND_PROJECT_NAME, branch_to_delete)

    request.addfinalizer(fin)
    return gl  # provide fixture value
def gitlab(request):

    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)

    create_users_in_project(USER_BASE_NAME, 4, GROUP_AND_PROJECT_NAME)

    create_group(GROUP_WITH_USER1_AND_USER2)
    add_users_to_group(GROUP_WITH_USER1_AND_USER2, ['merge_requests_user1', 'merge_requests_user2'])

    create_group(GROUP_WITH_USER4)
    add_users_to_group(GROUP_WITH_USER4, ['merge_requests_user4'])

    gl = get_gitlab()

    def fin():
        # the only thing needed to clean up after below tests is disabling merge requests for the project
        # completely - this should reset project's MR approvers and approver groups lists
        gl.put_project_settings(GROUP_AND_PROJECT_NAME, {'merge_requests_access_level': 'disabled'})

    request.addfinalizer(fin)
    return gl  # provide fixture value
def gitlab(request):
    gl = get_gitlab()

    create_group(GROUP_NAME)
    create_users(USER_BASE_NAME, 4)

    add_users_to_group(GROUP_NAME, ['root'])
    remove_users_from_group(GROUP_NAME, [
        'group_member_user1', 'group_member_user2', 'group_member_user3',
        'group_member_user4'
    ])

    def fin():
        # same at the end
        add_users_to_group(GROUP_NAME, ['root'], OWNER_ACCESS)
        remove_users_from_group(GROUP_NAME, [
            'group_member_user1', 'group_member_user2', 'group_member_user3',
            'group_member_user4'
        ])

    request.addfinalizer(fin)
    return gl  # provide fixture value
Example #16
0
def gitlab(request):
    gl = get_gitlab()

    create_group(GROUP_NAME)
    create_project_in_group(GROUP_NAME, PROJECT_NAME)
    create_readme_in_project(GROUP_AND_PROJECT_NAME)  # in master branch

    branches = [
        "protect_branch_but_allow_all",
        "protect_branch_with_code_owner_approval_required",
        "protect_branch_and_disallow_all",
        "protect_branch_and_allow_merges",
        "protect_branch_and_allow_pushes",
        "protect_branch_and_allow_merges_access_levels",
        "protect_branch_and_allow_pushes_access_levels",
        "protect_branch",
    ]
    for branch in branches:
        gl.create_branch(GROUP_AND_PROJECT_NAME, branch, "master")

    # create_users(USER_BASE_NAME, 1)
    # add_users_to_group(GROUP_NAME, ["branches_user1"])
    # create_file_in_project(
    #     GROUP_AND_PROJECT_NAME,
    #     "protect_branch_with_code_owner_approval_required",
    #     "CODEOWNERS",
    #     "README.md @branches_user1",
    # )

    def fin():
        # delete all created branches
        for branch_to_delete in branches:
            gl.delete_branch(GROUP_AND_PROJECT_NAME, branch_to_delete)

    request.addfinalizer(fin)
    return gl  # provide fixture value
Example #17
0
def gitlab():
    gl = get_gitlab()
    yield gl  # provide fixture value