Beispiel #1
0
        public void InitializeAnonymous()
        {
            var mock = new Mock <ISmugMugAPI>();

            SmugMugUri defaultNodeUri = new SmugMugUri()
            {
                Uri = "/api/v2/node/ABCDE"
            };

            User nullUser  = null;
            User validUser = new User()
            {
                Name = "Valid User", NickName = "ValidUser", Uris = new UserUris {
                    Node = defaultNodeUri
                }
            };
            User updatedUser = new User()
            {
                Name = "Valid User", NickName = "NickName"
            };

            mock.Setup(api => api.GetUser("ValidUser")).ReturnsAsync(validUser);
            mock.Setup(api => api.GetUser("InvalidUser")).ReturnsAsync(nullUser);

            mock.Setup(api => api.GetDefaultNodeID(validUser)).Returns("ABCDE");

            List <Album> validAlbums = new List <Album>()
            {
                new Album()
                {
                    Name = "ValidAlbum", ImageCount = 5
                }, new Album()
                {
                    Name = "AnotherValidAlbum", ImageCount = 10
                }, new Album()
                {
                    Name = "ThirdValidAlbum", ImageCount = 15
                }
            };
            List <Album> invalidAlbums = null;

            mock.Setup(api => api.GetAlbums(validUser, It.IsInRange <int>(0, int.MaxValue, Range.Inclusive))).ReturnsAsync(validAlbums);
            mock.Setup(api => api.GetAlbums(validUser, It.IsInRange <int>(int.MinValue, 0, Range.Inclusive))).ReturnsAsync(invalidAlbums);
            mock.Setup(api => api.GetAlbums(nullUser, It.IsInRange <int>(0, int.MaxValue, Range.Inclusive))).ReturnsAsync(invalidAlbums);
            mock.Setup(api => api.GetAlbums(nullUser, It.IsInRange <int>(int.MinValue, 0, Range.Inclusive))).ReturnsAsync(invalidAlbums);

            mock.Setup(api => api.GetFeaturedAlbums(validUser, It.IsInRange <int>(0, int.MaxValue, Range.Inclusive))).ReturnsAsync(validAlbums);
            mock.Setup(api => api.GetFeaturedAlbums(validUser, It.IsInRange <int>(int.MinValue, 0, Range.Inclusive))).ReturnsAsync(invalidAlbums);
            mock.Setup(api => api.GetFeaturedAlbums(nullUser, It.IsInRange <int>(0, int.MaxValue, Range.Inclusive))).ReturnsAsync(invalidAlbums);
            mock.Setup(api => api.GetFeaturedAlbums(nullUser, It.IsInRange <int>(int.MinValue, 0, Range.Inclusive))).ReturnsAsync(invalidAlbums);

            api = mock.Object;
        }
Beispiel #2
0
        public void InitializeAnonymous()
        {
            var mock = new Mock <ISmugMugAPI>();

            Album invalidAlbum = null;
            Album validAlbum   = new Album()
            {
                Name = "ValidAlbum", ImageCount = 5
            };

            mock.Setup(api => api.GetAlbum("ValidAlbum")).ReturnsAsync(validAlbum);
            mock.Setup(api => api.GetAlbum("InvalidAlbum")).ReturnsAsync(invalidAlbum);

            AlbumImage nullImage  = null;
            AlbumImage validImage = new AlbumImage()
            {
                FileName = "ValidFileName.jpg", Title = "Valid Image", Format = "JPG"
            };

            mock.Setup(api => api.GetAlbumImage(validAlbum, "ValidImage")).ReturnsAsync(validImage);
            mock.Setup(api => api.GetAlbumImage(validAlbum, "InvalidImage")).ReturnsAsync(nullImage);
            mock.Setup(api => api.GetAlbumImage(invalidAlbum, "ValidImage")).ReturnsAsync(nullImage);
            mock.Setup(api => api.GetAlbumImage(invalidAlbum, "InvalidImage")).ReturnsAsync(nullImage);

            List <AlbumImage> validAlbumImages = new List <AlbumImage>()
            {
                new AlbumImage()
                {
                    FileName = "ValidFileName.jpg", Title = "Valid Image", Format = "JPG"
                }, new AlbumImage()
                {
                    FileName = "AnotherValidFileName.jpg", Title = "Another Valid Image", Format = "JPG"
                }, new AlbumImage()
                {
                    FileName = "ThirdValidFileName.png", Title = "Third Valid Image", Format = "PNG"
                }
            };
            List <AlbumImage> invalidAlbumImages = null;

            mock.Setup(api => api.GetAlbumImages(validAlbum, It.IsInRange <int>(0, int.MaxValue, Range.Inclusive))).ReturnsAsync(validAlbumImages);
            mock.Setup(api => api.GetAlbumImages(validAlbum, It.IsInRange <int>(int.MinValue, 0, Range.Inclusive))).ReturnsAsync(invalidAlbumImages);
            mock.Setup(api => api.GetAlbumImages(invalidAlbum, It.IsInRange <int>(0, int.MaxValue, Range.Inclusive))).ReturnsAsync(invalidAlbumImages);
            mock.Setup(api => api.GetAlbumImages(invalidAlbum, It.IsInRange <int>(int.MinValue, 0, Range.Inclusive))).ReturnsAsync(invalidAlbumImages);
            api = mock.Object;
        }
Beispiel #3
0
        public void InitializeAnonymous()
        {
            var mock = new Mock <ISmugMugAPI>();

            UserProfile nullUserProfile  = null;
            UserProfile validUserProfile = new UserProfile()
            {
                DisplayName = "Valid User", BioText = "Valid bio"
            };
            UserProfile updatedUserProfile = new UserProfile()
            {
                DisplayName = "Valid User", BioText = "Updated bio"
            };

            User nullUser  = null;
            User validUser = new User()
            {
                Name = "Valid User", NickName = "ValidUser"
            };

            mock.Setup(api => api.GetUser("ValidUser")).ReturnsAsync(validUser);
            mock.Setup(api => api.GetUser("InvalidUser")).ReturnsAsync(nullUser);

            mock.Setup(api => api.GetUserProfile("ValidUser")).ReturnsAsync(validUserProfile);
            mock.Setup(api => api.GetUserProfile("InvalidUser")).ReturnsAsync(nullUserProfile);

            mock.Setup(api => api.GetUserProfile(validUser)).ReturnsAsync(validUserProfile);
            mock.Setup(api => api.GetUserProfile(nullUser)).ReturnsAsync(nullUserProfile);

            mock.Setup(api => api.UpdateUserProfile(validUser, It.Is <Dictionary <string, string> >(i => i.ContainsKey("BioText")))).ReturnsAsync(updatedUserProfile);
            mock.Setup(api => api.UpdateUserProfile(validUser, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).Throws <HttpRequestException>();

            mock.Setup(api => api.UpdateUserProfile(validUserProfile, It.Is <Dictionary <string, string> >(i => i.ContainsKey("BioText")))).ReturnsAsync(updatedUserProfile);
            mock.Setup(api => api.UpdateUserProfile(validUserProfile, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).Throws <HttpRequestException>();

            mock.Setup(api => api.UpdateUserProfile((User)null, It.IsAny <Dictionary <string, string> >())).Throws <ArgumentNullException>();
            mock.Setup(api => api.UpdateUserProfile(validUser, null)).Throws <ArgumentNullException>();

            api = mock.Object;
        }
Beispiel #4
0
        public void InitializeAnonymous()
        {
            var mock = new Mock <ISmugMugAPI>();

            User invalidUser = null;
            User validUser   = new User()
            {
                Name = "Valid User", NickName = "ValidUser"
            };

            mock.Setup(api => api.GetUser("ValidUser")).ReturnsAsync(validUser);
            mock.Setup(api => api.GetUser("InvalidUser")).ReturnsAsync(invalidUser);

            Folder invalidFolder = null;
            Folder validFolder   = new Folder()
            {
                Name = "ValidFolder", NodeID = "ABCDE"
            };
            Folder validFolderWithArguments = new Folder()
            {
                Name = "ValidFolder", NodeID = "ABCDE", Description = "Description"
            };
            Folder unownedFolder = new Folder()
            {
                Name = "UnownedFolder", NodeID = "ABCDE", Privacy = PrivacyType.Private
            };
            Folder updatedFolder = new Folder()
            {
                Name = "Updated folder", NodeID = "ABCDE"
            };

            mock.Setup(api => api.GetFolder("ValidUser", null)).ReturnsAsync(validFolder);
            mock.Setup(api => api.GetFolder("ValidUser", "")).ReturnsAsync(validFolder);
            mock.Setup(api => api.GetFolder("ValidUser", "ValidFolder")).ReturnsAsync(validFolder);
            mock.Setup(api => api.GetFolder("ValidUser", "InvalidFolder")).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.GetFolder("ValidUser", "UnownedFolder")).ReturnsAsync(unownedFolder);
            mock.Setup(api => api.GetFolder("InvalidUser", "ValidFolder")).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.GetFolder("InvalidUser", "InvalidFolder")).ReturnsAsync(invalidFolder);

            mock.Setup(api => api.GetFolder(validUser, null)).ReturnsAsync(validFolder);
            mock.Setup(api => api.GetFolder(validUser, "")).ReturnsAsync(validFolder);
            mock.Setup(api => api.GetFolder(validUser, "ValidFolder")).ReturnsAsync(validFolder);
            mock.Setup(api => api.GetFolder(validUser, "InvalidFolder")).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.GetFolder(invalidUser, "ValidFolder")).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.GetFolder(invalidUser, "InvalidFolder")).ReturnsAsync(invalidFolder);

            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), It.IsAny <string>(), "ValidPath", null)).ReturnsAsync(validFolder);

            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), It.IsAny <string>(), "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), It.IsAny <string>(), "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Description")))).ReturnsAsync(validFolderWithArguments);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), It.IsAny <string>(), "ValidPath", It.Is <Dictionary <string, string> >(i => !i.ContainsKey("Invalid") && !i.ContainsKey("Description")))).ReturnsAsync(validFolder);

            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), It.IsAny <string>(), "InvalidPath", null)).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), It.IsAny <string>(), "InvalidPath", It.IsNotNull <Dictionary <string, string> >())).ReturnsAsync(invalidFolder);

            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), validUser, "ValidPath", null)).ReturnsAsync(validFolder);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), validUser, "InvalidPath", null)).ReturnsAsync(invalidFolder);

            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), validUser, "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), validUser, "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Description")))).ReturnsAsync(validFolderWithArguments);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), validUser, "ValidPath", It.Is <Dictionary <string, string> >(i => !i.ContainsKey("Invalid") && !i.ContainsKey("Description")))).ReturnsAsync(validFolder);

            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), invalidUser, "ValidPath", null)).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), invalidUser, "InvalidPath", null)).ReturnsAsync(invalidFolder);

            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), validFolder, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), validFolder, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Description")))).ReturnsAsync(validFolderWithArguments);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), validFolder, It.Is <Dictionary <string, string> >(i => !i.ContainsKey("Invalid") && !i.ContainsKey("Description")))).ReturnsAsync(validFolder);

            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), invalidFolder, null)).ReturnsAsync(invalidFolder);
            mock.Setup(api => api.CreateFolder(It.IsAny <string>(), invalidFolder, null)).ReturnsAsync(invalidFolder);

            mock.Setup(api => api.DeleteFolder(invalidFolder)).Throws <ArgumentNullException>();
            mock.Setup(api => api.DeleteFolder(unownedFolder)).Throws <HttpRequestException>();

            mock.Setup(api => api.UpdateFolder(validFolder, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Name")))).ReturnsAsync(updatedFolder);
            mock.Setup(api => api.UpdateFolder(validFolder, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).Throws <HttpRequestException>();

            mock.Setup(api => api.UpdateFolder((Folder)null, It.IsAny <Dictionary <string, string> >())).Throws <ArgumentNullException>();
            mock.Setup(api => api.UpdateFolder(validFolder, null)).Throws <ArgumentNullException>();

            api = mock.Object;
        }
Beispiel #5
0
        public void InitializeAnonymous()
        {
            var mock = new Mock <ISmugMugAPI>();

            User invalidUser = null;
            User validUser   = new User()
            {
                Name = "Valid User", NickName = "ValidUser"
            };

            mock.Setup(api => api.GetUser("ValidUser")).ReturnsAsync(validUser);
            mock.Setup(api => api.GetUser("InvalidUser")).ReturnsAsync(invalidUser);

            Folder invalidFolder = null;
            Folder validFolder   = new Folder()
            {
                Name = "ValidFolder", NodeID = "ABCDE"
            };

            mock.Setup(api => api.GetFolder("ValidUser", "ValidFolder")).ReturnsAsync(validFolder);
            mock.Setup(api => api.GetFolder("ValidUser", "InvalidFolder")).ReturnsAsync(invalidFolder);

            Album invalidAlbum = null;
            Album validAlbum   = new Album()
            {
                Name = "ValidAlbum", ImageCount = 5
            };
            Album validAlbumWithArguments = new Album()
            {
                Name = "ValidAlbum", ImageCount = 5, Description = "Description"
            };
            Album unownedAlbum = new Album()
            {
                Name = "UnownedAlbum", ImageCount = 5, Privacy = PrivacyType.Private
            };
            Album updatedAlbum = new Album()
            {
                Name = "Updated album", ImageCount = 5
            };

            mock.Setup(api => api.GetAlbum("ValidAlbum")).ReturnsAsync(validAlbum);
            mock.Setup(api => api.GetAlbum("InvalidAlbum")).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.GetAlbum("UnownedAlbum")).ReturnsAsync(unownedAlbum);

            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), "ValidUser", "ValidPath", null)).ReturnsAsync(validAlbum);

            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), "ValidUser", "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), "ValidUser", "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Description")))).ReturnsAsync(validAlbumWithArguments);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), "ValidUser", "ValidPath", It.Is <Dictionary <string, string> >(i => !i.ContainsKey("Invalid") && !i.ContainsKey("Description")))).ReturnsAsync(validAlbum);

            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), "ValidUser", "InvalidPath", null)).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), "InvalidUser", "ValidPath", null)).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), "InvalidUser", "InvalidPath", null)).ReturnsAsync(invalidAlbum);

            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), validUser, "ValidPath", null)).ReturnsAsync(validAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), validUser, "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), validUser, "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Description")))).ReturnsAsync(validAlbumWithArguments);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), validUser, "ValidPath", It.Is <Dictionary <string, string> >(i => !i.ContainsKey("Invalid") && !i.ContainsKey("Description")))).ReturnsAsync(validAlbum);

            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), validUser, "InvalidPath", null)).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), invalidUser, "ValidPath", null)).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), invalidUser, "InvalidPath", null)).ReturnsAsync(invalidAlbum);

            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), validFolder, null)).ReturnsAsync(validAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), validFolder, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), validFolder, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Description")))).ReturnsAsync(validAlbumWithArguments);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), validFolder, It.Is <Dictionary <string, string> >(i => !i.ContainsKey("Invalid") && !i.ContainsKey("Description")))).ReturnsAsync(validAlbum);

            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), invalidFolder, null)).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), invalidFolder, null)).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.CreateAlbum(It.IsAny <string>(), invalidFolder, null)).ReturnsAsync(invalidAlbum);

            mock.Setup(api => api.DeleteAlbum(invalidAlbum)).Throws <ArgumentNullException>();
            mock.Setup(api => api.DeleteAlbum(unownedAlbum)).Throws <HttpRequestException>();

            mock.Setup(api => api.UpdateAlbum(validAlbum, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Name")))).ReturnsAsync(updatedAlbum);
            mock.Setup(api => api.UpdateAlbum(validAlbum, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).Throws <HttpRequestException>();

            mock.Setup(api => api.UpdateAlbum((Album)null, It.IsAny <Dictionary <string, string> >())).Throws <ArgumentNullException>();
            mock.Setup(api => api.UpdateAlbum(validAlbum, null)).Throws <ArgumentNullException>();

            api = mock.Object;
        }
Beispiel #6
0
        public void InitializeAnonymous()
        {
            var mock = new Mock <ISmugMugAPI>();

            Image invalidImage = null;
            Image validImage   = new Image()
            {
                FileName = "ValidFileName.jpg", Title = "Valid Image", Format = "JPG"
            };
            Image unownedImage = new Image()
            {
                FileName = "UnownedFileName.png", Title = "Unowned Image", Format = "PNG"
            };
            Image updatedImage = new Image()
            {
                FileName = "UnownedFileName.png", Title = "Unowned Image", Format = "PNG", Caption = "Updated caption"
            };

            ImageUpload invalidImageUpload = null;
            ImageUpload validImageUpload   = new ImageUpload()
            {
            };

            mock.Setup(api => api.GetImage("ValidImage")).ReturnsAsync(validImage);
            mock.Setup(api => api.GetImage("InvalidImage")).ReturnsAsync(invalidImage);
            mock.Setup(api => api.GetImage("UnownedImage")).ReturnsAsync(unownedImage);

            mock.Setup(api => api.UploadImage("ValidAlbum", "ValidImage")).ReturnsAsync(validImageUpload);
            mock.Setup(api => api.UploadImage("ValidAlbum", "InvalidImage")).ReturnsAsync(invalidImageUpload);

            Node invalidNode = null;
            Node validNode   = new Node()
            {
                Name = "ValidNode", NodeID = "ABCDE", HasChildren = true
            };

            mock.Setup(api => api.GetNode("ValidNode")).ReturnsAsync(validNode);
            mock.Setup(api => api.GetNode("InvalidNode")).ReturnsAsync(invalidNode);
            mock.Setup(api => api.UploadImage(validNode, "ValidImage")).ReturnsAsync(validImageUpload);
            mock.Setup(api => api.UploadImage(validNode, "InvalidImage")).ReturnsAsync(invalidImageUpload);
            mock.Setup(api => api.UploadImage(invalidNode, "ValidImage")).Throws <ArgumentNullException>();
            mock.Setup(api => api.UploadImage(invalidNode, "InvalidImage")).Throws <ArgumentNullException>();

            Album invalidAlbum = null;
            Album validAlbum   = new Album()
            {
                Name = "ValidAlbum", ImageCount = 5
            };

            mock.Setup(api => api.GetAlbum("ValidAlbum")).ReturnsAsync(validAlbum);
            mock.Setup(api => api.GetAlbum("InvalidAlbum")).ReturnsAsync(invalidAlbum);
            mock.Setup(api => api.UploadImage(validAlbum, "ValidImage")).ReturnsAsync(validImageUpload);
            mock.Setup(api => api.UploadImage(validAlbum, "InvalidImage")).ReturnsAsync(invalidImageUpload);
            mock.Setup(api => api.UploadImage(invalidAlbum, "ValidImage")).Throws <ArgumentNullException>();
            mock.Setup(api => api.UploadImage(invalidAlbum, "InvalidImage")).Throws <ArgumentNullException>();

            mock.Setup(api => api.GetImage(validImageUpload)).ReturnsAsync(validImage);
            mock.Setup(api => api.GetImage(invalidImageUpload)).Throws <ArgumentNullException>();

            mock.Setup(api => api.UpdateImage(validImage, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Caption")))).ReturnsAsync(updatedImage);
            mock.Setup(api => api.UpdateImage(validImage, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).Throws <HttpRequestException>();

            mock.Setup(api => api.UpdateImage((Image)null, It.IsAny <Dictionary <string, string> >())).Throws <ArgumentNullException>();
            mock.Setup(api => api.UpdateImage(validImage, null)).Throws <ArgumentNullException>();

            mock.Setup(api => api.DeleteImage(invalidImage)).Throws <ArgumentNullException>();
            mock.Setup(api => api.DeleteImage(unownedImage)).Throws <HttpRequestException>();

            api = mock.Object;
        }
Beispiel #7
0
        public void InitializeAnonymous()
        {
            var mock = new Mock <ISmugMugAPI>();

            Node invalidNode = null;
            Node validNode   = new Node()
            {
                Name = "ValidNode", NodeID = "ABCDE", HasChildren = true
            };
            Node validNodeNoChildren = new Node()
            {
                Name = "ValidNode", NodeID = "ABCDE", HasChildren = false
            };
            Node unownedNode = new Node()
            {
                Name = "UnownedNode", NodeID = "ABCDE", HasChildren = true
            };

            mock.Setup(api => api.GetNode("ValidNode")).ReturnsAsync(validNode);
            mock.Setup(api => api.GetNode("InvalidNode")).ReturnsAsync(invalidNode);
            mock.Setup(api => api.GetNode("UnownedNode")).ReturnsAsync(unownedNode);
            mock.Setup(api => api.GetNode("ValidNodeNoChildren")).ReturnsAsync(validNodeNoChildren);

            User nullUser  = null;
            User validUser = new User()
            {
                Name = "Valid User", NickName = "ValidUser"
            };

            mock.Setup(api => api.GetUser("ValidUser")).ReturnsAsync(validUser);
            mock.Setup(api => api.GetUser("InvalidUser")).ReturnsAsync(nullUser);

            mock.Setup(api => api.GetRootNode(validUser)).ReturnsAsync(validNode);
            mock.Setup(api => api.GetRootNode(nullUser)).ReturnsAsync(invalidNode);

            Node folderNode = new Node()
            {
                Type = NodeType.Folder, Name = "FolderNode", NodeID = "ABCDE"
            };
            Node folderNodeWithArugments = new Node()
            {
                Type = NodeType.Folder, Name = "FolderNode", NodeID = "ABCDE", Description = "Description"
            };
            Node albumNode = new Node()
            {
                Type = NodeType.Album, Name = "AlbumNode", NodeID = "ABCDE"
            };
            Node pageNode = new Node()
            {
                Type = NodeType.Page, Name = "PageNode", NodeID = "ABCDE"
            };
            Node nullNode    = null;
            Node updatedNode = new Node()
            {
                Type = NodeType.Folder, Name = "Updated node", NodeID = "ABCDE"
            };

            mock.Setup(api => api.CreateNode(NodeType.Folder, It.IsAny <string>(), "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).ReturnsAsync(nullNode);
            mock.Setup(api => api.CreateNode(NodeType.Folder, It.IsAny <string>(), "ValidPath", It.Is <Dictionary <string, string> >(i => i.ContainsKey("Description")))).ReturnsAsync(folderNodeWithArugments);
            mock.Setup(api => api.CreateNode(NodeType.Folder, It.IsAny <string>(), "ValidPath", It.Is <Dictionary <string, string> >(i => !i.ContainsKey("Invalid") && !i.ContainsKey("Description")))).ReturnsAsync(folderNode);
            mock.Setup(api => api.CreateNode(NodeType.Folder, It.IsAny <string>(), "InvalidPath", It.IsAny <Dictionary <string, string> >())).ReturnsAsync(nullNode);

            mock.Setup(api => api.CreateNode(NodeType.Album, It.IsAny <string>(), "ValidPath", null)).ReturnsAsync(albumNode);
            mock.Setup(api => api.CreateNode(NodeType.Album, It.IsAny <string>(), "InvalidPath", It.IsAny <Dictionary <string, string> >())).ReturnsAsync(nullNode);

            mock.Setup(api => api.CreateNode(NodeType.Page, It.IsAny <string>(), "ValidPath", null)).ReturnsAsync(pageNode);
            mock.Setup(api => api.CreateNode(NodeType.Page, It.IsAny <string>(), "InvalidPath", It.IsAny <Dictionary <string, string> >())).ReturnsAsync(nullNode);

            List <Node> validNodes = new List <Node>()
            {
                folderNode, albumNode, pageNode
            };
            List <Node> invalidNodes = null;

            mock.Setup(api => api.GetChildNodes(validNode, It.IsInRange <int>(0, int.MaxValue, Range.Inclusive))).ReturnsAsync(validNodes);
            mock.Setup(api => api.GetChildNodes(validNode, It.IsInRange <int>(int.MinValue, 0, Range.Inclusive))).ReturnsAsync(invalidNodes);
            mock.Setup(api => api.GetChildNodes(invalidNode, It.IsInRange <int>(0, int.MaxValue, Range.Inclusive))).ReturnsAsync(invalidNodes);
            mock.Setup(api => api.GetChildNodes(invalidNode, It.IsInRange <int>(int.MinValue, 0, Range.Inclusive))).ReturnsAsync(invalidNodes);
            mock.Setup(api => api.GetChildNodes(validNodeNoChildren, It.IsInRange <int>(int.MinValue, int.MaxValue, Range.Inclusive))).ReturnsAsync(invalidNodes);

            mock.Setup(api => api.DeleteNode(invalidNode)).Throws <ArgumentNullException>();
            mock.Setup(api => api.DeleteNode(unownedNode)).Throws <HttpRequestException>();

            mock.Setup(api => api.UpdateNode(validNode, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Name")))).ReturnsAsync(updatedNode);
            mock.Setup(api => api.UpdateNode(validNode, It.Is <Dictionary <string, string> >(i => i.ContainsKey("Invalid")))).Throws <HttpRequestException>();

            mock.Setup(api => api.UpdateNode((Node)null, It.IsAny <Dictionary <string, string> >())).Throws <ArgumentNullException>();
            mock.Setup(api => api.UpdateNode(validNode, null)).Throws <ArgumentNullException>();

            api = mock.Object;
        }