mirror of
https://github.com/go-gitea/gitea
synced 2024-08-26 17:23:57 +02:00
To make it more flexible and support SSH signature. The existing tests are not changed, there are also tests covering `parseTagRef` which also calls `parsePayloadSignature` now. Add some new tests to `Test_parseTagData`
98 lines
2.6 KiB
Go
98 lines
2.6 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package git
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_parseTagData(t *testing.T) {
|
|
testData := []struct {
|
|
data string
|
|
expected Tag
|
|
}{
|
|
{
|
|
data: `object 3b114ab800c6432ad42387ccf6bc8d4388a2885a
|
|
type commit
|
|
tag 1.22.0
|
|
tagger Lucas Michot <lucas@semalead.com> 1484491741 +0100
|
|
|
|
`,
|
|
expected: Tag{
|
|
Name: "",
|
|
ID: Sha1ObjectFormat.EmptyObjectID(),
|
|
Object: MustIDFromString("3b114ab800c6432ad42387ccf6bc8d4388a2885a"),
|
|
Type: "commit",
|
|
Tagger: &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484491741, 0).In(time.FixedZone("", 3600))},
|
|
Message: "",
|
|
Signature: nil,
|
|
},
|
|
},
|
|
{
|
|
data: `object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc
|
|
type commit
|
|
tag 1.22.1
|
|
tagger Lucas Michot <lucas@semalead.com> 1484553735 +0100
|
|
|
|
test message
|
|
o
|
|
|
|
ono`,
|
|
expected: Tag{
|
|
Name: "",
|
|
ID: Sha1ObjectFormat.EmptyObjectID(),
|
|
Object: MustIDFromString("7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc"),
|
|
Type: "commit",
|
|
Tagger: &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484553735, 0).In(time.FixedZone("", 3600))},
|
|
Message: "test message\no\n\nono",
|
|
Signature: nil,
|
|
},
|
|
},
|
|
{
|
|
data: `object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfaaa
|
|
type commit
|
|
tag v0
|
|
tagger dummy user <dummy-email@example.com> 1484491741 +0100
|
|
|
|
dummy message
|
|
-----BEGIN SSH SIGNATURE-----
|
|
dummy signature
|
|
-----END SSH SIGNATURE-----
|
|
`,
|
|
expected: Tag{
|
|
Name: "",
|
|
ID: Sha1ObjectFormat.EmptyObjectID(),
|
|
Object: MustIDFromString("7cdf42c0b1cc763ab7e4c33c47a24e27c66bfaaa"),
|
|
Type: "commit",
|
|
Tagger: &Signature{Name: "dummy user", Email: "dummy-email@example.com", When: time.Unix(1484491741, 0).In(time.FixedZone("", 3600))},
|
|
Message: "dummy message",
|
|
Signature: &CommitSignature{
|
|
Signature: `-----BEGIN SSH SIGNATURE-----
|
|
dummy signature
|
|
-----END SSH SIGNATURE-----`,
|
|
Payload: `object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfaaa
|
|
type commit
|
|
tag v0
|
|
tagger dummy user <dummy-email@example.com> 1484491741 +0100
|
|
|
|
dummy message`,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, test := range testData {
|
|
tag, err := parseTagData(Sha1ObjectFormat, []byte(test.data))
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, test.expected, *tag)
|
|
}
|
|
|
|
tag, err := parseTagData(Sha1ObjectFormat, []byte("type commit\n\nfoo\n-----BEGIN SSH SIGNATURE-----\ncorrupted..."))
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "foo\n-----BEGIN SSH SIGNATURE-----\ncorrupted...", tag.Message)
|
|
}
|