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; }