AdlsDotNetSDKUnitTest/SerializationTest.cs (228 lines of code) (raw):
using Microsoft.Azure.DataLake.Store.Serialization;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace Microsoft.Azure.DataLake.Store.UnitTest
{
[TestClass]
public class SerializationTest
{
internal void VerifyFileStatus(DirectoryEntry entry, string name, int length, DirectoryEntryType type, DateTime? accessTime, DateTime? modificationTime, DateTime? expireTime, string permission, string group, string owner)
{
Assert.IsTrue(entry.Name == name);
Assert.IsTrue(entry.Type.Equals(type));
if (accessTime == null)
{
Assert.IsNull(entry.LastAccessTime);
}
else
{
Assert.IsTrue(entry.LastAccessTime.Equals(accessTime));
}
if (modificationTime == null)
{
Assert.IsNull(entry.LastModifiedTime);
}
else
{
Assert.IsTrue(entry.LastModifiedTime.Equals(modificationTime));
}
if (expireTime == null)
{
Assert.IsNull(entry.ExpiryTime);
}
else
{
Assert.IsTrue(entry.ExpiryTime.Equals(expireTime));
}
Assert.IsTrue(permission == entry.Permission);
Assert.IsTrue(group == entry.Group);
Assert.IsTrue(owner == entry.User);
}
[TestMethod]
public void TestGetFileStatusSerialization0()
{
string fileStatusOutput = "{\"FileStatus\":{\"length\":323,\"pathSuffix\":\"Test02\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"modificationTime\":1528320362596,\"msExpirationTime\":1528320362391,\"replication\":0,\"permission\":\"770\",\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(fileStatusOutput)), jsonSettings);
Assert.IsTrue(entry != null);
VerifyFileStatus(entry.FileStatus, "Test02", 323, DirectoryEntryType.DIRECTORY, null, DirectoryEntry.GetDateTimeFromServerTime(1528320362596), DirectoryEntry.GetDateTimeFromServerTime(1528320362391), "770", "ownergroup1", "owner1");
}
[TestMethod]
public void TestGetFileStatusSerialization1()
{
string fileStatusOutput = "{\"FileStatus\":{\"length\":23,\"pathSuffix\":\"Test01\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"modificationTime\":1528320362596,\"msExpirationTime\":1528320362391,\"replication\":0,\"permission\":\"770\",\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true,\"attributes\":[\"Link\"],\"newperm\":\"sdsds\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(fileStatusOutput)), jsonSettings);
Assert.IsTrue(entry != null);
VerifyFileStatus(entry.FileStatus, "Test01", 23, DirectoryEntryType.DIRECTORY, null, DirectoryEntry.GetDateTimeFromServerTime(1528320362596), DirectoryEntry.GetDateTimeFromServerTime(1528320362391), "770", "ownergroup1", "owner1");
}
[TestMethod]
public void TestGetFileStatusSerialization2()
{
string fileStatusOutput = "{\"FileStatus\":{\"pathSuffix\":\"Test01\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"modificationTime\":1528320362596,\"replication\":0,\"permission\":\"770\",\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true,\"attributes\":[\"Link\"],\"newperm\":\"sdsds\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(fileStatusOutput)), jsonSettings);
Assert.IsTrue(entry != null);
VerifyFileStatus(entry.FileStatus, "Test01", 0, DirectoryEntryType.DIRECTORY, null, DirectoryEntry.GetDateTimeFromServerTime(1528320362596), null, "770", "ownergroup1", "owner1");
}
[TestMethod]
public void TestGetFileStatusSerialization3()
{
string fileStatusOutput = "{\"FileStatus\":{\"length\":23,\"type\":\"DIRECTORY\",\"blockSize\":0,\"modificationTime\":1528320362596,\"replication\":0,\"permission\":\"770\",\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true,\"attributes\":[\"Link\"],\"newperm\":\"sdsds\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(fileStatusOutput)), jsonSettings);
Assert.IsTrue(entry != null);
VerifyFileStatus(entry.FileStatus, null, 23, DirectoryEntryType.DIRECTORY, null, DirectoryEntry.GetDateTimeFromServerTime(1528320362596), null, "770", "ownergroup1", "owner1");
}
[TestMethod]
public void TestGetFileStatusSerialization4()
{
string fileStatusOutput = "{\"FileStatus\":{\"length\":23,\"type\":\"DIRECTORY\",\"blockSize\":0,\"modificationTime\":1528320362596,\"replication\":0,\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true,\"attributes\":[\"Link\"],\"newperm\":\"sdsds\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(fileStatusOutput)), jsonSettings);
Assert.IsTrue(entry != null);
VerifyFileStatus(entry.FileStatus, null, 23, DirectoryEntryType.DIRECTORY, null, DirectoryEntry.GetDateTimeFromServerTime(1528320362596), null, null, "ownergroup1", "owner1");
}
[TestMethod]
public void TestGetFileStatusSerialization5()
{
string fileStatusOutput = "{\"FileStatus\":{\"length\":23,\"type\":\"DIRECTORY\",\"blockSize\":0,\"replication\":0,\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true,\"attributes\":[\"Link\"],\"newperm\":\"sdsds\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(fileStatusOutput)), jsonSettings);
Assert.IsTrue(entry != null);
VerifyFileStatus(entry.FileStatus, null, 23, DirectoryEntryType.DIRECTORY, null, null, null, null, "ownergroup1", "owner1");
}
[TestMethod]
public void TestGetFileStatusSerialization6()
{
string fileStatusOutput = "{\"FileStatus\":{\"type\":\"DIRECTORY\",\"blockSize\":0,\"accessTime\":1528320290048,\"modificationTime\":1528320362596,\"replication\":0,\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true,\"attributes\":[\"Link\"],\"newperm\":\"sdsds\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(fileStatusOutput)), jsonSettings);
Assert.IsTrue(entry != null);
VerifyFileStatus(entry.FileStatus, null, 0, DirectoryEntryType.DIRECTORY, DirectoryEntry.GetDateTimeFromServerTime(1528320290048), DirectoryEntry.GetDateTimeFromServerTime(1528320362596), null, null, "ownergroup1", "owner1");
}
[TestMethod]
public void TestListFileStatusSerialization1()
{
string liststatusOutput = "{\"FileStatuses\":{\"FileStatus\":[{\"length\":0,\"pathSuffix\":\"Test01\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"accessTime\":1528320290048,\"modificationTime\":1528320362596,\"msExpirationTime\":1528320362391,\"replication\":0,\"permission\":\"770\",\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true},{\"length\":0,\"pathSuffix\":\"Test02\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"accessTime\":1531515372559,\"modificationTime\":1531523888360,\"replication\":0,\"owner\":\"owner2\",\"group\":\"ownergroup2\",\"aclBit\":true,\"attributes\":[\"Link\"]}]}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryListResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(liststatusOutput)), jsonSettings);
Assert.IsNotNull(entry);
Assert.IsNotNull(entry.FileStatuses.FileStatus);
Assert.IsTrue(entry.FileStatuses.FileStatus.Count == 2);
VerifyFileStatus(entry.FileStatuses.FileStatus[0], "Test01", 0, DirectoryEntryType.DIRECTORY, DirectoryEntry.GetDateTimeFromServerTime(1528320290048), DirectoryEntry.GetDateTimeFromServerTime(1528320362596), DirectoryEntry.GetDateTimeFromServerTime(1528320362391), "770", "ownergroup1", "owner1");
VerifyFileStatus(entry.FileStatuses.FileStatus[1], "Test02", 0, DirectoryEntryType.DIRECTORY, DirectoryEntry.GetDateTimeFromServerTime(1531515372559), DirectoryEntry.GetDateTimeFromServerTime(1531523888360), null, null, "ownergroup2", "owner2");
}
[TestMethod]
public void TestListFileStatusSerialization2()
{
string liststatusOutput = "{\"FileStatuses\":{\"FileStatus\":[{\"length\":0,\"pathSuffix\":\"Test01\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"accessTime\":1528320290048,\"modificationTime\":1528320362596,\"msExpirationTime\":1528320362391,\"replication\":0,\"permission\":\"770\",\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true},{\"length\":0,\"pathSuffix\":\"Test02\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"accessTime\":1531515372559,\"modificationTime\":1531523888360,\"replication\":0,\"owner\":\"owner2\",\"group\":\"ownergroup2\",\"aclBit\":true,\"attributes\":[\"Link\"]},{\"length\":0,\"pathSuffix\":\"Test03\",\"type\":\"FILE\",\"blockSize\":0,\"accessTime\":1531515372559,\"replication\":0,\"owner\":\"owner3\",\"aclBit\":true}]}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryListResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(liststatusOutput)), jsonSettings);
Assert.IsNotNull(entry);
Assert.IsNotNull(entry.FileStatuses.FileStatus);
Assert.IsTrue(entry.FileStatuses.FileStatus.Count == 3);
VerifyFileStatus(entry.FileStatuses.FileStatus[0], "Test01", 0, DirectoryEntryType.DIRECTORY, DirectoryEntry.GetDateTimeFromServerTime(1528320290048), DirectoryEntry.GetDateTimeFromServerTime(1528320362596), DirectoryEntry.GetDateTimeFromServerTime(1528320362391), "770", "ownergroup1", "owner1");
VerifyFileStatus(entry.FileStatuses.FileStatus[1], "Test02", 0, DirectoryEntryType.DIRECTORY, DirectoryEntry.GetDateTimeFromServerTime(1531515372559), DirectoryEntry.GetDateTimeFromServerTime(1531523888360), null, null, "ownergroup2", "owner2");
VerifyFileStatus(entry.FileStatuses.FileStatus[2], "Test03", 0, DirectoryEntryType.FILE, DirectoryEntry.GetDateTimeFromServerTime(1531515372559), null, null, null, null, "owner3");
}
[TestMethod]
public void TestListFileStatusSerialization3()
{
string liststatusOutput = "{\"FileStatuses\":{\"FileStatus\":[{\"length\":0,\"pathSuffix\":\"Test01\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"accessTime\":-922337203685477,\"modificationTime\":-922337203685477,\"msExpirationTime\":1528320362391,\"replication\":0,\"permission\":\"770\",\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true}," +
"{\"length\":0,\"pathSuffix\":\"Test02\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"accessTime\":1531515372559,\"modificationTime\":1531523888360,\"replication\":0,\"owner\":\"owner2\",\"group\":\"ownergroup2\",\"aclBit\":true,\"attributes\":[\"Link\"]}]}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryListResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(liststatusOutput)), jsonSettings);
Assert.IsNotNull(entry);
Assert.IsNotNull(entry.FileStatuses.FileStatus);
Assert.IsTrue(entry.FileStatuses.FileStatus.Count == 2);
VerifyFileStatus(entry.FileStatuses.FileStatus[0], "Test01", 0, DirectoryEntryType.DIRECTORY, null, null, DirectoryEntry.GetDateTimeFromServerTime(1528320362391), "770", "ownergroup1", "owner1");
VerifyFileStatus(entry.FileStatuses.FileStatus[1], "Test02", 0, DirectoryEntryType.DIRECTORY, DirectoryEntry.GetDateTimeFromServerTime(1531515372559), DirectoryEntry.GetDateTimeFromServerTime(1531523888360), null, null, "ownergroup2", "owner2");
}
[TestMethod]
public void TestTrashEnumerateSerialization1()
{
string trashOutput = "{\"trashDir\":{\"trashDirEntry\":[{\"type\":\"FILE\",\"creationTime\":1548266625223,\"originalPath\":\"adl://test.azuredatalake.com/Testf1c36522-02a1-4fae-86e7-72eb396e6e05/file_qapQg9Z1E1ZIGGP7.txt_file_3f4KjaewFTgnePx0.txt\",\"trashDirPath\":\"02b3f334-a6af-47f4-80ca-acff0464f324\"},{\"type\":\"FILE\",\"creationTime\":1548266623692,\"originalPath\":\"adl://test.azuredatalake.com/Testf1c36522-02a1-4fae-86e7-72eb396e6e05/file_qapQg9Z1E1ZIGGP7.txt_file_DRuXVefrpukWAuIs.txt\",\"trashDirPath\":\"adl://test.azuredatalake.com/$temp/trash/131926752000000000/bn6sch104331623/deleted_feace1a1-ce0f-4576-82da-a2427aaf35b3\"}],\"nextListAfter\":\"something\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<TrashStatusResult>(new MemoryStream(Encoding.UTF8.GetBytes(trashOutput)), jsonSettings);
Assert.IsTrue(entry.TrashStatusRes.NumSearched == 0);
Assert.IsTrue(!string.IsNullOrEmpty(entry.TrashStatusRes.NextListAfter));
}
[TestMethod]
public void TestTrashEnumerateSerialization2()
{
string trashOutput = "{\"trashDir\":{\"trashDirEntry\":[{\"type\":\"FILE\",\"creationTime\":1548266625223,\"originalPath\":\"adl://test.azuredatalake.com/Testf1c36522-02a1-4fae-86e7-72eb396e6e05/file_qapQg9Z1E1ZIGGP7.txt_file_3f4KjaewFTgnePx0.txt\",\"trashDirPath\":\"02b3f334-a6af-47f4-80ca-acff0464f324\"}]}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<TrashStatusResult>(new MemoryStream(Encoding.UTF8.GetBytes(trashOutput)), jsonSettings);
Assert.IsTrue(entry.TrashStatusRes.NumSearched == 0);
Assert.IsTrue(string.IsNullOrEmpty(entry.TrashStatusRes.NextListAfter));
}
[TestMethod]
public void TestTrashEnumerateSerialization3()
{
string trashOutput = "{\"trashDir\":{\"trashDirEntry\":[{\"type\":\"FILE\",\"creationTime\":1548266625223,\"originalPath\":\"adl://test.azuredatalake.com/Testf1c36522-02a1-4fae-86e7-72eb396e6e05/file_qapQg9Z1E1ZIGGP7.txt_file_3f4KjaewFTgnePx0.txt\",\"trashDirPath\":\"02b3f334-a6af-47f4-80ca-acff0464f324\"},{\"type\":\"FILE\",\"creationTime\":1548266623692,\"originalPath\":\"adl://test.azuredatalake.com/Testf1c36522-02a1-4fae-86e7-72eb396e6e05/file_qapQg9Z1E1ZIGGP7.txt_file_DRuXVefrpukWAuIs.txt\"}],\"numSearched\":\"23\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<TrashStatusResult>(new MemoryStream(Encoding.UTF8.GetBytes(trashOutput)), jsonSettings);
Assert.IsTrue(entry.TrashStatusRes.NumSearched == 23);
Assert.IsTrue(string.IsNullOrEmpty(entry.TrashStatusRes.NextListAfter));
}
[TestMethod]
public void TestTrashEnumerateSerializationDateOverRange1()
{
long secondsSince1970 = (DateTime.MaxValue - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks / 10000;
string trashOutput = "{\"trashDir\":{\"trashDirEntry\":[{\"type\":\"FILE\",\"creationTime\":"+(secondsSince1970 + 5) +",\"originalPath\":\"adl://test.azuredatalake.com/Testf1c36522-02a1-4fae-86e7-72eb396e6e05/file_qapQg9Z1E1ZIGGP7.txt_file_3f4KjaewFTgnePx0.txt\",\"trashDirPath\":\"02b3f334-a6af-47f4-80ca-acff0464f324\"}],\"numSearched\":\"23\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<TrashStatusResult>(new MemoryStream(Encoding.UTF8.GetBytes(trashOutput)), jsonSettings);
Assert.IsTrue(entry.TrashStatusRes.NumSearched == 23);
var listEntry = (List<TrashEntry>)entry.TrashStatusRes.TrashEntries;
Assert.IsTrue(listEntry.Count == 1);
Assert.IsTrue(listEntry[0].CreationTime == new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc));
}
[TestMethod]
public void TestTrashEnumerateSerializationDateOverRange2()
{
string trashOutput = "{\"trashDir\":{\"trashDirEntry\":[{\"type\":\"FILE\",\"creationTime\":-1,\"originalPath\":\"adl://test.azuredatalake.com/Testf1c36522-02a1-4fae-86e7-72eb396e6e05/file_qapQg9Z1E1ZIGGP7.txt_file_3f4KjaewFTgnePx0.txt\",\"trashDirPath\":\"02b3f334-a6af-47f4-80ca-acff0464f324\"}],\"numSearched\":\"23\"}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<TrashStatusResult>(new MemoryStream(Encoding.UTF8.GetBytes(trashOutput)), jsonSettings);
Assert.IsTrue(entry.TrashStatusRes.NumSearched == 23);
var listEntry = (List<TrashEntry>)entry.TrashStatusRes.TrashEntries;
Assert.IsTrue(listEntry.Count == 1);
Assert.IsTrue(listEntry[0].CreationTime == null);
}
[TestMethod]
public void TestEnumerateWithLinkSerialization1()
{
string liststatusOutput = "{\"FileStatuses\":{\"FileStatus\":[{\"length\":0,\"pathSuffix\":\"Test01\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"accessTime\":1528320290048,\"modificationTime\":1528320362596,\"msExpirationTime\":1528320362391,\"replication\":0,\"permission\":\"770\",\"owner\":\"owner1\",\"group\":\"ownergroup1\",\"aclBit\":true}," +
"{\"length\":0,\"pathSuffix\":\"Test02\",\"type\":\"DIRECTORY\",\"blockSize\":0,\"accessTime\":1531515372559,\"modificationTime\":1531523888360,\"replication\":0,\"owner\":\"owner2\",\"group\":\"ownergroup2\",\"aclBit\":true,\"attributes\":[\"Link\"]}," +
"{\"length\":0,\"pathSuffix\":\"Test03\",\"type\":\"FILE\",\"blockSize\":0,\"accessTime\":1531515372559,\"replication\":0,\"owner\":\"owner3\",\"aclBit\":true}]}}";
var jsonSettings = new JsonSerializerSettings();
jsonSettings.Context = new System.Runtime.Serialization.StreamingContext(System.Runtime.Serialization.StreamingContextStates.All, "ParentDir");
var entry = JsonCustomConvert.DeserializeObject<DirectoryEntryListResult<DirectoryEntry>>(new MemoryStream(Encoding.UTF8.GetBytes(liststatusOutput)), jsonSettings);
var entryList = entry.FileStatuses.FileStatus;
Assert.IsTrue(entryList.Count == 3);
Assert.IsTrue(entryList[0].Attribute == null);
Assert.IsTrue(entryList[1].Attribute.Count == 1);
Assert.IsTrue(entryList[1].Attribute != null && entryList[1].Attribute.Any(attr => attr == DirectoryEntryAttributeType.Link));
}
}
}