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