gitea源码

admin_user_must_change_password_test.go 3.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Copyright 2025 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package cmd
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/models/db"
  7. "code.gitea.io/gitea/models/unittest"
  8. user_model "code.gitea.io/gitea/models/user"
  9. "github.com/stretchr/testify/assert"
  10. "github.com/stretchr/testify/require"
  11. )
  12. func TestMustChangePassword(t *testing.T) {
  13. defer func() {
  14. require.NoError(t, db.TruncateBeans(t.Context(), &user_model.User{}))
  15. }()
  16. err := microcmdUserCreate().Run(t.Context(), []string{"create", "--username", "testuser", "--email", "testuser@gitea.local", "--random-password"})
  17. require.NoError(t, err)
  18. err = microcmdUserCreate().Run(t.Context(), []string{"create", "--username", "testuserexclude", "--email", "testuserexclude@gitea.local", "--random-password"})
  19. require.NoError(t, err)
  20. // Reset password change flag
  21. err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--all", "--unset"})
  22. require.NoError(t, err)
  23. testUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"})
  24. assert.False(t, testUser.MustChangePassword)
  25. testUserExclude := unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"})
  26. assert.False(t, testUserExclude.MustChangePassword)
  27. // Make all users change password
  28. err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--all"})
  29. require.NoError(t, err)
  30. testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"})
  31. assert.True(t, testUser.MustChangePassword)
  32. testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"})
  33. assert.True(t, testUserExclude.MustChangePassword)
  34. // Reset password change flag but exclude all tested users
  35. err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--all", "--unset", "--exclude", "testuser,testuserexclude"})
  36. require.NoError(t, err)
  37. testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"})
  38. assert.True(t, testUser.MustChangePassword)
  39. testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"})
  40. assert.True(t, testUserExclude.MustChangePassword)
  41. // Reset password change flag by listing multiple users
  42. err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--unset", "testuser", "testuserexclude"})
  43. require.NoError(t, err)
  44. testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"})
  45. assert.False(t, testUser.MustChangePassword)
  46. testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"})
  47. assert.False(t, testUserExclude.MustChangePassword)
  48. // Exclude a user from all user
  49. err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--all", "--exclude", "testuserexclude"})
  50. require.NoError(t, err)
  51. testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"})
  52. assert.True(t, testUser.MustChangePassword)
  53. testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"})
  54. assert.False(t, testUserExclude.MustChangePassword)
  55. // Unset a flag for single user
  56. err = microcmdUserMustChangePassword().Run(t.Context(), []string{"change-test", "--unset", "testuser"})
  57. require.NoError(t, err)
  58. testUser = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuser"})
  59. assert.False(t, testUser.MustChangePassword)
  60. testUserExclude = unittest.AssertExistsAndLoadBean(t, &user_model.User{LowerName: "testuserexclude"})
  61. assert.False(t, testUserExclude.MustChangePassword)
  62. }