Typo in test name caused test to not execute (#4330)

This commit is contained in:
Nikola Jokic
2025-11-27 15:31:57 +01:00
committed by GitHub
parent 9ebb97fe2e
commit 540269880f
2 changed files with 47 additions and 39 deletions
+13 -1
View File
@@ -15,10 +15,12 @@ import (
func TestGitHubConfig(t *testing.T) { func TestGitHubConfig(t *testing.T) {
t.Run("when given a valid URL", func(t *testing.T) { t.Run("when given a valid URL", func(t *testing.T) {
tests := []struct { tests := []struct {
name string
configURL string configURL string
expected *actions.GitHubConfig expected *actions.GitHubConfig
}{ }{
{ {
name: "repository URL",
configURL: "https://github.com/org/repo", configURL: "https://github.com/org/repo",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeRepository, Scope: actions.GitHubScopeRepository,
@@ -29,6 +31,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "repository URL with trailing slash",
configURL: "https://github.com/org/repo/", configURL: "https://github.com/org/repo/",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeRepository, Scope: actions.GitHubScopeRepository,
@@ -39,6 +42,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "organization URL",
configURL: "https://github.com/org", configURL: "https://github.com/org",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeOrganization, Scope: actions.GitHubScopeOrganization,
@@ -49,6 +53,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "enterprise URL",
configURL: "https://github.com/enterprises/my-enterprise", configURL: "https://github.com/enterprises/my-enterprise",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeEnterprise, Scope: actions.GitHubScopeEnterprise,
@@ -59,6 +64,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "enterprise URL with trailing slash",
configURL: "https://github.com/enterprises/my-enterprise/", configURL: "https://github.com/enterprises/my-enterprise/",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeEnterprise, Scope: actions.GitHubScopeEnterprise,
@@ -69,6 +75,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "organization URL with www",
configURL: "https://www.github.com/org", configURL: "https://www.github.com/org",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeOrganization, Scope: actions.GitHubScopeOrganization,
@@ -79,6 +86,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "organization URL with www and trailing slash",
configURL: "https://www.github.com/org/", configURL: "https://www.github.com/org/",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeOrganization, Scope: actions.GitHubScopeOrganization,
@@ -89,6 +97,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "github local URL",
configURL: "https://github.localhost/org", configURL: "https://github.localhost/org",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeOrganization, Scope: actions.GitHubScopeOrganization,
@@ -99,6 +108,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "github local org URL",
configURL: "https://my-ghes.com/org", configURL: "https://my-ghes.com/org",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeOrganization, Scope: actions.GitHubScopeOrganization,
@@ -109,6 +119,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "github local URL with trailing slash",
configURL: "https://my-ghes.com/org/", configURL: "https://my-ghes.com/org/",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeOrganization, Scope: actions.GitHubScopeOrganization,
@@ -119,6 +130,7 @@ func TestGitHubConfig(t *testing.T) {
}, },
}, },
{ {
name: "github local URL with ghe.com",
configURL: "https://my-ghes.ghe.com/org/", configURL: "https://my-ghes.ghe.com/org/",
expected: &actions.GitHubConfig{ expected: &actions.GitHubConfig{
Scope: actions.GitHubScopeOrganization, Scope: actions.GitHubScopeOrganization,
@@ -131,7 +143,7 @@ func TestGitHubConfig(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
t.Run(test.configURL, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
parsedURL, err := url.Parse(strings.Trim(test.configURL, "/")) parsedURL, err := url.Parse(strings.Trim(test.configURL, "/"))
require.NoError(t, err) require.NoError(t, err)
test.expected.ConfigURL = parsedURL test.expected.ConfigURL = parsedURL
+34 -38
View File
@@ -119,88 +119,84 @@ func TestGitHubAPIError(t *testing.T) {
}) })
} }
func ParseActionsErrorFromResponse(t *testing.T) { func TestParseActionsErrorFromResponse(t *testing.T) {
t.Run("empty content length", func(t *testing.T) { t.Run("empty content length", func(t *testing.T) {
response := &http.Response{ response := &http.Response{
ContentLength: 0, ContentLength: 0,
Header: http.Header{ Header: http.Header{},
actions.HeaderActionsActivityID: []string{"activity-id"}, StatusCode: 404,
},
StatusCode: 404,
} }
response.Header.Add(actions.HeaderActionsActivityID, "activity-id")
err := actions.ParseActionsErrorFromResponse(response) err := actions.ParseActionsErrorFromResponse(response)
require.Error(t, err) require.Error(t, err)
assert.Equal(t, err.(*actions.ActionsError).ActivityID, "activity-id") assert.Equal(t, "activity-id", err.(*actions.ActionsError).ActivityID)
assert.Equal(t, err.(*actions.ActionsError).StatusCode, 404) assert.Equal(t, 404, err.(*actions.ActionsError).StatusCode)
assert.Equal(t, err.(*actions.ActionsError).Err.Error(), "unknown exception") assert.Equal(t, "unknown exception", err.(*actions.ActionsError).Err.Error())
}) })
t.Run("contains text plain error", func(t *testing.T) { t.Run("contains text plain error", func(t *testing.T) {
errorMessage := "example error message" errorMessage := "example error message"
response := &http.Response{ response := &http.Response{
ContentLength: int64(len(errorMessage)), ContentLength: int64(len(errorMessage)),
Header: http.Header{ StatusCode: 404,
actions.HeaderActionsActivityID: []string{"activity-id"}, Header: http.Header{},
"Content-Type": []string{"text/plain"}, Body: io.NopCloser(strings.NewReader(errorMessage)),
},
StatusCode: 404,
Body: io.NopCloser(strings.NewReader(errorMessage)),
} }
response.Header.Add(actions.HeaderActionsActivityID, "activity-id")
response.Header.Add("Content-Type", "text/plain")
err := actions.ParseActionsErrorFromResponse(response) err := actions.ParseActionsErrorFromResponse(response)
require.Error(t, err) require.Error(t, err)
var actionsError *actions.ActionsError var actionsError *actions.ActionsError
assert.ErrorAs(t, err, &actionsError) require.ErrorAs(t, err, &actionsError)
assert.Equal(t, actionsError.ActivityID, "activity-id") assert.Equal(t, "activity-id", actionsError.ActivityID)
assert.Equal(t, actionsError.StatusCode, 404) assert.Equal(t, 404, actionsError.StatusCode)
assert.Equal(t, actionsError.Err.Error(), errorMessage) assert.Equal(t, errorMessage, actionsError.Err.Error())
}) })
t.Run("contains json error", func(t *testing.T) { t.Run("contains json error", func(t *testing.T) {
errorMessage := `{"typeName":"exception-name","message":"example error message"}` errorMessage := `{"typeName":"exception-name","message":"example error message"}`
response := &http.Response{ response := &http.Response{
ContentLength: int64(len(errorMessage)), ContentLength: int64(len(errorMessage)),
Header: http.Header{ Header: http.Header{},
actions.HeaderActionsActivityID: []string{"activity-id"}, StatusCode: 404,
"Content-Type": []string{"application/json"}, Body: io.NopCloser(strings.NewReader(errorMessage)),
},
StatusCode: 404,
Body: io.NopCloser(strings.NewReader(errorMessage)),
} }
response.Header.Add(actions.HeaderActionsActivityID, "activity-id")
response.Header.Add("Content-Type", "application/json")
err := actions.ParseActionsErrorFromResponse(response) err := actions.ParseActionsErrorFromResponse(response)
require.Error(t, err) require.Error(t, err)
var actionsError *actions.ActionsError var actionsError *actions.ActionsError
assert.ErrorAs(t, err, &actionsError) require.ErrorAs(t, err, &actionsError)
assert.Equal(t, actionsError.ActivityID, "activity-id") assert.Equal(t, "activity-id", actionsError.ActivityID)
assert.Equal(t, actionsError.StatusCode, 404) assert.Equal(t, 404, actionsError.StatusCode)
inner, ok := actionsError.Err.(*actions.ActionsExceptionError) inner, ok := actionsError.Err.(*actions.ActionsExceptionError)
require.True(t, ok) require.True(t, ok)
assert.Equal(t, inner.ExceptionName, "exception-name") assert.Equal(t, "exception-name", inner.ExceptionName)
assert.Equal(t, inner.Message, "example error message") assert.Equal(t, "example error message", inner.Message)
}) })
t.Run("wrapped exception error", func(t *testing.T) { t.Run("wrapped exception error", func(t *testing.T) {
errorMessage := `{"typeName":"exception-name","message":"example error message"}` errorMessage := `{"typeName":"exception-name","message":"example error message"}`
response := &http.Response{ response := &http.Response{
ContentLength: int64(len(errorMessage)), ContentLength: int64(len(errorMessage)),
Header: http.Header{ Header: http.Header{},
actions.HeaderActionsActivityID: []string{"activity-id"}, StatusCode: 404,
"Content-Type": []string{"application/json"}, Body: io.NopCloser(strings.NewReader(errorMessage)),
},
StatusCode: 404,
Body: io.NopCloser(strings.NewReader(errorMessage)),
} }
response.Header.Add(actions.HeaderActionsActivityID, "activity-id")
response.Header.Add("Content-Type", "application/json")
err := actions.ParseActionsErrorFromResponse(response) err := actions.ParseActionsErrorFromResponse(response)
require.Error(t, err) require.Error(t, err)
var actionsExceptionError *actions.ActionsExceptionError var actionsExceptionError *actions.ActionsExceptionError
assert.ErrorAs(t, err, &actionsExceptionError) require.ErrorAs(t, err, &actionsExceptionError)
assert.Equal(t, actionsExceptionError.ExceptionName, "exception-name") assert.Equal(t, "exception-name", actionsExceptionError.ExceptionName)
assert.Equal(t, actionsExceptionError.Message, "example error message") assert.Equal(t, "example error message", actionsExceptionError.Message)
}) })
} }