mirror of
https://github.com/Luzifer/repo-template.git
synced 2024-11-14 02:12:44 +00:00
85 lines
1.9 KiB
Go
85 lines
1.9 KiB
Go
|
// Copyright 2014 The go-github AUTHORS. All rights reserved.
|
||
|
//
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
// +build integration
|
||
|
|
||
|
package integration
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"math/rand"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
|
||
|
"github.com/google/go-github/github"
|
||
|
"golang.org/x/oauth2"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
client *github.Client
|
||
|
|
||
|
// auth indicates whether tests are being run with an OAuth token.
|
||
|
// Tests can use this flag to skip certain tests when run without auth.
|
||
|
auth bool
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
token := os.Getenv("GITHUB_AUTH_TOKEN")
|
||
|
if token == "" {
|
||
|
print("!!! No OAuth token. Some tests won't run. !!!\n\n")
|
||
|
client = github.NewClient(nil)
|
||
|
} else {
|
||
|
tc := oauth2.NewClient(context.Background(), oauth2.StaticTokenSource(
|
||
|
&oauth2.Token{AccessToken: token},
|
||
|
))
|
||
|
client = github.NewClient(tc)
|
||
|
auth = true
|
||
|
}
|
||
|
|
||
|
// Environment variables required for Authorization integration tests
|
||
|
vars := []string{envKeyGitHubUsername, envKeyGitHubPassword, envKeyClientID, envKeyClientSecret}
|
||
|
|
||
|
for _, v := range vars {
|
||
|
value := os.Getenv(v)
|
||
|
if value == "" {
|
||
|
print("!!! " + fmt.Sprintf(msgEnvMissing, v) + " !!!\n\n")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
func checkAuth(name string) bool {
|
||
|
if !auth {
|
||
|
fmt.Printf("No auth - skipping portions of %v\n", name)
|
||
|
}
|
||
|
return auth
|
||
|
}
|
||
|
|
||
|
func createRandomTestRepository(owner string, autoinit bool) (*github.Repository, error) {
|
||
|
// create random repo name that does not currently exist
|
||
|
var repoName string
|
||
|
for {
|
||
|
repoName = fmt.Sprintf("test-%d", rand.Int())
|
||
|
_, resp, err := client.Repositories.Get(context.Background(), owner, repoName)
|
||
|
if err != nil {
|
||
|
if resp.StatusCode == http.StatusNotFound {
|
||
|
// found a non-existent repo, perfect
|
||
|
break
|
||
|
}
|
||
|
|
||
|
return nil, err
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// create the repository
|
||
|
repo, _, err := client.Repositories.Create(context.Background(), "", &github.Repository{Name: github.String(repoName), AutoInit: github.Bool(autoinit)})
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return repo, nil
|
||
|
}
|