krz/gitbay
A CLI-first git forge.
clone: git clone https://gitbay.org/krz/gitbay.git
repo-descriptions: internal/sig/commit_test.go · raw
1package sig
2
3import (
4 "bytes"
5 "testing"
6)
7
8var signedCommit = []byte("tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904\n" +
9 "parent 0123456789012345678901234567890123456789\n" +
10 "author T <a@example.test> 1700000000 +0000\n" +
11 "committer T <c@example.test> 1700000000 +0000\n" +
12 "gpgsig -----BEGIN PGP SIGNATURE-----\n" +
13 " \n" +
14 " base64base64\n" +
15 " =abcd\n" +
16 " -----END PGP SIGNATURE-----\n" +
17 "\n" +
18 "subject line\n\nbody\n")
19
20func TestParseCommitSigned(t *testing.T) {
21 c, err := ParseCommit(signedCommit)
22 if err != nil {
23 t.Fatal(err)
24 }
25 wantPayload := []byte("tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904\n" +
26 "parent 0123456789012345678901234567890123456789\n" +
27 "author T <a@example.test> 1700000000 +0000\n" +
28 "committer T <c@example.test> 1700000000 +0000\n" +
29 "\n" +
30 "subject line\n\nbody\n")
31 if !bytes.Equal(c.Payload, wantPayload) {
32 t.Errorf("payload not byte-exact:\ngot %q\nwant %q", c.Payload, wantPayload)
33 }
34 wantSig := "-----BEGIN PGP SIGNATURE-----\n\nbase64base64\n=abcd\n-----END PGP SIGNATURE-----"
35 if string(c.Signature) != wantSig {
36 t.Errorf("signature reconstruction:\ngot %q\nwant %q", c.Signature, wantSig)
37 }
38 if c.AuthorEmail != "a@example.test" || c.CommitterEmail != "c@example.test" ||
39 c.Subject != "subject line" || c.AuthorUnix != 1700000000 {
40 t.Errorf("fields: %+v", c)
41 }
42 if KindOf(c.Signature) != SigOpenPGP {
43 t.Errorf("kind = %v", KindOf(c.Signature))
44 }
45}
46
47func TestParseCommitUnsigned(t *testing.T) {
48 raw := []byte("tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904\n" +
49 "author T <a@example.test> 1700000000 +0000\n" +
50 "committer T <a@example.test> 1700000000 +0000\n" +
51 "\nsubject\n")
52 c, err := ParseCommit(raw)
53 if err != nil {
54 t.Fatal(err)
55 }
56 if c.Signature != nil {
57 t.Errorf("unsigned commit has signature %q", c.Signature)
58 }
59 if !bytes.Equal(c.Payload, raw) {
60 t.Errorf("unsigned payload must equal raw object")
61 }
62}