diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/integration/api_actions_artifact_v4_test.go | 20 | ||||
-rw-r--r-- | tests/integration/api_twofa_test.go | 2 | ||||
-rw-r--r-- | tests/integration/pull_status_test.go | 75 |
3 files changed, 96 insertions, 1 deletions
diff --git a/tests/integration/api_actions_artifact_v4_test.go b/tests/integration/api_actions_artifact_v4_test.go index b6dfa6e799..3db8bbb82e 100644 --- a/tests/integration/api_actions_artifact_v4_test.go +++ b/tests/integration/api_actions_artifact_v4_test.go @@ -557,6 +557,26 @@ func TestActionsArtifactV4Delete(t *testing.T) { var deleteResp actions.DeleteArtifactResponse protojson.Unmarshal(resp.Body.Bytes(), &deleteResp) assert.True(t, deleteResp.Ok) + + // confirm artifact is no longer accessible by GetSignedArtifactURL + req = NewRequestWithBody(t, "POST", "/twirp/github.actions.results.api.v1.ArtifactService/GetSignedArtifactURL", toProtoJSON(&actions.GetSignedArtifactURLRequest{ + Name: "artifact-v4-download", + WorkflowRunBackendId: "792", + WorkflowJobRunBackendId: "193", + })). + AddTokenAuth(token) + _ = MakeRequest(t, req, http.StatusNotFound) + + // confirm artifact is no longer enumerateable by ListArtifacts and returns length == 0 without error + req = NewRequestWithBody(t, "POST", "/twirp/github.actions.results.api.v1.ArtifactService/ListArtifacts", toProtoJSON(&actions.ListArtifactsRequest{ + NameFilter: wrapperspb.String("artifact-v4-download"), + WorkflowRunBackendId: "792", + WorkflowJobRunBackendId: "193", + })).AddTokenAuth(token) + resp = MakeRequest(t, req, http.StatusOK) + var listResp actions.ListArtifactsResponse + protojson.Unmarshal(resp.Body.Bytes(), &listResp) + assert.Empty(t, listResp.Artifacts) } func TestActionsArtifactV4DeletePublicApi(t *testing.T) { diff --git a/tests/integration/api_twofa_test.go b/tests/integration/api_twofa_test.go index b8052c0812..938feba61a 100644 --- a/tests/integration/api_twofa_test.go +++ b/tests/integration/api_twofa_test.go @@ -94,7 +94,7 @@ func TestBasicAuthWithWebAuthn(t *testing.T) { } var userParsed userResponse DecodeJSON(t, resp, &userParsed) - assert.Equal(t, "Basic authorization is not allowed while webAuthn enrolled", userParsed.Message) + assert.Equal(t, "basic authorization is not allowed while WebAuthn enrolled", userParsed.Message) // user32 has webauthn enrolled, he can't request git protocol with basic auth req = NewRequest(t, "GET", "/user2/repo1/info/refs") diff --git a/tests/integration/pull_status_test.go b/tests/integration/pull_status_test.go index 63ffe94320..4d43847f1b 100644 --- a/tests/integration/pull_status_test.go +++ b/tests/integration/pull_status_test.go @@ -13,9 +13,13 @@ import ( auth_model "code.gitea.io/gitea/models/auth" git_model "code.gitea.io/gitea/models/git" + "code.gitea.io/gitea/models/issues" repo_model "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/models/unittest" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" + "code.gitea.io/gitea/modules/test" + "code.gitea.io/gitea/services/pull" "github.com/stretchr/testify/assert" ) @@ -165,3 +169,74 @@ func TestPullCreate_EmptyChangesWithSameCommits(t *testing.T) { assert.Contains(t, text, "This branch is already included in the target branch. There is nothing to merge.") }) } + +func TestPullStatusDelayCheck(t *testing.T) { + onGiteaRun(t, func(t *testing.T, u *url.URL) { + defer test.MockVariableValue(&setting.Repository.PullRequest.DelayCheckForInactiveDays, 1)() + defer test.MockVariableValue(&pull.AddPullRequestToCheckQueue)() + + session := loginUser(t, "user2") + + run := func(t *testing.T, fn func(*testing.T)) (issue3 *issues.Issue, checkedPrID int64) { + pull.AddPullRequestToCheckQueue = func(prID int64) { + checkedPrID = prID + } + fn(t) + issue3 = unittest.AssertExistsAndLoadBean(t, &issues.Issue{RepoID: 1, Index: 3}) + _ = issue3.LoadPullRequest(t.Context()) + return issue3, checkedPrID + } + + assertReloadingInterval := func(t *testing.T, interval string) { + req := NewRequest(t, "GET", "/user2/repo1/pulls/3") + resp := session.MakeRequest(t, req, http.StatusOK) + attr := "data-pull-merge-box-reloading-interval" + if interval == "" { + assert.NotContains(t, resp.Body.String(), attr) + } else { + assert.Contains(t, resp.Body.String(), fmt.Sprintf(`%s="%v"`, attr, interval)) + } + } + + // PR issue3 is merageable at the beginning + issue3, checkedPrID := run(t, func(t *testing.T) {}) + assert.Equal(t, issues.PullRequestStatusMergeable, issue3.PullRequest.Status) + assert.Zero(t, checkedPrID) + assertReloadingInterval(t, "") // the PR is mergeable, so no need to reload the merge box + + // setting.IsProd = false // it would cause data-race because the queue handlers might be running and reading its value + // assertReloadingInterval(t, "1") // make sure dev mode always do merge box reloading, to make sure the UI logic won't break + // setting.IsProd = true + + // when base branch changes, PR status should be updated, but it is inactive for long time, so no real check + issue3, checkedPrID = run(t, func(t *testing.T) { + testEditFile(t, session, "user2", "repo1", "master", "README.md", "new content 1") + }) + assert.Equal(t, issues.PullRequestStatusChecking, issue3.PullRequest.Status) + assert.Zero(t, checkedPrID) + assertReloadingInterval(t, "2000") // the PR status is "checking", so try to reload the merge box + + // view a PR with status=checking, it starts the real check + issue3, checkedPrID = run(t, func(t *testing.T) { + req := NewRequest(t, "GET", "/user2/repo1/pulls/3") + session.MakeRequest(t, req, http.StatusOK) + }) + assert.Equal(t, issues.PullRequestStatusChecking, issue3.PullRequest.Status) + assert.Equal(t, issue3.PullRequest.ID, checkedPrID) + + // when base branch changes, still so no real check + issue3, checkedPrID = run(t, func(t *testing.T) { + testEditFile(t, session, "user2", "repo1", "master", "README.md", "new content 2") + }) + assert.Equal(t, issues.PullRequestStatusChecking, issue3.PullRequest.Status) + assert.Zero(t, checkedPrID) + + // then allow to check PRs without delay, when base branch changes, the PRs will be checked + setting.Repository.PullRequest.DelayCheckForInactiveDays = -1 + issue3, checkedPrID = run(t, func(t *testing.T) { + testEditFile(t, session, "user2", "repo1", "master", "README.md", "new content 3") + }) + assert.Equal(t, issues.PullRequestStatusChecking, issue3.PullRequest.Status) + assert.Equal(t, issue3.PullRequest.ID, checkedPrID) + }) +} |