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  }