Skip to content

Commit 4ef0514

Browse files
committed
Test correct transfer of a project between Gitlab groups.
1 parent cfa6ac0 commit 4ef0514

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

gitlab/resource_gitlab_project_test.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,56 @@ func TestAccGitlabProject_nestedImport(t *testing.T) {
302302
})
303303
}
304304

305+
func TestAccGitlabProject_transfer(t *testing.T) {
306+
var transferred, received gitlab.Project
307+
rInt := acctest.RandInt()
308+
309+
transferred = gitlab.Project{
310+
Namespace: &gitlab.ProjectNamespace{Name: fmt.Sprintf("foo2group-%d", rInt)},
311+
Name: fmt.Sprintf("foo-%d", rInt),
312+
Path: fmt.Sprintf("foo-%d", rInt),
313+
Description: "Terraform acceptance tests",
314+
TagList: []string{},
315+
RequestAccessEnabled: true,
316+
IssuesEnabled: true,
317+
MergeRequestsEnabled: true,
318+
JobsEnabled: true,
319+
ApprovalsBeforeMerge: 0,
320+
WikiEnabled: true,
321+
SnippetsEnabled: true,
322+
ContainerRegistryEnabled: true,
323+
LFSEnabled: true,
324+
SharedRunnersEnabled: true,
325+
Visibility: gitlab.PublicVisibility,
326+
MergeMethod: gitlab.NoFastForwardMerge,
327+
OnlyAllowMergeIfPipelineSucceeds: false,
328+
OnlyAllowMergeIfAllDiscussionsAreResolved: false,
329+
}
330+
331+
resource.Test(t, resource.TestCase{
332+
PreCheck: func() { testAccPreCheck(t) },
333+
Providers: testAccProviders,
334+
CheckDestroy: testAccCheckGitlabProjectDestroy,
335+
Steps: []resource.TestStep{
336+
// Create a project in a group
337+
{
338+
Config: testAccGitlabProjectInGroupConfig(rInt),
339+
Check: resource.ComposeTestCheckFunc(
340+
testAccCheckGitlabProjectExists("gitlab_project.foo", &received),
341+
),
342+
},
343+
// Create a second group and set the transfer the project to this group
344+
{
345+
Config: testAccGitlabProjectTransferBetweenGroups(rInt),
346+
Check: resource.ComposeTestCheckFunc(
347+
testAccCheckGitlabProjectExists("gitlab_project.foo", &received),
348+
testAccCheckAggregateGitlabProject(&transferred, &received),
349+
),
350+
},
351+
},
352+
})
353+
}
354+
305355
func testAccCheckGitlabProjectExists(n string, project *gitlab.Project) resource.TestCheckFunc {
306356
return func(s *terraform.State) error {
307357
var err error
@@ -431,6 +481,32 @@ resource "gitlab_project" "foo" {
431481
`, rInt, rInt, rInt)
432482
}
433483

484+
func testAccGitlabProjectTransferBetweenGroups(rInt int) string {
485+
return fmt.Sprintf(`
486+
resource "gitlab_group" "foo" {
487+
name = "foogroup-%d"
488+
path = "foogroup-%d"
489+
visibility_level = "public"
490+
}
491+
492+
resource "gitlab_group" "foo2" {
493+
name = "foo2group-%d"
494+
path = "foo2group-%d"
495+
visibility_level = "public"
496+
}
497+
498+
resource "gitlab_project" "foo" {
499+
name = "foo-%d"
500+
description = "Terraform acceptance tests"
501+
namespace_id = "${gitlab_group.foo2.id}"
502+
503+
# So that acceptance tests can be run in a gitlab organization
504+
# with no billing
505+
visibility_level = "public"
506+
}
507+
`, rInt, rInt, rInt, rInt, rInt)
508+
}
509+
434510
func testAccGitlabProjectConfigDefaultBranch(rInt int, defaultBranch string) string {
435511
defaultBranchStatement := ""
436512

0 commit comments

Comments
 (0)