diff options
author | Jaime merino <cobak78@gmail.com> | 2025-01-14 12:17:42 +0100 |
---|---|---|
committer | Earl Warren <earl-warren@noreply.codeberg.org> | 2025-01-14 12:17:42 +0100 |
commit | 9f842f0dec6a20edcaae47d91b78028e52ad24f3 (patch) | |
tree | eea35a92387c585adb3e4f99ee59891850871a27 /tests | |
parent | Update https://data.forgejo.org/infrastructure/issue-action action to v1.3.0 ... (diff) | |
download | forgejo-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.go | 39 | ||||
-rw-r--r-- | tests/integration/api_org_actions_test.go | 38 | ||||
-rw-r--r-- | tests/integration/api_repo_actions_test.go | 43 | ||||
-rw-r--r-- | tests/integration/api_user_actions_test.go | 38 |
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) +} |