mirror of
https://github.com/TwiN/gatus.git
synced 2026-02-16 10:56:11 +00:00
test: Fix Gitea error handling in tests (#1508)
* Initial plan * Fix Gitea test failures by handling authentication and network errors Co-authored-by: TwiN <15699766+TwiN@users.noreply.github.com> * Refactor: Extract error checking logic into helper function Co-authored-by: TwiN <15699766+TwiN@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: TwiN <15699766+TwiN@users.noreply.github.com>
This commit is contained in:
@@ -12,6 +12,18 @@ import (
|
|||||||
"github.com/TwiN/gatus/v5/test"
|
"github.com/TwiN/gatus/v5/test"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// isIgnorableTestError checks if an error is expected during testing when making API calls with dummy credentials
|
||||||
|
func isIgnorableTestError(err error) bool {
|
||||||
|
if err == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
errStr := err.Error()
|
||||||
|
return strings.Contains(errStr, "user does not exist") ||
|
||||||
|
strings.Contains(errStr, "no such host") ||
|
||||||
|
strings.Contains(errStr, "invalid username, password or token") ||
|
||||||
|
strings.Contains(errStr, "dial tcp")
|
||||||
|
}
|
||||||
|
|
||||||
func TestAlertProvider_Validate(t *testing.T) {
|
func TestAlertProvider_Validate(t *testing.T) {
|
||||||
scenarios := []struct {
|
scenarios := []struct {
|
||||||
Name string
|
Name string
|
||||||
@@ -50,7 +62,7 @@ func TestAlertProvider_Validate(t *testing.T) {
|
|||||||
if scenario.ExpectedError && err == nil {
|
if scenario.ExpectedError && err == nil {
|
||||||
t.Error("expected error, got none")
|
t.Error("expected error, got none")
|
||||||
}
|
}
|
||||||
if !scenario.ExpectedError && err != nil && !strings.Contains(err.Error(), "user does not exist") && !strings.Contains(err.Error(), "no such host") {
|
if !scenario.ExpectedError && err != nil && !isIgnorableTestError(err) {
|
||||||
t.Error("expected no error, got", err.Error())
|
t.Error("expected no error, got", err.Error())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -87,7 +99,7 @@ func TestAlertProvider_Send(t *testing.T) {
|
|||||||
for _, scenario := range scenarios {
|
for _, scenario := range scenarios {
|
||||||
t.Run(scenario.Name, func(t *testing.T) {
|
t.Run(scenario.Name, func(t *testing.T) {
|
||||||
cfg, err := scenario.Provider.GetConfig("", &scenario.Alert)
|
cfg, err := scenario.Provider.GetConfig("", &scenario.Alert)
|
||||||
if err != nil && !strings.Contains(err.Error(), "user does not exist") && !strings.Contains(err.Error(), "no such host") {
|
if err != nil && !isIgnorableTestError(err) {
|
||||||
t.Error("expected no error, got", err.Error())
|
t.Error("expected no error, got", err.Error())
|
||||||
}
|
}
|
||||||
cfg.giteaClient, _ = gitea.NewClient("https://gitea.com")
|
cfg.giteaClient, _ = gitea.NewClient("https://gitea.com")
|
||||||
@@ -203,7 +215,7 @@ func TestAlertProvider_GetConfig(t *testing.T) {
|
|||||||
for _, scenario := range scenarios {
|
for _, scenario := range scenarios {
|
||||||
t.Run(scenario.Name, func(t *testing.T) {
|
t.Run(scenario.Name, func(t *testing.T) {
|
||||||
got, err := scenario.Provider.GetConfig("", &scenario.InputAlert)
|
got, err := scenario.Provider.GetConfig("", &scenario.InputAlert)
|
||||||
if err != nil && !strings.Contains(err.Error(), "user does not exist") && !strings.Contains(err.Error(), "no such host") {
|
if err != nil && !isIgnorableTestError(err) {
|
||||||
t.Fatalf("unexpected error: %s", err)
|
t.Fatalf("unexpected error: %s", err)
|
||||||
}
|
}
|
||||||
if got.RepositoryURL != scenario.ExpectedOutput.RepositoryURL {
|
if got.RepositoryURL != scenario.ExpectedOutput.RepositoryURL {
|
||||||
@@ -221,7 +233,7 @@ func TestAlertProvider_GetConfig(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Test ValidateOverrides as well, since it really just calls GetConfig
|
// Test ValidateOverrides as well, since it really just calls GetConfig
|
||||||
if err = scenario.Provider.ValidateOverrides("", &scenario.InputAlert); err != nil && !strings.Contains(err.Error(), "user does not exist") {
|
if err = scenario.Provider.ValidateOverrides("", &scenario.InputAlert); err != nil && !isIgnorableTestError(err) {
|
||||||
t.Errorf("unexpected error: %s", err)
|
t.Errorf("unexpected error: %s", err)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user