gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright 2025 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package asymkey
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/models/unittest"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/require"
  9. )
  10. func TestUserHasPubkeys(t *testing.T) {
  11. assert.NoError(t, unittest.PrepareTestDatabase())
  12. test := func(t *testing.T, userID int64, expectedHasGPG, expectedHasSSH bool) {
  13. ctx := t.Context()
  14. hasGPG, err := userHasPubkeysGPG(ctx, userID)
  15. require.NoError(t, err)
  16. hasSSH, err := userHasPubkeysSSH(ctx, userID)
  17. require.NoError(t, err)
  18. hasPubkeys, err := userHasPubkeys(ctx, userID)
  19. require.NoError(t, err)
  20. assert.Equal(t, expectedHasGPG, hasGPG)
  21. assert.Equal(t, expectedHasSSH, hasSSH)
  22. assert.Equal(t, expectedHasGPG || expectedHasSSH, hasPubkeys)
  23. }
  24. t.Run("AllowUserWithGPGKey", func(t *testing.T) {
  25. test(t, 36, true, false) // has gpg
  26. })
  27. t.Run("AllowUserWithSSHKey", func(t *testing.T) {
  28. test(t, 2, false, true) // has ssh
  29. })
  30. t.Run("DenyUserWithNoKeys", func(t *testing.T) {
  31. test(t, 1, false, false) // no pubkey
  32. })
  33. }