github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/source/github/github_test.go (about) 1 package github_test 2 3 import ( 4 "context" 5 "fmt" 6 "os" 7 "testing" 8 "time" 9 10 gh "github.com/google/go-github/github" 11 "golang.org/x/oauth2" 12 13 "github.com/kubri/kubri/internal/test" 14 "github.com/kubri/kubri/source/github" 15 ) 16 17 func TestGithub(t *testing.T) { 18 token, ok := os.LookupEnv("GITHUB_TOKEN") 19 if !ok { 20 t.Skip("Missing environment variable: GITHUB_TOKEN") 21 } 22 23 ctx := context.Background() 24 ts := oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token}) 25 client := gh.NewClient(oauth2.NewClient(ctx, ts)) 26 user, _, err := client.Users.Get(ctx, "") 27 if err != nil { 28 t.Fatal(err) 29 } 30 31 owner := user.GetLogin() 32 repo := fmt.Sprintf("test_%d", time.Now().UnixNano()) 33 34 _, _, err = client.Repositories.Create(ctx, "", &gh.Repository{Name: &repo}) 35 if err != nil { 36 t.Fatal(err) 37 } 38 t.Cleanup(func() { 39 _, err := client.Repositories.Delete(ctx, owner, repo) 40 if err != nil { 41 t.Fatal(err) 42 } 43 }) 44 45 _, _, err = client.Repositories.CreateFile(ctx, owner, repo, "test", &gh.RepositoryContentFileOptions{ 46 Message: gh.String("test"), 47 Content: []byte("test"), 48 }) 49 if err != nil { 50 t.Fatal(err) 51 } 52 53 for _, r := range test.SourceWant() { 54 _, _, err = client.Repositories.CreateRelease(ctx, owner, repo, &gh.RepositoryRelease{ 55 TagName: gh.String(r.Version), 56 Body: gh.String(r.Description), 57 }) 58 if err != nil { 59 t.Fatal(err) 60 } 61 } 62 63 s, err := github.New(github.Config{Owner: owner, Repo: repo}) 64 if err != nil { 65 t.Fatal(err) 66 } 67 68 test.Source(t, s, func(version, asset string) string { 69 return "https://github.com/" + owner + "/" + repo + "/releases/download/" + version + "/" + asset 70 }) 71 }