d4824dc05b
Rebrand the built-in actions bot user from upstream Gitea naming to MokoGitea branding: - Name: gitea-actions → mokogitea-actions - FullName: Gitea Actions → MokoGitea Actions - Email: teabot@gitea.io → mokogitea-actions[bot]@mokoconsulting.tech Add backward-compatible name recognition so all three bot name variants (mokogitea-actions, gitea-actions, github-actions) with optional [bot] suffix resolve to the same system user. Add WhitelistActionsUser, MergeWhitelistActionsUser, and ForcePushAllowlistActionsUser toggles to branch protection rules, allowing CI/CD workflows to push to protected branches when explicitly enabled. Previously the actions bot (virtual user ID -2) could never be added to whitelist because updateUserWhitelist() only validates real database users. Closes #233 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
// Copyright 2025 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package user
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestSystemUser(t *testing.T) {
|
|
uid, u, err := GetPossibleUserByID(t.Context(), -1)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, int64(-1), uid)
|
|
assert.Equal(t, "Ghost", u.Name)
|
|
assert.Equal(t, "ghost", u.LowerName)
|
|
assert.True(t, u.IsGhost())
|
|
|
|
u = GetSystemUserByName("gHost")
|
|
require.NotNil(t, u)
|
|
assert.Equal(t, "Ghost", u.Name)
|
|
|
|
uid, u, err = GetPossibleUserByID(t.Context(), -2)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, int64(-2), uid)
|
|
assert.Equal(t, "mokogitea-actions", u.Name)
|
|
assert.Equal(t, "mokogitea-actions", u.LowerName)
|
|
assert.True(t, u.IsActions())
|
|
assert.True(t, u.IsGiteaActions()) // deprecated alias
|
|
|
|
// canonical name lookup
|
|
u = GetSystemUserByName("mokogitea-actions")
|
|
require.NotNil(t, u)
|
|
assert.Equal(t, "MokoGitea Actions", u.FullName)
|
|
|
|
// legacy name lookups
|
|
u = GetSystemUserByName("Gitea-actionS")
|
|
require.NotNil(t, u)
|
|
assert.Equal(t, "MokoGitea Actions", u.FullName)
|
|
|
|
u = GetSystemUserByName("github-actions")
|
|
require.NotNil(t, u)
|
|
assert.Equal(t, "MokoGitea Actions", u.FullName)
|
|
|
|
// [bot] suffix lookups
|
|
u = GetSystemUserByName("mokogitea-actions[bot]")
|
|
require.NotNil(t, u)
|
|
assert.Equal(t, "MokoGitea Actions", u.FullName)
|
|
|
|
u = GetSystemUserByName("gitea-actions[bot]")
|
|
require.NotNil(t, u)
|
|
|
|
u = GetSystemUserByName("github-actions[bot]")
|
|
require.NotNil(t, u)
|
|
|
|
// unknown name returns nil
|
|
u = GetSystemUserByName("unknown-bot")
|
|
assert.Nil(t, u)
|
|
|
|
uid, u, err = GetPossibleUserByID(t.Context(), 999999)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, int64(-1), uid)
|
|
assert.Equal(t, "Ghost", u.Name)
|
|
}
|