public void CanAdminUsersModifyRightPermissions() { FileSystem fs = new FileSystem(); EditableFile fi = fs.createFile("hello.txt"); fs.setPermissions(fi, 700); // Make an admin user fs.addUser("test", "pass", SECURITY_LEVEL.ADMIN); Assert.AreEqual(2, fs.allUsers.Count); fs.changeUser("test", "pass"); // Can't read Assert.Throws(typeof(InvalidUserException), delegate { fi.getContents(); }); // Can't write Assert.Throws(typeof(InvalidUserException), delegate { fi.setContents("hello world!"); }); // Can't set root permissions Assert.Throws(typeof(InvalidUserException), delegate { fs.setPermissions(fi, 000); }); // Can set admin and non-admin permissions fs.setPermissions(fi, 770); Assert.AreEqual(770, fi.getPermissions()); fs.setPermissions(fi, 777); Assert.AreEqual(777, fi.getPermissions()); // Can read + write now Assert.AreEqual("", fi.getContents()); fi.setContents("hello!"); Assert.AreEqual("hello!", fi.getContents()); }
public void CanRootUsersModifyRightPermissions() { FileSystem fs = new FileSystem(); // We are root user, so we can change all permissions. // Try making something we can't read or write to. EditableFile fi = fs.createFile("hello.txt"); fs.setPermissions(fi, 000); Assert.AreEqual(000, fi.getPermissions()); // Can't read Assert.Throws(typeof(InvalidUserException), delegate { fi.getContents(); }); // Can't write Assert.Throws(typeof(InvalidUserException), delegate { fi.setContents("hello world!"); }); // Can set any permissions fs.setPermissions(fi, 700); Assert.AreEqual(700, fi.getPermissions()); fs.setPermissions(fi, 770); Assert.AreEqual(770, fi.getPermissions()); fs.setPermissions(fi, 777); Assert.AreEqual(777, fi.getPermissions()); fs.setPermissions(fi, 700); Assert.AreEqual(700, fi.getPermissions()); // Can read + write now Assert.AreEqual("", fi.getContents()); fi.setContents("hello!"); Assert.AreEqual("hello!", fi.getContents()); }