mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-18 23:20:51 +00:00
Some checks are pending
/ release (push) Waiting to run
testing / backend-checks (push) Has been skipped
testing / frontend-checks (push) Has been skipped
testing / test-unit (push) Has been skipped
testing / test-e2e (push) Has been skipped
testing / test-mysql (push) Has been skipped
testing / test-pgsql (push) Has been skipped
testing / test-sqlite (push) Has been skipped
testing / test-remote-cacher (redis) (push) Has been skipped
testing / test-remote-cacher (valkey) (push) Has been skipped
testing / test-remote-cacher (garnet) (push) Has been skipped
testing / test-remote-cacher (redict) (push) Has been skipped
testing / security-check (push) Has been skipped
The function unittest.OverrideFixtures was changed with 7e489eed25
.
The PR with the util_misc_test was older and merged after the change to
the unittest.OverrideFixtures function. So the test was still using the
old function, which leads to a conflict / error when running tests.
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7772
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Beowulf <beowulf@beocode.eu>
Co-committed-by: Beowulf <beowulf@beocode.eu>
124 lines
4.2 KiB
Go
124 lines
4.2 KiB
Go
// Copyright 2025 The Forgejo Authors. All rights reserved.
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package templates
|
|
|
|
import (
|
|
"testing"
|
|
|
|
activities_model "forgejo.org/models/activities"
|
|
asymkey_model "forgejo.org/models/asymkey"
|
|
repo_model "forgejo.org/models/repo"
|
|
"forgejo.org/models/unittest"
|
|
user_model "forgejo.org/models/user"
|
|
"forgejo.org/modules/git"
|
|
"forgejo.org/modules/json"
|
|
"forgejo.org/modules/repository"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func pushCommits() *repository.PushCommits {
|
|
pushCommits := repository.NewPushCommits()
|
|
pushCommits.Commits = []*repository.PushCommit{
|
|
{
|
|
Sha1: "x",
|
|
CommitterEmail: "user2@example.com",
|
|
CommitterName: "User2",
|
|
AuthorEmail: "user2@example.com",
|
|
AuthorName: "User2",
|
|
Message: "invalid sha1",
|
|
},
|
|
{
|
|
Sha1: "2c54faec6c45d31c1abfaecdab471eac6633738a",
|
|
CommitterEmail: "user2@example.com",
|
|
CommitterName: "User2",
|
|
AuthorEmail: "user2@example.com",
|
|
AuthorName: "User2",
|
|
Message: "not signed commit",
|
|
},
|
|
{
|
|
Sha1: "2d491b2985a7ff848d5c02748e7ea9f9f7619f9f",
|
|
CommitterEmail: "non-existent",
|
|
CommitterName: "user2",
|
|
AuthorEmail: "non-existent",
|
|
AuthorName: "user2",
|
|
Message: "Using email that isn't known to Forgejo",
|
|
Signature: &git.ObjectSignature{
|
|
Payload: `tree 2d491b2985a7ff848d5c02748e7ea9f9f7619f9f
|
|
parent 45b03601635a1f463b81963a4022c7f87ce96ef9
|
|
author user2 <non-existent> 1699710556 +0100
|
|
committer user2 <non-existent> 1699710556 +0100
|
|
|
|
Using email that isn't known to Forgejo
|
|
`,
|
|
Signature: `-----BEGIN SSH SIGNATURE-----
|
|
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgoGSe9Zy7Ez9bSJcaTNjh/Y7p95
|
|
f5DujjqkpzFRtw6CEAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5
|
|
AAAAQIMufOuSjZeDUujrkVK4sl7ICa0WwEftas8UAYxx0Thdkiw2qWjR1U1PKfTLm16/w8
|
|
/bS1LX1lZNuzm2LR2qEgw=
|
|
-----END SSH SIGNATURE-----
|
|
`,
|
|
},
|
|
},
|
|
{
|
|
Sha1: "853694aae8816094a0d875fee7ea26278dbf5d0f",
|
|
CommitterEmail: "user2@example.com",
|
|
CommitterName: "user2",
|
|
AuthorEmail: "user2@example.com",
|
|
AuthorName: "user2",
|
|
Message: "Add content",
|
|
Signature: &git.ObjectSignature{
|
|
Payload: `tree 853694aae8816094a0d875fee7ea26278dbf5d0f
|
|
parent c2780d5c313da2a947eae22efd7dacf4213f4e7f
|
|
author user2 <user2@example.com> 1699707877 +0100
|
|
committer user2 <user2@example.com> 1699707877 +0100
|
|
|
|
Add content
|
|
`,
|
|
Signature: `-----BEGIN SSH SIGNATURE-----
|
|
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgoGSe9Zy7Ez9bSJcaTNjh/Y7p95
|
|
f5DujjqkpzFRtw6CEAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5
|
|
AAAAQBe2Fwk/FKY3SBCnG6jSYcO6ucyahp2SpQ/0P+otslzIHpWNW8cQ0fGLdhhaFynJXQ
|
|
fs9cMpZVM9BfIKNUSO8QY=
|
|
-----END SSH SIGNATURE-----
|
|
`,
|
|
},
|
|
},
|
|
}
|
|
return pushCommits
|
|
}
|
|
|
|
func TestActionContent2Commits_VerificationState(t *testing.T) {
|
|
defer unittest.OverrideFixtures("models/fixtures/TestParseCommitWithSSHSignature/")()
|
|
require.NoError(t, unittest.PrepareTestDatabase())
|
|
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
|
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2, OwnerID: user2.ID})
|
|
commits, err := json.Marshal(pushCommits())
|
|
require.NoError(t, err)
|
|
|
|
act := &activities_model.Action{
|
|
OpType: activities_model.ActionCommitRepo,
|
|
Repo: repo,
|
|
Content: string(commits),
|
|
}
|
|
push := ActionContent2Commits(t.Context(), act)
|
|
|
|
assert.Equal(t, 4, push.Len)
|
|
assert.False(t, push.Commits[0].Verification.Verified)
|
|
assert.Empty(t, push.Commits[0].Verification.TrustStatus)
|
|
assert.Equal(t, "git.error.invalid_commit_id", push.Commits[0].Verification.Reason)
|
|
|
|
assert.False(t, push.Commits[1].Verification.Verified)
|
|
assert.Empty(t, push.Commits[1].Verification.TrustStatus)
|
|
assert.Equal(t, asymkey_model.NotSigned, push.Commits[1].Verification.Reason)
|
|
|
|
assert.False(t, push.Commits[2].Verification.Verified)
|
|
assert.Empty(t, push.Commits[2].Verification.TrustStatus)
|
|
assert.Equal(t, asymkey_model.NoKeyFound, push.Commits[2].Verification.Reason)
|
|
|
|
assert.True(t, push.Commits[3].Verification.Verified)
|
|
assert.Equal(t, "user2 / SHA256:TKfwbZMR7e9OnlV2l1prfah1TXH8CmqR0PvFEXVCXA4", push.Commits[3].Verification.Reason)
|
|
assert.Equal(t, "trusted", push.Commits[3].Verification.TrustStatus)
|
|
}
|