2022-12-20 15:06:44 +00:00
|
|
|
using System.IO;
|
2015-12-30 11:19:42 +00:00
|
|
|
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;
|
|
|
|
|
|
2022-12-20 15:06:44 +00:00
|
|
|
namespace SharpCompress.Test.Rar;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Summary description for RarFactoryReaderTest
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class RarHeaderFactoryTest : TestBase
|
2015-12-30 11:19:42 +00:00
|
|
|
{
|
2024-03-14 08:53:08 +00:00
|
|
|
private readonly RarHeaderFactory _rarHeaderFactory;
|
2017-12-08 12:00:29 +00:00
|
|
|
|
2022-12-20 15:20:49 +00:00
|
|
|
public RarHeaderFactoryTest() =>
|
2024-03-14 08:53:08 +00:00
|
|
|
_rarHeaderFactory = new RarHeaderFactory(
|
2022-12-20 15:06:44 +00:00
|
|
|
StreamingMode.Seekable,
|
|
|
|
|
new ReaderOptions { LeaveStreamOpen = true }
|
|
|
|
|
);
|
2015-12-30 11:19:42 +00:00
|
|
|
|
2022-12-20 15:06:44 +00:00
|
|
|
[Fact]
|
2022-12-20 15:20:49 +00:00
|
|
|
public void Rar_ReadHeaders_RecognizeEncryptedFlag() =>
|
2022-12-20 15:06:44 +00:00
|
|
|
ReadEncryptedFlag("Rar.encrypted_filesAndHeader.rar", true);
|
2015-12-30 11:19:42 +00:00
|
|
|
|
2022-12-20 15:06:44 +00:00
|
|
|
[Fact]
|
2022-12-20 15:20:49 +00:00
|
|
|
public void Rar5_ReadHeaders_RecognizeEncryptedFlag() =>
|
2022-12-20 15:06:44 +00:00
|
|
|
ReadEncryptedFlag("Rar5.encrypted_filesAndHeader.rar", true);
|
2017-12-17 08:08:02 -05:00
|
|
|
|
2022-12-20 15:06:44 +00:00
|
|
|
[Fact]
|
2022-12-20 15:20:49 +00:00
|
|
|
public void Rar_ReadHeaders_RecognizeNoEncryptedFlag() => ReadEncryptedFlag("Rar.rar", false);
|
2017-12-17 08:08:02 -05:00
|
|
|
|
2022-12-20 15:06:44 +00:00
|
|
|
[Fact]
|
2022-12-20 15:20:49 +00:00
|
|
|
public void Rar5_ReadHeaders_RecognizeNoEncryptedFlag() => ReadEncryptedFlag("Rar5.rar", false);
|
2017-12-17 08:08:02 -05:00
|
|
|
|
2022-12-20 15:06:44 +00:00
|
|
|
private void ReadEncryptedFlag(string testArchive, bool isEncrypted)
|
|
|
|
|
{
|
|
|
|
|
using var stream = new FileStream(
|
2022-12-20 15:14:22 +00:00
|
|
|
Path.Combine(TEST_ARCHIVES_PATH, testArchive),
|
|
|
|
|
FileMode.Open,
|
|
|
|
|
FileAccess.Read
|
|
|
|
|
);
|
2024-03-14 08:53:08 +00:00
|
|
|
foreach (var header in _rarHeaderFactory.ReadHeaders(stream))
|
2015-12-30 11:19:42 +00:00
|
|
|
{
|
2022-12-20 15:14:22 +00:00
|
|
|
if (header.HeaderType == HeaderType.Archive || header.HeaderType == HeaderType.Crypt)
|
2016-09-27 10:14:08 +01:00
|
|
|
{
|
2024-03-14 08:53:08 +00:00
|
|
|
Assert.Equal(isEncrypted, _rarHeaderFactory.IsEncrypted);
|
2022-12-20 15:06:44 +00:00
|
|
|
break;
|
2016-09-27 10:14:08 +01:00
|
|
|
}
|
2015-12-30 11:19:42 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|