Fix unit tests

This commit is contained in:
Frederik Carlier
2017-05-12 23:22:18 +02:00
parent cb4f33136c
commit cb919a8bdc
3 changed files with 13 additions and 50 deletions

View File

@@ -32,7 +32,7 @@ namespace Packaging.Targets.Tests.IO
}
using (FileStream stream = File.Open(@"XZOutputStreamTests_CompressTextTest.txt.xz", FileMode.Open, FileAccess.Read, FileShare.None))
using (XZOutputStream decompressedStream = new XZOutputStream(stream))
using (XZInputStream decompressedStream = new XZInputStream(stream))
{
byte[] data = new byte[1024];
int read = decompressedStream.Read(data, 0, data.Length);

View File

@@ -240,8 +240,12 @@ namespace Packaging.Targets.Tests.Rpm
{
var originalPackage = RpmPackageReader.Read(stream);
using (var payloadStream = RpmPayloadReader.GetDecompressedPayloadStream(originalPackage))
using (var compressedPayloadStream = RpmPayloadReader.GetDecompressedPayloadStream(originalPackage))
using (var payloadStream = new MemoryStream())
{
compressedPayloadStream.CopyTo(payloadStream);
payloadStream.Position = 0;
RpmPackageCreator creator = new RpmPackageCreator(new PlistFileAnalyzer());
creator.CreatePackage(
payloadStream,
@@ -266,59 +270,13 @@ namespace Packaging.Targets.Tests.Rpm
}
}
[Fact]
public void CreateDemoPackageTest()
{
// To install:
// sudo rpm -i dotnet-demo.rpm
// To uninstall:
// sudo rpm -e dotnet-demo-0.1-0.1.x86_64
var krgen = PgpSigner.GenerateKeyRingGenerator("dotnet", "dotnet");
var secretKeyRing = krgen.GenerateSecretKeyRing();
var privateKey = secretKeyRing.GetSecretKey().ExtractPrivateKey("dotnet".ToCharArray());
var publicKey = secretKeyRing.GetPublicKey();
using (var targetStream = File.Open(@"dotnet-demo.rpm", FileMode.Create, FileAccess.ReadWrite, FileShare.None))
using (var cpioStream = File.Open("dotnet-demo.cpio", FileMode.Create, FileAccess.ReadWrite, FileShare.None))
{
// Create the CPIO file which will (hopefully) contain all the required files
CpioFileCreator cpioCreator = new CpioFileCreator();
cpioCreator.FromDirectory(
@"C:\Users\frede\Source\Repos\dotnet-packaging\demo\bin\Debug\netcoreapp1.0\rhel.7-x64\publish\",
"./usr/share/quamotion",
cpioStream);
cpioStream.Position = 0;
RpmPackageCreator rpmCreator = new RpmPackageCreator();
rpmCreator.CreatePackage(
cpioStream,
"dotnet-demo",
"0.1",
"x86_64",
"0.1",
null,
privateKey,
targetStream);
}
using (var targetStream = File.Open(@"dotnet-demo.rpm", FileMode.Open, FileAccess.Read, FileShare.None))
{
var package = RpmPackageReader.Read(targetStream);
var metadata = new RpmMetadata(package);
var signature = new RpmSignature(package);
Assert.True(signature.Verify(publicKey));
}
}
private void AssertTagEqual(SignatureTag tag, RpmPackage originalPackage, RpmPackage package)
{
var originalRecord = originalPackage.Signature.Records[tag];
var record = package.Signature.Records[tag];
// Don't have the private key
if (tag != SignatureTag.RPMSIGTAG_PGP && tag != SignatureTag.RPMSIGTAG_RSA)
if (tag != SignatureTag.RPMSIGTAG_PGP && tag != SignatureTag.RPMSIGTAG_RSA && tag != SignatureTag.RPMTAG_HEADERSIGNATURES)
{
Assert.Equal(originalRecord.Value, record.Value);
}

View File

@@ -202,7 +202,12 @@ namespace Packaging.Targets.Rpm
/// </returns>
public bool Verify(Stream pgpPublicKeyStream)
{
throw new NotImplementedException();
var bundle = new PgpPublicKeyRingBundle(PgpUtilities.GetDecoderStream(pgpPublicKeyStream));
var publicKeyRings = bundle.GetKeyRings().OfType<PgpPublicKeyRing>();
var publicKeys = publicKeyRings.SelectMany(x => x.GetPublicKeys().OfType<PgpPublicKey>());
var publicKey = publicKeys.FirstOrDefault();
return Verify(publicKey);
}
public bool Verify(PgpPublicKey pgpPublicKey)