// 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 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 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 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 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) }