public void CannotParseContainerWithNullName() { var validObjectJson = @"[ { ""hash"": ""d41d8cd98f00b204e9800998ecf8427e"", ""last_modified"": ""2014-03-07T21:31:31.588170"", ""bytes"": 0, ""name"": ""BLAH"", ""content_type"": ""application/octet-stream"" }]"; var converter = new StorageContainerPayloadConverter(new ServiceLocator()); var headers = new HttpHeadersAbstraction { { "X-Container-Bytes-Used", "12345" }, { "X-Container-Object-Count", "1" } }; converter.Convert(null, headers, validObjectJson); }
public void CannotParseAccountWithBadPayload() { var accountName = "1234567890"; var invalidSingleContainerJson = @"[ { ""bytes"": 7, ""name"": ""TestContainer"" }]"; var headers = new HttpHeadersAbstraction { { "X-Account-Bytes-Used", "12345" }, { "X-Account-Object-Count", "1" }, { "X-Account-Container-Count", "1" } }; var converter = new StorageAccountPayloadConverter(new ServiceLocator()); converter.Convert(accountName, headers, invalidSingleContainerJson); }
public void CanParseContainerWithValidJsonPayloadWithNestedFoldersAndObjects() { var containerName = "TestContainer"; var validObjectJson = @"[ { ""hash"": ""d41d8cd98f00b204e9800998ecf8427e"", ""last_modified"": ""2014-03-27T20:57:11.150910"", ""bytes"": 0, ""name"": ""a/"", ""content_type"": ""application/octet-stream"" }, { ""hash"": ""d41d8cd98f00b204e9800998ecf8427e"", ""last_modified"": ""2014-03-27T20:57:36.676350"", ""bytes"": 0, ""name"": ""a/b/"", ""content_type"": ""application/octet-stream"" }, { ""hash"": ""437b930db84b8079c2dd804a71936b5f"", ""last_modified"": ""2014-03-27T20:58:36.676620"", ""bytes"": 9, ""name"": ""a/b/b"", ""content_type"": ""text/plain;charset=UTF-8"" }, { ""hash"": ""437b930db84b8079c2dd804a71936b5f"", ""last_modified"": ""2014-03-27T20:58:43.935540"", ""bytes"": 9, ""name"": ""a/b/c"", ""content_type"": ""text/plain;charset=UTF-8"" }, { ""hash"": ""437b930db84b8079c2dd804a71936b5f"", ""last_modified"": ""2014-03-27T20:58:54.142580"", ""bytes"": 9, ""name"": ""a/b/c/object3"", ""content_type"": ""text/plain;charset=UTF-8"" }, { ""hash"": ""437b930db84b8079c2dd804a71936b5f"", ""last_modified"": ""2014-03-27T20:58:25.771530"", ""bytes"": 9, ""name"": ""a/object2"", ""content_type"": ""text/plain;charset=UTF-8"" }, { ""hash"": ""d41d8cd98f00b204e9800998ecf8427e"", ""last_modified"": ""2014-03-27T20:57:47.122360"", ""bytes"": 0, ""name"": ""a/x/"", ""content_type"": ""application/octet-stream"" }, { ""hash"": ""437b930db84b8079c2dd804a71936b5f"", ""last_modified"": ""2014-03-27T20:58:15.696360"", ""bytes"": 9, ""name"": ""object1"", ""content_type"": ""text/plain;charset=UTF-8"" } ]"; var converter = new StorageContainerPayloadConverter(new ServiceLocator()); var headers = new HttpHeadersAbstraction { { "X-Container-Bytes-Used", "45" }, { "X-Container-Object-Count", "8" } }; var container = converter.Convert(containerName, headers, validObjectJson); Assert.IsNotNull(container); Assert.AreEqual(containerName, container.Name); Assert.AreEqual(45, container.TotalBytesUsed); Assert.AreEqual(8, container.TotalObjectCount); Assert.AreEqual(8, container.Objects.ToList().Count()); Assert.IsTrue(container.Objects.ToList().Any(o => o.Name == "object1")); var folders = container.Folders.ToList(); Assert.AreEqual(1, folders.Count()); var aNode = folders.First(); Assert.AreEqual("a", aNode.Name); Assert.AreEqual(2, aNode.Folders.Count); Assert.AreEqual(1, aNode.Objects.Count); Assert.IsTrue(aNode.Objects.Any(f => f.FullName == "a/object2")); var xNode = aNode.Folders.First(f => f.Name == "x"); Assert.AreEqual(0, xNode.Folders.Count); Assert.AreEqual(0, xNode.Objects.Count); var bNode = aNode.Folders.First(f => f.Name == "b"); Assert.AreEqual(1, bNode.Folders.Count); Assert.AreEqual(2, bNode.Objects.Count); Assert.IsTrue(bNode.Folders.Any(f => f.Name == "c")); Assert.IsTrue(bNode.Objects.Any(f => f.FullName == "a/b/c")); Assert.IsTrue(bNode.Objects.Any(f => f.FullName == "a/b/b")); var cNode = bNode.Folders.First(f => f.Name == "c"); Assert.AreEqual(0, cNode.Folders.Count); Assert.AreEqual(1, cNode.Objects.Count); Assert.IsTrue(cNode.Objects.Any(f => f.FullName == "a/b/c/object3")); }