summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJaime merino <cobak78@gmail.com>2025-01-14 12:17:42 +0100
committerEarl Warren <earl-warren@noreply.codeberg.org>2025-01-14 12:17:42 +0100
commit9f842f0dec6a20edcaae47d91b78028e52ad24f3 (patch)
treeeea35a92387c585adb3e4f99ee59891850871a27 /tests
parentUpdate https://data.forgejo.org/infrastructure/issue-action action to v1.3.0 ... (diff)
downloadforgejo-9f842f0dec6a20edcaae47d91b78028e52ad24f3.tar.xz
forgejo-9f842f0dec6a20edcaae47d91b78028e52ad24f3.zip
Add search action jobs for API routes, repo, org and global level (#6300)
This PR wants to improve information of the tasks waiting to be executed on a global, organization, user and repository leve. The main motivation is explained here https://codeberg.org/forgejo/discussions/issues/241 ## Checklist The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org). ### Tests - I added test coverage for Go changes... - [x] in their respective `*_test.go` for unit tests. - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server. - I added test coverage for JavaScript changes... - [ ] in `web_src/js/*.test.js` if it can be unit tested. - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)). ### Documentation - [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change. - [x] I did not document these changes and I do not expect someone else to do it. ### Release notes - [ ] I do not want this change to show in the release notes. - [x] I want the title to show in the release notes with a link to this pull request. - [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title. <!--start release-notes-assistant--> ## Release notes <!--URL:https://codeberg.org/forgejo/forgejo--> - Features - [PR](https://codeberg.org/forgejo/forgejo/pulls/6300): <!--number 6300 --><!--line 0 --><!--description QWRkIHNlYXJjaCBhY3Rpb24gam9icyBmb3IgQVBJIHJvdXRlcywgcmVwbywgb3JnIGFuZCBnbG9iYWwgbGV2ZWw=-->Add search action jobs for API routes, repo, org and global level<!--description--> <!--end release-notes-assistant--> Co-authored-by: jaime merino <jaime.merino_mora@mail.schwarzª> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6300 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Jaime merino <cobak78@gmail.com> Co-committed-by: Jaime merino <cobak78@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/api_admin_actions_test.go39
-rw-r--r--tests/integration/api_org_actions_test.go38
-rw-r--r--tests/integration/api_repo_actions_test.go43
-rw-r--r--tests/integration/api_user_actions_test.go38
4 files changed, 158 insertions, 0 deletions
diff --git a/tests/integration/api_admin_actions_test.go b/tests/integration/api_admin_actions_test.go
new file mode 100644
index 0000000000..22590dc4c4
--- /dev/null
+++ b/tests/integration/api_admin_actions_test.go
@@ -0,0 +1,39 @@
+// Copyright 2024 The Forgejo Authors c/o Codeberg e.V.. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package integration
+
+import (
+ "fmt"
+ "net/http"
+ "testing"
+
+ actions_model "code.gitea.io/gitea/models/actions"
+ auth_model "code.gitea.io/gitea/models/auth"
+ "code.gitea.io/gitea/models/unittest"
+ "code.gitea.io/gitea/routers/api/v1/shared"
+ "code.gitea.io/gitea/tests"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestAPISearchActionJobs_GlobalRunner(t *testing.T) {
+ defer tests.PrepareTestEnv(t)()
+
+ job := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionRunJob{ID: 393})
+ adminUsername := "user1"
+ token := getUserToken(t, adminUsername, auth_model.AccessTokenScopeWriteAdmin)
+
+ req := NewRequest(
+ t,
+ "GET",
+ fmt.Sprintf("/api/v1/admin/runners/jobs?labels=%s", "ubuntu-latest"),
+ ).AddTokenAuth(token)
+ res := MakeRequest(t, req, http.StatusOK)
+
+ var jobs shared.RunJobList
+ DecodeJSON(t, res, &jobs)
+
+ assert.Len(t, jobs.Body, 1)
+ assert.EqualValues(t, job.ID, jobs.Body[0].ID)
+}
diff --git a/tests/integration/api_org_actions_test.go b/tests/integration/api_org_actions_test.go
new file mode 100644
index 0000000000..c8ebbdf293
--- /dev/null
+++ b/tests/integration/api_org_actions_test.go
@@ -0,0 +1,38 @@
+// Copyright 2025 The Forgejo Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package integration
+
+import (
+ "fmt"
+ "net/http"
+ "testing"
+
+ actions_model "code.gitea.io/gitea/models/actions"
+ auth_model "code.gitea.io/gitea/models/auth"
+ "code.gitea.io/gitea/models/unittest"
+ "code.gitea.io/gitea/routers/api/v1/shared"
+ "code.gitea.io/gitea/tests"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestAPISearchActionJobs_OrgRunner(t *testing.T) {
+ defer tests.PrepareTestEnv(t)()
+
+ session := loginUser(t, "user1")
+ token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteOrganization)
+
+ job := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionRunJob{ID: 395})
+
+ req := NewRequest(t, "GET",
+ fmt.Sprintf("/api/v1/orgs/org3/actions/runners/jobs?labels=%s", "fedora")).
+ AddTokenAuth(token)
+ res := MakeRequest(t, req, http.StatusOK)
+
+ var jobs shared.RunJobList
+ DecodeJSON(t, res, &jobs)
+
+ assert.Len(t, jobs.Body, 1)
+ assert.EqualValues(t, job.ID, jobs.Body[0].ID)
+}
diff --git a/tests/integration/api_repo_actions_test.go b/tests/integration/api_repo_actions_test.go
new file mode 100644
index 0000000000..9c3b6aa2b6
--- /dev/null
+++ b/tests/integration/api_repo_actions_test.go
@@ -0,0 +1,43 @@
+// Copyright 2025 The Forgejo Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package integration
+
+import (
+ "net/http"
+ "testing"
+
+ actions_model "code.gitea.io/gitea/models/actions"
+ auth_model "code.gitea.io/gitea/models/auth"
+ repo_model "code.gitea.io/gitea/models/repo"
+ "code.gitea.io/gitea/models/unittest"
+ user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/routers/api/v1/shared"
+ "code.gitea.io/gitea/tests"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestAPISearchActionJobs_RepoRunner(t *testing.T) {
+ defer tests.PrepareTestEnv(t)()
+
+ repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
+ user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
+ token := getUserToken(t, user2.LowerName, auth_model.AccessTokenScopeWriteRepository)
+ job := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionRunJob{ID: 393})
+
+ req := NewRequestf(
+ t,
+ "GET",
+ "/api/v1/repos/%s/%s/actions/runners/jobs?labels=%s",
+ repo.OwnerName, repo.Name,
+ "ubuntu-latest",
+ ).AddTokenAuth(token)
+ res := MakeRequest(t, req, http.StatusOK)
+
+ var jobs shared.RunJobList
+ DecodeJSON(t, res, &jobs)
+
+ assert.Len(t, jobs.Body, 1)
+ assert.EqualValues(t, job.ID, jobs.Body[0].ID)
+}
diff --git a/tests/integration/api_user_actions_test.go b/tests/integration/api_user_actions_test.go
new file mode 100644
index 0000000000..f9c9c1df4e
--- /dev/null
+++ b/tests/integration/api_user_actions_test.go
@@ -0,0 +1,38 @@
+// Copyright 2025 The Forgejo Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package integration
+
+import (
+ "fmt"
+ "net/http"
+ "testing"
+
+ actions_model "code.gitea.io/gitea/models/actions"
+ auth_model "code.gitea.io/gitea/models/auth"
+ "code.gitea.io/gitea/models/unittest"
+ "code.gitea.io/gitea/routers/api/v1/shared"
+ "code.gitea.io/gitea/tests"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestAPISearchActionJobs_UserRunner(t *testing.T) {
+ defer tests.PrepareTestEnv(t)()
+
+ normalUsername := "user2"
+ session := loginUser(t, normalUsername)
+ token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteUser)
+ job := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionRunJob{ID: 394})
+
+ req := NewRequest(t, "GET",
+ fmt.Sprintf("/api/v1/user/actions/runners/jobs?labels=%s", "debian-latest")).
+ AddTokenAuth(token)
+ res := MakeRequest(t, req, http.StatusOK)
+
+ var jobs shared.RunJobList
+ DecodeJSON(t, res, &jobs)
+
+ assert.Len(t, jobs.Body, 1)
+ assert.EqualValues(t, job.ID, jobs.Body[0].ID)
+}