2015-12-30 11:19:42 +00:00
|
|
|
|
using System.IO;
|
|
|
|
|
|
using SharpCompress.Common.Rar.Headers;
|
|
|
|
|
|
using SharpCompress.IO;
|
2016-09-27 10:14:08 +01:00
|
|
|
|
using SharpCompress.Readers;
|
2015-12-30 11:19:42 +00:00
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
|
|
namespace SharpCompress.Test.Rar
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Summary description for RarFactoryReaderTest
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class RarHeaderFactoryTest : TestBase
|
|
|
|
|
|
{
|
2017-05-19 10:52:49 +01:00
|
|
|
|
private readonly RarHeaderFactory rarHeaderFactory;
|
2015-12-30 11:19:42 +00:00
|
|
|
|
|
|
|
|
|
|
public RarHeaderFactoryTest()
|
|
|
|
|
|
{
|
|
|
|
|
|
ResetScratch();
|
2016-09-27 10:14:08 +01:00
|
|
|
|
rarHeaderFactory = new RarHeaderFactory(StreamingMode.Seekable, new ReaderOptions()
|
|
|
|
|
|
{
|
2016-09-29 11:10:11 +01:00
|
|
|
|
LeaveStreamOpen = true
|
2016-09-27 10:14:08 +01:00
|
|
|
|
});
|
2015-12-30 11:19:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
public void ReadHeaders_RecognizeEncryptedFlag()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
ReadEncryptedFlag("Rar.Encrypted_filesAndHeader.rar", true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ReadEncryptedFlag(string testArchive, bool isEncrypted)
|
|
|
|
|
|
{
|
|
|
|
|
|
using (var stream = GetReaderStream(testArchive))
|
2016-09-27 10:14:08 +01:00
|
|
|
|
{
|
2015-12-30 11:19:42 +00:00
|
|
|
|
foreach (var header in rarHeaderFactory.ReadHeaders(stream))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (header.HeaderType == HeaderType.ArchiveHeader)
|
|
|
|
|
|
{
|
|
|
|
|
|
Assert.Equal(isEncrypted, rarHeaderFactory.IsEncrypted);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2016-09-27 10:14:08 +01:00
|
|
|
|
}
|
2015-12-30 11:19:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
public void ReadHeaders_RecognizeNoEncryptedFlag()
|
|
|
|
|
|
{
|
|
|
|
|
|
ReadEncryptedFlag("Rar.rar", false);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private FileStream GetReaderStream(string testArchive)
|
|
|
|
|
|
{
|
|
|
|
|
|
return new FileStream(Path.Combine(TEST_ARCHIVES_PATH, testArchive),
|
|
|
|
|
|
FileMode.Open);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|