/// <summary> /// Ensure that when manually specifying permission modes we get /// the expected values back out for all combinations /// </summary> public virtual void TestConvertingPermissions() { for (short s = 0; s <= 0x3ff; s++) { Assert.Equal(s, new FsPermission(s).ToShort()); } short s_1 = 0; foreach (bool sb in new bool[] { false, true }) { foreach (FsAction u in FsAction.Values()) { foreach (FsAction g in FsAction.Values()) { foreach (FsAction o in FsAction.Values()) { // Cover constructor with sticky bit. FsPermission f = new FsPermission(u, g, o, sb); Assert.Equal(s_1, f.ToShort()); FsPermission f2 = new FsPermission(f); Assert.Equal(s_1, f2.ToShort()); s_1++; } } } } }
public virtual void TestFsAction() { //implies foreach (FsAction a in FsAction.Values()) { Assert.True(FsAction.All.Implies(a)); } foreach (FsAction a_1 in FsAction.Values()) { Assert.True(a_1 == FsAction.None ? FsAction.None.Implies(a_1) : !FsAction.None.Implies(a_1)); } foreach (FsAction a_2 in FsAction.Values()) { Assert.True(a_2 == FsAction.ReadExecute || a_2 == FsAction.Read || a_2 == FsAction.Execute || a_2 == FsAction.None ? FsAction.ReadExecute.Implies (a_2) : !FsAction.ReadExecute.Implies(a_2)); } //masks Assert.Equal(FsAction.Execute, FsAction.Execute.And(FsAction.ReadExecute )); Assert.Equal(FsAction.Read, FsAction.Read.And(FsAction.ReadExecute )); Assert.Equal(FsAction.None, FsAction.Write.And(FsAction.ReadExecute )); Assert.Equal(FsAction.Read, FsAction.ReadExecute.And(FsAction. ReadWrite)); Assert.Equal(FsAction.None, FsAction.ReadExecute.And(FsAction. Write)); Assert.Equal(FsAction.WriteExecute, FsAction.All.And(FsAction. WriteExecute)); }
/// <exception cref="System.IO.IOException"/> public virtual void TestUMaskParser() { Configuration conf = new Configuration(); // Ensure that we get the right octal values back for all legal values foreach (FsAction u in FsAction.Values()) { foreach (FsAction g in FsAction.Values()) { foreach (FsAction o in FsAction.Values()) { FsPermission f = new FsPermission(u, g, o); string asOctal = string.Format("%1$03o", f.ToShort()); conf.Set(FsPermission.UmaskLabel, asOctal); FsPermission fromConf = FsPermission.GetUMask(conf); Assert.Equal(f, fromConf); } } } }
public virtual void TestSpecialBitsToString() { foreach (bool sb in new bool[] { false, true }) { foreach (FsAction u in FsAction.Values()) { foreach (FsAction g in FsAction.Values()) { foreach (FsAction o in FsAction.Values()) { FsPermission f = new FsPermission(u, g, o, sb); string fString = f.ToString(); // Check that sticky bit is represented correctly. if (f.GetStickyBit() && f.GetOtherAction().Implies(FsAction.Execute)) { Assert.Equal('t', fString[8]); } else { if (f.GetStickyBit() && !f.GetOtherAction().Implies(FsAction.Execute)) { Assert.Equal('T', fString[8]); } else { if (!f.GetStickyBit() && f.GetOtherAction().Implies(FsAction.Execute)) { Assert.Equal('x', fString[8]); } else { Assert.Equal('-', fString[8]); } } } Assert.Equal(9, fString.Length); } } } } }