github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/source/gitlab/gitlab_test.go (about) 1 package gitlab_test 2 3 import ( 4 "fmt" 5 "os" 6 "testing" 7 "time" 8 9 gl "github.com/xanzy/go-gitlab" 10 11 "github.com/kubri/kubri/internal/test" 12 "github.com/kubri/kubri/source/gitlab" 13 ) 14 15 func TestGitlab(t *testing.T) { 16 token, ok := os.LookupEnv("GITLAB_TOKEN") 17 if !ok { 18 t.Skip("Missing environment variable: GITLAB_TOKEN") 19 } 20 21 client, err := gl.NewClient(token) 22 if err != nil { 23 t.Fatal(err) 24 } 25 26 user, _, err := client.Users.CurrentUser() 27 if err != nil { 28 t.Fatal(err) 29 } 30 31 owner := user.Username 32 repo := fmt.Sprintf("test_%d", time.Now().UnixNano()) 33 pid := owner + "/" + repo 34 35 _, _, err = client.Projects.CreateProject(&gl.CreateProjectOptions{ 36 Name: &repo, 37 Visibility: gl.Ptr(gl.PublicVisibility), 38 }) 39 if err != nil { 40 t.Fatal(err) 41 } 42 t.Cleanup(func() { 43 _, err = client.Projects.DeleteProject(pid) 44 if err != nil { 45 t.Fatal(err) 46 } 47 }) 48 49 _, _, err = client.RepositoryFiles.CreateFile(pid, "test", &gl.CreateFileOptions{ 50 Branch: gl.Ptr("main"), 51 CommitMessage: gl.Ptr("test"), 52 Content: gl.Ptr("test"), 53 }) 54 if err != nil { 55 t.Fatal(err) 56 } 57 58 for _, r := range test.SourceWant() { 59 _, _, err = client.Releases.CreateRelease(pid, &gl.CreateReleaseOptions{ 60 Description: gl.Ptr(r.Description), 61 Ref: gl.Ptr("main"), 62 TagName: gl.Ptr(r.Version), 63 }) 64 if err != nil { 65 t.Fatal(err) 66 } 67 } 68 69 s, err := gitlab.New(gitlab.Config{Owner: owner, Repo: repo}) 70 if err != nil { 71 t.Fatal(err) 72 } 73 74 test.Source(t, s, func(version, asset string) string { 75 links, _, _ := client.ReleaseLinks.ListReleaseLinks(pid, version, nil) 76 for _, link := range links { 77 if link.Name == asset { 78 return link.URL 79 } 80 } 81 return "" 82 }) 83 }