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