Exemple #1
0
        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);
        }