mirror of
https://github.com/MedzikUser/go-github-selfupdate.git
synced 2024-08-15 03:25:29 +00:00
add more test cases to check invalid GitHub Enterprise base URL
This commit is contained in:
parent
1265b4826d
commit
89582ba9d1
5 changed files with 47 additions and 16 deletions
|
@ -166,3 +166,14 @@ func TestNoReleaseFound(t *testing.T) {
|
|||
t.Fatal("Repo having no release should not be found")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDetectFromBrokenGitHubEnterpriseURL(t *testing.T) {
|
||||
up, err := NewUpdater(Config{APIToken: "hogehoge", EnterpriseBaseURL: "https://example.com"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, ok, _ := up.DetectLatest("foo/bar")
|
||||
if ok {
|
||||
t.Fatal("Invalid GitHub Enterprise base URL should raise an error")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ func (up *Updater) downloadDirectlyFromURL(assetURL string) (io.ReadCloser, erro
|
|||
func (up *Updater) UpdateTo(rel *Release, cmdPath string) error {
|
||||
src, redirectURL, err := up.api.Repositories.DownloadReleaseAsset(up.apiCtx, rel.RepoOwner, rel.RepoName, rel.AssetID)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("Failed to call GitHub Releases API for getting an asset(ID: %d) for repository '%s/%s': %s", rel.AssetID, rel.RepoOwner, rel.RepoName, err)
|
||||
}
|
||||
if redirectURL != "" {
|
||||
log.Println("Redirect URL was returned while trying to download a release asset from GitHub API. Falling back to downloading from asset URL directly:", redirectURL)
|
||||
|
|
|
@ -256,3 +256,17 @@ func TestBrokenAsset(t *testing.T) {
|
|||
t.Fatal("Unexpected error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBrokenGitHubEnterpriseURL(t *testing.T) {
|
||||
up, err := NewUpdater(Config{APIToken: "hogehoge", EnterpriseBaseURL: "https://example.com"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = up.UpdateTo(&Release{AssetURL: "https://example.com"}, "foo")
|
||||
if err == nil {
|
||||
t.Fatal("Invalid GitHub Enterprise base URL should raise an error")
|
||||
}
|
||||
if !strings.Contains(err.Error(), "Failed to call GitHub Releases API for getting an asset") {
|
||||
t.Error("Unexpected error occurred:", err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,22 +52,21 @@ func NewUpdater(config Config) (*Updater, error) {
|
|||
ctx := context.Background()
|
||||
hc := newHTTPClient(ctx, token)
|
||||
|
||||
var client *github.Client
|
||||
if config.EnterpriseBaseURL == "" {
|
||||
client = github.NewClient(hc)
|
||||
} else {
|
||||
if token == "" {
|
||||
return nil, errors.New("GitHub API token cannot be empty when releases are hosted on GitHub Enterprise instance")
|
||||
}
|
||||
u := config.EnterpriseUploadURL
|
||||
if u == "" {
|
||||
u = config.EnterpriseBaseURL
|
||||
}
|
||||
var err error
|
||||
client, err = github.NewEnterpriseClient(config.EnterpriseBaseURL, u, hc)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client := github.NewClient(hc)
|
||||
return &Updater{client, ctx, hc}, nil
|
||||
}
|
||||
|
||||
if token == "" {
|
||||
return nil, errors.New("GitHub API token cannot be empty when releases are hosted on GitHub Enterprise instance")
|
||||
}
|
||||
u := config.EnterpriseUploadURL
|
||||
if u == "" {
|
||||
u = config.EnterpriseBaseURL
|
||||
}
|
||||
client, err := github.NewEnterpriseClient(config.EnterpriseBaseURL, u, hc)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Updater{client, ctx, hc}, nil
|
||||
}
|
||||
|
|
|
@ -58,3 +58,10 @@ func TestGitHubEnterpriseClientWithoutToken(t *testing.T) {
|
|||
t.Fatal("Error should be reported because of empty token")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGitHubEnterpriseClientInvalidURL(t *testing.T) {
|
||||
_, err := NewUpdater(Config{APIToken: "hogehoge", EnterpriseBaseURL: ":this is not a URL"})
|
||||
if err == nil {
|
||||
t.Fatal("Invalid URL should raise an error")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue