gitea源码

ephemeral_actions_runner_deletion_test.go 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Copyright 2025 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "testing"
  6. actions_model "code.gitea.io/gitea/models/actions"
  7. "code.gitea.io/gitea/models/unittest"
  8. user_model "code.gitea.io/gitea/models/user"
  9. "code.gitea.io/gitea/modules/util"
  10. repo_service "code.gitea.io/gitea/services/repository"
  11. user_service "code.gitea.io/gitea/services/user"
  12. "code.gitea.io/gitea/tests"
  13. "github.com/stretchr/testify/assert"
  14. )
  15. func TestEphemeralActionsRunnerDeletion(t *testing.T) {
  16. t.Run("ByTaskCompletion", testEphemeralActionsRunnerDeletionByTaskCompletion)
  17. t.Run("ByRepository", testEphemeralActionsRunnerDeletionByRepository)
  18. t.Run("ByUser", testEphemeralActionsRunnerDeletionByUser)
  19. }
  20. // Test that the ephemeral runner is deleted when the task is finished
  21. func testEphemeralActionsRunnerDeletionByTaskCompletion(t *testing.T) {
  22. defer tests.PrepareTestEnv(t)()
  23. _, err := actions_model.GetRunnerByID(t.Context(), 34350)
  24. assert.NoError(t, err)
  25. task := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 52})
  26. assert.Equal(t, actions_model.StatusRunning, task.Status)
  27. task.Status = actions_model.StatusSuccess
  28. err = actions_model.UpdateTask(t.Context(), task, "status")
  29. assert.NoError(t, err)
  30. _, err = actions_model.GetRunnerByID(t.Context(), 34350)
  31. assert.ErrorIs(t, err, util.ErrNotExist)
  32. }
  33. func testEphemeralActionsRunnerDeletionByRepository(t *testing.T) {
  34. defer tests.PrepareTestEnv(t)()
  35. _, err := actions_model.GetRunnerByID(t.Context(), 34350)
  36. assert.NoError(t, err)
  37. task := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 52})
  38. assert.Equal(t, actions_model.StatusRunning, task.Status)
  39. err = repo_service.DeleteRepositoryDirectly(t.Context(), task.RepoID, true)
  40. assert.NoError(t, err)
  41. _, err = actions_model.GetRunnerByID(t.Context(), 34350)
  42. assert.ErrorIs(t, err, util.ErrNotExist)
  43. }
  44. // Test that the ephemeral runner is deleted when a user is deleted
  45. func testEphemeralActionsRunnerDeletionByUser(t *testing.T) {
  46. defer tests.PrepareTestEnv(t)()
  47. _, err := actions_model.GetRunnerByID(t.Context(), 34350)
  48. assert.NoError(t, err)
  49. task := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 52})
  50. assert.Equal(t, actions_model.StatusRunning, task.Status)
  51. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
  52. err = user_service.DeleteUser(t.Context(), user, true)
  53. assert.NoError(t, err)
  54. _, err = actions_model.GetRunnerByID(t.Context(), 34350)
  55. assert.ErrorIs(t, err, util.ErrNotExist)
  56. }