|
2 | 2 | using System.Collections.Generic; |
3 | 3 | using System.IO; |
4 | 4 | using System.Linq; |
| 5 | +using System.Text; |
5 | 6 | using LibGit2Sharp.Core; |
6 | 7 | using LibGit2Sharp.Tests.TestHelpers; |
7 | 8 | using Xunit; |
@@ -1055,5 +1056,118 @@ public void CanPrettifyAMessage() |
1055 | 1056 | Assert.Equal(expected, Commit.PrettifyMessage(input, '#')); |
1056 | 1057 | Assert.Equal(expected, Commit.PrettifyMessage(input.Replace('#', ';'), ';')); |
1057 | 1058 | } |
| 1059 | + |
| 1060 | + private readonly string signedCommit = @"tree 6b79e22d69bf46e289df0345a14ca059dfc9bdf6 |
| 1061 | +parent 34734e478d6cf50c27c9d69026d93974d052c454 |
| 1062 | +author Ben Burkert <ben@benburkert.com> 1358451456 -0800 |
| 1063 | +committer Ben Burkert <ben@benburkert.com> 1358451456 -0800 |
| 1064 | +gpgsig -----BEGIN PGP SIGNATURE----- |
| 1065 | + Version: GnuPG v1.4.12 (Darwin) |
| 1066 | + |
| 1067 | + iQIcBAABAgAGBQJQ+FMIAAoJEH+LfPdZDSs1e3EQAJMjhqjWF+WkGLHju7pTw2al |
| 1068 | + o6IoMAhv0Z/LHlWhzBd9e7JeCnanRt12bAU7yvYp9+Z+z+dbwqLwDoFp8LVuigl8 |
| 1069 | + JGLcnwiUW3rSvhjdCp9irdb4+bhKUnKUzSdsR2CK4/hC0N2i/HOvMYX+BRsvqweq |
| 1070 | + AsAkA6dAWh+gAfedrBUkCTGhlNYoetjdakWqlGL1TiKAefEZrtA1TpPkGn92vbLq |
| 1071 | + SphFRUY9hVn1ZBWrT3hEpvAIcZag3rTOiRVT1X1flj8B2vGCEr3RrcwOIZikpdaW |
| 1072 | + who/X3xh/DGbI2RbuxmmJpxxP/8dsVchRJJzBwG+yhwU/iN3MlV2c5D69tls/Dok |
| 1073 | + 6VbyU4lm/ae0y3yR83D9dUlkycOnmmlBAHKIZ9qUts9X7mWJf0+yy2QxJVpjaTGG |
| 1074 | + cmnQKKPeNIhGJk2ENnnnzjEve7L7YJQF6itbx5VCOcsGh3Ocb3YR7DMdWjt7f8pu |
| 1075 | + c6j+q1rP7EpE2afUN/geSlp5i3x8aXZPDj67jImbVCE/Q1X9voCtyzGJH7MXR0N9 |
| 1076 | + ZpRF8yzveRfMH8bwAJjSOGAFF5XkcR/RNY95o+J+QcgBLdX48h+ZdNmUf6jqlu3J |
| 1077 | + 7KmTXXQcOVpN6dD3CmRFsbjq+x6RHwa8u1iGn+oIkX908r97ckfB/kHKH7ZdXIJc |
| 1078 | + cpxtDQQMGYFpXK/71stq |
| 1079 | + =ozeK |
| 1080 | + -----END PGP SIGNATURE----- |
| 1081 | +
|
| 1082 | +a simple commit which works |
| 1083 | +"; |
| 1084 | + |
| 1085 | + private readonly string signatureData = @"-----BEGIN PGP SIGNATURE----- |
| 1086 | +Version: GnuPG v1.4.12 (Darwin) |
| 1087 | +
|
| 1088 | +iQIcBAABAgAGBQJQ+FMIAAoJEH+LfPdZDSs1e3EQAJMjhqjWF+WkGLHju7pTw2al |
| 1089 | +o6IoMAhv0Z/LHlWhzBd9e7JeCnanRt12bAU7yvYp9+Z+z+dbwqLwDoFp8LVuigl8 |
| 1090 | +JGLcnwiUW3rSvhjdCp9irdb4+bhKUnKUzSdsR2CK4/hC0N2i/HOvMYX+BRsvqweq |
| 1091 | +AsAkA6dAWh+gAfedrBUkCTGhlNYoetjdakWqlGL1TiKAefEZrtA1TpPkGn92vbLq |
| 1092 | +SphFRUY9hVn1ZBWrT3hEpvAIcZag3rTOiRVT1X1flj8B2vGCEr3RrcwOIZikpdaW |
| 1093 | +who/X3xh/DGbI2RbuxmmJpxxP/8dsVchRJJzBwG+yhwU/iN3MlV2c5D69tls/Dok |
| 1094 | +6VbyU4lm/ae0y3yR83D9dUlkycOnmmlBAHKIZ9qUts9X7mWJf0+yy2QxJVpjaTGG |
| 1095 | +cmnQKKPeNIhGJk2ENnnnzjEve7L7YJQF6itbx5VCOcsGh3Ocb3YR7DMdWjt7f8pu |
| 1096 | +c6j+q1rP7EpE2afUN/geSlp5i3x8aXZPDj67jImbVCE/Q1X9voCtyzGJH7MXR0N9 |
| 1097 | +ZpRF8yzveRfMH8bwAJjSOGAFF5XkcR/RNY95o+J+QcgBLdX48h+ZdNmUf6jqlu3J |
| 1098 | +7KmTXXQcOVpN6dD3CmRFsbjq+x6RHwa8u1iGn+oIkX908r97ckfB/kHKH7ZdXIJc |
| 1099 | +cpxtDQQMGYFpXK/71stq |
| 1100 | +=ozeK |
| 1101 | +-----END PGP SIGNATURE-----"; |
| 1102 | + |
| 1103 | + private readonly string signedData = @"tree 6b79e22d69bf46e289df0345a14ca059dfc9bdf6 |
| 1104 | +parent 34734e478d6cf50c27c9d69026d93974d052c454 |
| 1105 | +author Ben Burkert <ben@benburkert.com> 1358451456 -0800 |
| 1106 | +committer Ben Burkert <ben@benburkert.com> 1358451456 -0800 |
| 1107 | +
|
| 1108 | +a simple commit which works |
| 1109 | +"; |
| 1110 | + |
| 1111 | + |
| 1112 | + [Fact] |
| 1113 | + public void CanExtractSignatureFromCommit() |
| 1114 | + { |
| 1115 | + string repoPath = InitNewRepository(); |
| 1116 | + using (var repo = new Repository(repoPath)) |
| 1117 | + { |
| 1118 | + var odb = repo.ObjectDatabase; |
| 1119 | + var signedId = odb.Write<Commit>(Encoding.UTF8.GetBytes(signedCommit)); |
| 1120 | + |
| 1121 | + // Look up the commit to make sure we wrote something valid |
| 1122 | + var commit = repo.Lookup<Commit>(signedId); |
| 1123 | + Assert.Equal("a simple commit which works\n", commit.Message); |
| 1124 | + |
| 1125 | + var signatureInfo = Commit.ExtractSignature(repo, signedId, "gpgsig"); |
| 1126 | + Assert.Equal(signedData, signatureInfo.SignedData); |
| 1127 | + Assert.Equal(signatureData, signatureInfo.Signature); |
| 1128 | + |
| 1129 | + signatureInfo = Commit.ExtractSignature(repo, signedId); |
| 1130 | + Assert.Equal(signedData, signatureInfo.SignedData); |
| 1131 | + Assert.Equal(signatureData, signatureInfo.Signature); |
| 1132 | + } |
| 1133 | + } |
| 1134 | + |
| 1135 | + [Fact] |
| 1136 | + public void CanCreateACommitString() |
| 1137 | + { |
| 1138 | + string repoPath = SandboxStandardTestRepo(); |
| 1139 | + using (var repo = new Repository(repoPath)) |
| 1140 | + { |
| 1141 | + var tipCommit = repo.Head.Tip; |
| 1142 | + var recreatedCommit = Commit.CreateBuffer( |
| 1143 | + tipCommit.Author, |
| 1144 | + tipCommit.Committer, |
| 1145 | + tipCommit.Message, |
| 1146 | + tipCommit.Tree, |
| 1147 | + tipCommit.Parents, |
| 1148 | + false, null); |
| 1149 | + |
| 1150 | + var recreatedId = repo.ObjectDatabase.Write<Commit>(Encoding.UTF8.GetBytes(recreatedCommit)); |
| 1151 | + Assert.Equal(tipCommit.Id, recreatedId); |
| 1152 | + } |
| 1153 | + } |
| 1154 | + |
| 1155 | + [Fact] |
| 1156 | + public void CanCreateASignedCommit() |
| 1157 | + { |
| 1158 | + string repoPath = InitNewRepository(); |
| 1159 | + using (var repo = new Repository(repoPath)) |
| 1160 | + { |
| 1161 | + var odb = repo.ObjectDatabase; |
| 1162 | + var signedId = odb.Write<Commit>(Encoding.UTF8.GetBytes(signedCommit)); |
| 1163 | + var signedId2 = odb.CreateCommitWithSignature(signedData, signatureData); |
| 1164 | + |
| 1165 | + Assert.Equal(signedId, signedId2); |
| 1166 | + |
| 1167 | + var signatureInfo = Commit.ExtractSignature(repo, signedId2); |
| 1168 | + Assert.Equal(signedData, signatureInfo.SignedData); |
| 1169 | + Assert.Equal(signatureData, signatureInfo.Signature); |
| 1170 | + } |
| 1171 | + } |
1058 | 1172 | } |
1059 | 1173 | } |
0 commit comments