public void Update() { testContext.CreateAdminTeam(); var page = CreateNestedPage(); PageController pc = new PageController(); var children = pc.GetChildren(page.Id, testContext.adminUsers[0]); var subPage = children.Item1[0]; var children2 = pc.GetChildren(subPage.Id, testContext.adminUsers[0]); var att = children2.Item2[0]; // Admin Team Owner var updates = new Dictionary <string, string>(); updates.Add("name", "better"); controller.Update(att.Id, updates, testContext.adminUsers[0]); var fetchedPage = controller.Get(att.Id, testContext.adminUsers[0]); Assert.Equal("better", fetchedPage.Name); // Admin Team Writer updates = new Dictionary <string, string>(); updates.Add("name", "even writer"); controller.Update(att.Id, updates, testContext.adminUsers[1]); fetchedPage = controller.Get(att.Id, testContext.adminUsers[1]); Assert.Equal("even writer", fetchedPage.Name); // Admin Team Nested reader team writer updates = new Dictionary <string, string>(); updates.Add("name", "even reader"); controller.Update(att.Id, updates, testContext.adminUsers[2]); fetchedPage = controller.Get(att.Id, testContext.adminUsers[2]); Assert.Equal("even reader", fetchedPage.Name); // Admin Team Writer updates = new Dictionary <string, string>(); updates.Add("name", "even writer"); controller.Update(att.Id, updates, testContext.adminUsers[3]); fetchedPage = controller.Get(att.Id, testContext.adminUsers[3]); Assert.Equal("even writer", fetchedPage.Name); // Admin Team Nested reader team writer updates = new Dictionary <string, string>(); updates.Add("name", "even reader"); controller.Update(att.Id, updates, testContext.adminUsers[4]); fetchedPage = controller.Get(att.Id, testContext.adminUsers[4]); Assert.Equal("even reader", fetchedPage.Name); // Team Owner reader team writer updates = new Dictionary <string, string>(); updates.Add("name", "even owner"); controller.Update(att.Id, updates, testContext.users[0]); fetchedPage = controller.Get(att.Id, testContext.users[0]); Assert.Equal("even owner", fetchedPage.Name); // Team Writer updates = new Dictionary <string, string>(); updates.Add("name", "even writer"); controller.Update(att.Id, updates, testContext.users[10]); fetchedPage = controller.Get(att.Id, testContext.users[10]); Assert.Equal("even writer", fetchedPage.Name); // Team Reader updates = new Dictionary <string, string>(); updates.Add("name", "even reader "); Assert.Throws <NotAuthorized>(() => controller.Update(att.Id, updates, testContext.users[11])); fetchedPage = controller.Get(att.Id, testContext.users[11]); Assert.Equal("even writer", fetchedPage.Name); // Nested Team Writer writer updates = new Dictionary <string, string>(); updates.Add("name", "even nested writer"); controller.Update(att.Id, updates, testContext.users[3]); fetchedPage = controller.Get(att.Id, testContext.users[3]); Assert.Equal("even nested writer", fetchedPage.Name); // Nested Team Writer reader updates = new Dictionary <string, string>(); updates.Add("name", "even nested reader"); controller.Update(att.Id, updates, testContext.users[4]); fetchedPage = controller.Get(att.Id, testContext.users[4]); Assert.Equal("even nested reader", fetchedPage.Name); // Nested Team Reader writer updates = new Dictionary <string, string>(); updates.Add("name", "even nested reader writer"); Assert.Throws <NotAuthorized>(() => controller.Update(att.Id, updates, testContext.users[5])); fetchedPage = controller.Get(att.Id, testContext.users[5]); Assert.Equal("even nested reader", fetchedPage.Name); // Nested Team reader reader updates = new Dictionary <string, string>(); updates.Add("name", "even nested reader reader"); Assert.Throws <NotAuthorized>(() => controller.Update(att.Id, updates, testContext.users[6])); fetchedPage = controller.Get(att.Id, testContext.users[6]); Assert.Equal("even nested reader", fetchedPage.Name); updates = new Dictionary <string, string>(); updates.Add("name", "no permissions"); Assert.Throws <NotAuthorized>(() => controller.Update(att.Id, updates, testContext.users[7])); Assert.Throws <NotAuthorized>(() => fetchedPage = controller.Get(att.Id, testContext.users[7])); Assert.Equal("even nested reader", fetchedPage.Name); // Check the owner updates = new Dictionary <string, string>(); updates.Add("name", "owner for the win"); controller.Update(att.Id, updates, testContext.users[25]); fetchedPage = controller.Get(att.Id, testContext.users[25]); Assert.Equal("owner for the win", fetchedPage.Name); }