@@ -31,106 +31,17 @@ import (
3131)
3232
3333const (
34- gitlabGroup = "infrastructure-manager"
35- gitlabGroupID = 84326276
3634 gitlabProjectName = "im-cloudbuild-workspace-gitlab"
3735)
3836
39- type GitLabClient struct {
40- t * testing.T
41- client * gitlab.Client
42- group string
43- namespace int
44- repo string
45- project * gitlab.Project
46- }
47-
48- func NewGitLabClient (t * testing.T , token string ) * GitLabClient {
49- t .Helper ()
50- client , err := gitlab .NewClient (token )
51- if err != nil {
52- t .Fatal (err .Error ())
53- }
54- return & GitLabClient {
55- t : t ,
56- client : client ,
57- group : gitlabGroup ,
58- namespace : gitlabGroupID ,
59- repo : gitlabProjectName ,
60- }
61- }
62-
63- func (gl * GitLabClient ) ProjectName () string {
64- return fmt .Sprintf ("%s/%s" , gl .group , gl .repo )
65- }
66-
67- func (gl * GitLabClient ) GetProject () * gitlab.Project {
68- proj , resp , err := gl .client .Projects .GetProject (gl .ProjectName (), nil )
69- if resp .StatusCode != 404 && err != nil {
70- gl .t .Fatalf ("got status code %d, error %s" , resp .StatusCode , err .Error ())
71- }
72- gl .project = proj
73- return proj
74- }
75-
76- // GetOpenMergeRequest gets the last opened merge request for a given branch if it exists.
77- func (gl * GitLabClient ) GetOpenMergeRequest (branch string ) * gitlab.MergeRequest {
78- opts := gitlab.ListProjectMergeRequestsOptions {
79- State : gitlab .Ptr ("opened" ),
80- SourceBranch : gitlab .Ptr (branch ),
81- }
82- mergeRequests , _ , err := gl .client .MergeRequests .ListProjectMergeRequests (gl .ProjectName (), & opts )
83- if err != nil {
84- gl .t .Fatal (err .Error ())
85- }
86- if len (mergeRequests ) == 0 {
87- return nil
88- }
89- return mergeRequests [len (mergeRequests )- 1 ]
90- }
91-
92- func (gl * GitLabClient ) CreateMergeRequest (title , branch , base string ) * gitlab.MergeRequest {
93- opts := gitlab.CreateMergeRequestOptions {
94- Title : gitlab .Ptr (title ),
95- SourceBranch : gitlab .Ptr (branch ),
96- TargetBranch : gitlab .Ptr (base ),
97- }
98- mergeRequest , _ , err := gl .client .MergeRequests .CreateMergeRequest (gl .ProjectName (), & opts )
99- if err != nil {
100- gl .t .Fatal (err .Error ())
101- }
102- return mergeRequest
103- }
104-
105- func (gl * GitLabClient ) CloseMergeRequest (mr * gitlab.MergeRequest ) {
106- _ , err := gl .client .MergeRequests .DeleteMergeRequest (gl .ProjectName (), mr .IID )
107- if err != nil {
108- gl .t .Fatal (err .Error ())
109- }
110- }
111-
112- func (gl * GitLabClient ) AcceptMergeRequest (mr * gitlab.MergeRequest , commitMessage string ) * gitlab.MergeRequest {
113- opts := gitlab.AcceptMergeRequestOptions {
114- ShouldRemoveSourceBranch : gitlab .Ptr (true ),
115- }
116- merged , resp , err := gl .client .MergeRequests .AcceptMergeRequest (gl .ProjectName (), mr .IID , & opts )
117- if err != nil {
118- gl .t .Fatal (err .Error ())
119- }
120- if resp .StatusCode != 200 {
121- gl .t .Fatalf ("failed to accept merge request %v" , resp )
122- }
123- return merged
124- }
125-
12637func TestIMCloudBuildWorkspaceGitLab (t * testing.T ) {
12738 gitlabPAT := cftutils .ValFromEnv (t , "IM_GITLAB_PAT" )
128- client := NewGitLabClient (t , gitlabPAT )
39+ client := utils . NewGitLabClient (t , gitlabPAT , gitlabProjectName )
12940 client .GetProject ()
13041
13142 vars := map [string ]interface {}{
13243 "im_gitlab_pat" : gitlabPAT ,
133- "repository_url" : client .project .HTTPURLToRepo ,
44+ "repository_url" : client .Project .HTTPURLToRepo ,
13445 }
13546 bpt := tft .NewTFBlueprintTest (t , tft .WithVars (vars ))
13647
@@ -149,7 +60,7 @@ func TestIMCloudBuildWorkspaceGitLab(t *testing.T) {
14960 apiSecretID := bpt .GetStringOutput ("gitlab_api_secret_id" )
15061 readApiSecretID := bpt .GetStringOutput ("gitlab_read_api_secret_id" )
15162 triggerLocation := "us-central1"
152- repoURLSplit := strings .Split (client .project .HTTPURLToRepo , "/" )
63+ repoURLSplit := strings .Split (client .Project .HTTPURLToRepo , "/" )
15364
15465 // CB P4SA IAM for the two secrets
15566 projectNum := gcloud .Runf (t , "projects describe %s --format='value(projectNumber)'" , projectID ).Get ("projectNumber" )
0 commit comments