From cb919a8bdcc3c886dcde950efd22bcd277b3789a Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Fri, 12 May 2017 23:22:18 +0200 Subject: [PATCH] Fix unit tests --- .../IO/XZOutputStreamTests.cs | 2 +- .../Rpm/RpmPackageCreatorTests.cs | 54 +++---------------- Packaging.Targets/Rpm/RpmSignature.cs | 7 ++- 3 files changed, 13 insertions(+), 50 deletions(-) diff --git a/Packaging.Targets.Tests/IO/XZOutputStreamTests.cs b/Packaging.Targets.Tests/IO/XZOutputStreamTests.cs index a0bd54e..7ea56e5 100644 --- a/Packaging.Targets.Tests/IO/XZOutputStreamTests.cs +++ b/Packaging.Targets.Tests/IO/XZOutputStreamTests.cs @@ -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); diff --git a/Packaging.Targets.Tests/Rpm/RpmPackageCreatorTests.cs b/Packaging.Targets.Tests/Rpm/RpmPackageCreatorTests.cs index a467823..e528862 100644 --- a/Packaging.Targets.Tests/Rpm/RpmPackageCreatorTests.cs +++ b/Packaging.Targets.Tests/Rpm/RpmPackageCreatorTests.cs @@ -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); } diff --git a/Packaging.Targets/Rpm/RpmSignature.cs b/Packaging.Targets/Rpm/RpmSignature.cs index 8cf9c53..fd86375 100644 --- a/Packaging.Targets/Rpm/RpmSignature.cs +++ b/Packaging.Targets/Rpm/RpmSignature.cs @@ -202,7 +202,12 @@ namespace Packaging.Targets.Rpm /// public bool Verify(Stream pgpPublicKeyStream) { - throw new NotImplementedException(); + var bundle = new PgpPublicKeyRingBundle(PgpUtilities.GetDecoderStream(pgpPublicKeyStream)); + var publicKeyRings = bundle.GetKeyRings().OfType(); + var publicKeys = publicKeyRings.SelectMany(x => x.GetPublicKeys().OfType()); + var publicKey = publicKeys.FirstOrDefault(); + + return Verify(publicKey); } public bool Verify(PgpPublicKey pgpPublicKey)