public void DenyExcesiveDiskUsage()
        {
            // Arrange
            Prison.Init();
            Prison prison = new Prison();

            prison.Tag = "uhtst";

            PrisonRules prisonRules = new PrisonRules();

            prisonRules.CellType       = CellType.Disk;
            prisonRules.DiskQuotaBytes = 50 * 1024 * 1024;
            prisonRules.PrisonHomePath = @"C:\Workspace\dea_security\PrisonHome";

            prison.Lockdown(prisonRules);

            // Act
            string exe = Utilities.CreateExeForPrison(
                @"
for (int size = 1; size < 100; size++)
{{
    byte[] content = new byte[1024 * 1024];

    File.AppendAllText(Guid.NewGuid().ToString(""N""), ASCIIEncoding.ASCII.GetString(content));
}}", prison);

            Process process = prison.Execute(exe);

            process.WaitForExit();

            // Assert
            Assert.AreNotEqual(0, process.ExitCode);
        }
Exemple #2
0
        public void AllowAccessInHomeDir()
        {
            // Arrange
            Prison.Init();
            Prison prison = new Prison();

            prison.Tag = "uhtst";

            PrisonRules prisonRules = new PrisonRules();

            prisonRules.CellType       = CellType.Filesystem;
            prisonRules.PrisonHomePath = @"C:\Workspace\dea_security\PrisonHome";

            prison.Lockdown(prisonRules);

            // Act
            string exe = Utilities.CreateExeForPrison(
                @"
File.WriteAllText(Guid.NewGuid().ToString(""N""), Guid.NewGuid().ToString());
", prison);

            Process process = prison.Execute(exe);

            process.WaitForExit();

            // Assert
            Assert.AreEqual(0, process.ExitCode);
        }
        public void PrisonInitFilesystemTest()
        {
            using (ShimsContext.Create())
            {
                PrisonTestsHelper.InitFilesystemRuleFakes();

                Prison prison = new Prison();
                prison.Tag = "uhtst";

                Prison.Init();
            }
        }
    public void InstantiateRobbers()
    {
        var policeman = FindObjectOfType <Level>().character.gameObject;

        policeman.SetActive(true);
        policeman.GetComponent <CharacterMovement>().Stop();
        policeman.GetComponent <CharacterAnimations>().Idle();
        var carchingRobbers = FindObjectOfType <CatchingRobbers>();

        carchingRobbers.robbers = new List <GameObject>();
        var i = 0;

        prisonBuilding.ClearRobberList();
        foreach (GameObject o in carchingRobbers.robbersPrefab)
        {
            foreach (CatchingRobbers.ColorType color in carchingRobbers.catchedRobbers)
            {
                Debug.Log(color.ToString() + " | " + o.name);
                if (color.ToString() == o.name)
                {
                    var robber = Instantiate(o, new Vector3(1.5f + i * 1.7f, -3f, 0), Quaternion.identity);
                    i++;
                    carchingRobbers.robbers.Add(robber);
                    robber.AddComponent <MovableObject>();
                    prisonBuilding.AddRobber(robber.AddComponent <RobberWindowInteraction>().InitColor(color.ToString()));
                    robber.gameObject.AddComponent <Rigidbody2D>().bodyType = RigidbodyType2D.Kinematic;
                    var settings = robber.gameObject.AddComponent <PartSettings>();
                    settings.destionationObjectRangeInstall = 0.7f;
                    settings.isColorMatching = true;
                }
            }
        }
        policeman.transform.position = new Vector3(6, -2.7f, 0);
        carchingRobbers.catchedRobbers.Clear();
        carchingRobbers.car.LeaveCarAll();
        carchingRobbers.car.ClearStars();
        prisonBuilding.Init();
    }
 public static void PrisonInit(TestContext context)
 {
     Prison.Init();
 }
Exemple #6
0
        public void DisallowAccessEverywhereElse()
        {
            // Arrange
            Prison.Init();
            Prison prison = new Prison();

            prison.Tag = "uhtst";

            PrisonRules prisonRules = new PrisonRules();

            prisonRules.CellType       = CellType.Filesystem;
            prisonRules.PrisonHomePath = @"C:\Workspace\dea_security\PrisonHome";

            prison.Lockdown(prisonRules);

            // Act
            string exe = Utilities.CreateExeForPrison(
                @"
  return WalkDirectoryTree(new DirectoryInfo(@""c:\""));
}

static int WalkDirectoryTree(System.IO.DirectoryInfo root)
{
    System.IO.DirectoryInfo[] subDirs = null;

    // First, process all the files directly under this folder 
    try
    {
        string adir = Guid.NewGuid().ToString(""N"");
        Directory.CreateDirectory(Path.Combine(root.FullName, adir));
        Directory.Delete(Path.Combine(root.FullName, adir));
        return 1;
    }
    catch { }

    try
    {
        string adir = Guid.NewGuid().ToString(""N"");
        File.WriteAllText(Path.Combine(root.FullName, adir), ""test"");
        File.Delete(Path.Combine(root.FullName, adir));
        return 1;
    }
    catch { }

    try
    {
        subDirs = root.GetDirectories();

        foreach (System.IO.DirectoryInfo dirInfo in subDirs)
        {
            // Resursive call for each subdirectory.
            return WalkDirectoryTree(dirInfo);
        }
    }
    catch { }
    return 0;
}

static int Dummy()
{
", prison);

            Process process = prison.Execute(exe);

            process.WaitForExit();

            // Assert
            Assert.AreEqual(0, process.ExitCode);
        }