Example #1
0
        public void GetProjectController()
        {
            XTMFRuntime runtime    = XTMFRuntime.CreateRuntime();
            var         controller = runtime.ProjectController;

            Assert.IsNotNull(controller);
        }
Example #2
0
        public void ProjectPersistance()
        {
            var          runtime     = XTMFRuntime.CreateRuntime();
            var          controller  = runtime.ProjectController;
            const string projectName = "Test";
            CommandError error       = null;
            var          localUser   = TestHelper.GetTestUser(runtime);

            // delete the project just in case it survived
            controller.DeleteProject(localUser, projectName, out error);
            // now create it
            Assert.IsTrue(controller.CreateNewProject(localUser, projectName, out ProjectSession session, out error).UsingIf(session, () =>
            {
                var project = session.Project;
                Assert.AreEqual(projectName, project.Name);
                Assert.AreEqual(localUser, project.Owner);
            }), "Unable to create project");
            var numberOfProjects = localUser.AvailableProjects.Count;

            // Simulate a shutdown of XTMF
            runtime.Shutdown();
            //Startup XTMF again
            runtime    = XTMFRuntime.CreateRuntime();
            controller = runtime.ProjectController;
            localUser  = TestHelper.GetTestUser(runtime);
            Assert.AreEqual(numberOfProjects, localUser.AvailableProjects.Count);
            var regainedProject = localUser.AvailableProjects[0];

            Assert.AreEqual(projectName, regainedProject.Name);
        }
Example #3
0
        /// <summary>
        /// Create a context to edit a model system for testing
        /// </summary>
        /// <param name="name">A unique name for the test</param>
        /// <param name="toExecuteFirst">The logic to execute inside of a model system context</param>
        /// <param name="toExecuteSecond">The logic to execute inside of a model system context</param>
        internal static void RunInProjectContext(string name, Action <User, ProjectSession> toExecuteFirst, Action <User, ProjectSession> toExecuteSecond)
        {
            var          runtime           = XTMFRuntime.CreateRuntime();
            var          userController    = runtime.UserController;
            var          projectController = runtime.ProjectController;
            CommandError error             = null;
            string       userName          = name + "TempUser";
            string       projectName       = "TestProject";

            // clear out the user if possible
            userController.Delete(userName);
            Assert.IsTrue(userController.CreateNew(userName, false, out var user, out error), error?.Message);
            try
            {
                Assert.IsTrue(projectController.CreateNewProject(user, projectName, out var projectSession, out error).UsingIf(projectSession, () =>
                {
                    toExecuteFirst(user, projectSession);
                }), error?.Message);

                Assert.IsTrue(projectController.GetProject(user, projectName, out var project, out error), error?.Message);
                Assert.IsTrue(projectController.GetProjectSession(user, project, out projectSession, out error).UsingIf(projectSession, () =>
                {
                    toExecuteSecond(user, projectSession);
                }), error?.Message);
            }
            finally
            {
                //cleanup
                userController.Delete(user);
            }
        }
Example #4
0
        public void SwitchOwner()
        {
            var          runtime           = XTMFRuntime.CreateRuntime();
            var          userController    = runtime.UserController;
            var          projectController = runtime.ProjectController;
            CommandError error             = null;
            const string userName1         = "FirstUser";
            const string userName2         = "SecondtUser";
            const string projectName1      = "TestShareBetweenUsers1";

            // ensure the user doesn't exist before we start and then create our users
            userController.Delete(userName1);
            userController.Delete(userName2);
            Assert.IsTrue(userController.CreateNew(userName1, false, out var user1, out error), error?.Message);
            Assert.IsTrue(userController.CreateNew(userName2, false, out var user2, out error), error?.Message);
            // now we need to create a project for both users

            Assert.IsTrue(projectController.CreateNewProject(user1, projectName1, out var session1, out error), error?.Message);

            Assert.AreEqual(1, user1.AvailableProjects.Count);
            Assert.AreEqual(0, user2.AvailableProjects.Count);

            Assert.IsTrue(session1.SwitchOwner(user1, user2, out error), error?.Message);
            Assert.IsFalse(session1.SwitchOwner(user1, user2, out error));

            Assert.AreEqual(0, user1.AvailableProjects.Count);
            Assert.AreEqual(1, user2.AvailableProjects.Count);

            Assert.IsTrue(userController.Delete(user1));

            Assert.AreEqual(1, user2.AvailableProjects.Count);

            Assert.IsTrue(userController.Delete(user2));
        }
Example #5
0
        public void GetUserData()
        {
            XTMFRuntime runtime = XTMFRuntime.CreateRuntime();
            var         users   = runtime.UserController.Users;

            Assert.IsTrue(users.Count > 0);
        }
Example #6
0
        private static void RunClient(Stream serverStream, List <string> extraDlls, SystemConfiguration?config = null)
        {
            var runtime      = XTMFRuntime.CreateRuntime(config);
            var loadedConfig = runtime.SystemConfiguration;

            foreach (var dll in extraDlls)
            {
                loadedConfig.LoadAssembly(dll);
            }
            using var clientBus = new ClientBus(serverStream, true, runtime, extraDlls);
            clientBus.ProcessRequests();
        }
Example #7
0
        private static void Run(string runID, Stream toClient, List <string> dllsToLoad)
        {
            var runtime = XTMFRuntime.CreateRuntime();
            var config  = runtime.SystemConfiguration;

            foreach (var dll in dllsToLoad)
            {
                config.LoadAssembly(dll);
            }
            using var runBus = new RunBus(runID, toClient, true, runtime);
            runBus.ProcessRequests();
        }
Example #8
0
        public void RemoveUserFromProjectTwice()
        {
            var          runtime           = XTMFRuntime.CreateRuntime();
            var          userController    = runtime.UserController;
            var          projectController = runtime.ProjectController;
            CommandError error             = null;
            const string userName1         = "FirstUser";
            const string userName2         = "SecondtUser";
            const string projectName1      = "TestShareBetweenUsers1";
            const string projectName2      = "TestShareBetweenUsers2";

            // ensure the user doesn't exist before we start and then create our users
            userController.Delete(userName1);
            userController.Delete(userName2);
            Assert.IsTrue(userController.CreateNew(userName1, false, out var user1, out error), error?.Message);
            Assert.IsTrue(userController.CreateNew(userName2, false, out var user2, out error), error?.Message);
            // now we need to create a project for both users

            Assert.IsTrue(projectController.CreateNewProject(user1, projectName1, out var session1, out error), error?.Message);
            Assert.IsTrue(projectController.CreateNewProject(user2, projectName2, out var session2, out error), error?.Message);

            // make sure we only have 1 project
            Assert.AreEqual(1, user1.AvailableProjects.Count);
            Assert.AreEqual(1, user2.AvailableProjects.Count);

            // Share project1 with user1
            Assert.IsTrue(session1.ShareWith(user1, user2, out error), error?.Message);
            Assert.AreEqual(1, user1.AvailableProjects.Count);
            Assert.AreEqual(2, user2.AvailableProjects.Count);

            Assert.IsFalse(session1.ShareWith(user1, user2, out error), error?.Message);
            Assert.IsFalse(session1.ShareWith(user2, user2, out error), error?.Message);

            Assert.IsFalse(session1.RestrictAccess(user1, user1, out error));
            Assert.IsFalse(session1.RestrictAccess(user2, user1, out error));
            Assert.IsTrue(session1.RestrictAccess(user1, user2, out error), error?.Message);
            // Ensure that we can't do it again
            Assert.IsFalse(session1.RestrictAccess(user1, user2, out error), error?.Message);

            Assert.AreEqual(1, user1.AvailableProjects.Count);
            Assert.AreEqual(1, user2.AvailableProjects.Count);

            // Delete user1 and make sure that user2 loses reference to project1
            Assert.IsTrue(userController.Delete(user1));
            Assert.AreEqual(1, user2.AvailableProjects.Count);

            // finish cleaning up
            Assert.IsTrue(userController.Delete(user2));
        }
Example #9
0
        public void CreateUser()
        {
            var          runtime        = XTMFRuntime.CreateRuntime();
            var          userController = runtime.UserController;
            CommandError error          = null;
            const string userName       = "******";

            // ensure the user doesn't exist before we start
            userController.Delete(userName);
            Assert.IsTrue(userController.CreateNew(userName, false, out var user, out error));
            Assert.IsNull(error);
            Assert.IsFalse(userController.CreateNew(userName, false, out var secondUser, out error));
            Assert.IsNotNull(error);
            error = null;
            Assert.IsTrue(userController.Delete(user));
        }
Example #10
0
        public void ModelSystemPersistance()
        {
            var          runtime           = XTMFRuntime.CreateRuntime();
            var          userController    = runtime.UserController;
            var          projectController = runtime.ProjectController;
            CommandError error             = null;
            const string userName          = "******";
            const string projectName       = "TestProject";
            const string modelSystemName   = "ModelSystem1";

            // clear out the user if possible
            userController.Delete(userName);
            Assert.IsTrue(userController.CreateNew(userName, false, out var user, out error), error?.Message);
            Assert.IsTrue(projectController.CreateNewProject(user, projectName, out var session, out error).UsingIf(session, () =>
            {
                Assert.IsTrue(session.CreateNewModelSystem(user, modelSystemName, out var modelSystemHeader, out error), error?.Message);
                Assert.IsTrue(session.Save(out error));
            }), error?.Message);
Example #11
0
        public void CreateNewProject()
        {
            var          runtime    = XTMFRuntime.CreateRuntime();
            var          controller = runtime.ProjectController;
            CommandError error      = null;
            var          localUser  = TestHelper.GetTestUser(runtime);

            // delete the project in case it has survived.
            controller.DeleteProject(localUser, "Test", out error);
            Assert.IsTrue(controller.CreateNewProject(localUser, "Test", out ProjectSession session, out error).UsingIf(session, () =>
            {
                var project = session.Project;
                Assert.AreEqual("Test", project.Name);
                Assert.AreEqual(localUser, project.Owner);
            }), "Unable to create project");
            Assert.IsTrue(controller.DeleteProject(localUser, "Test", out error));
            Assert.IsFalse(controller.DeleteProject(localUser, "Test", out error));
        }
Example #12
0
        public void EnsureSameProjectSession()
        {
            var          runtime    = XTMFRuntime.CreateRuntime();
            var          controller = runtime.ProjectController;
            CommandError error      = null;
            var          localUser  = TestHelper.GetTestUser(runtime);

            runtime.UserController.Delete("NewUser");
            Assert.IsTrue(runtime.UserController.CreateNew("NewUser", false, out var newUser, out error), error?.Message);
            // delete the project in case it has survived.
            controller.DeleteProject(localUser, "Test", out error);
            Assert.IsTrue(controller.CreateNewProject(localUser, "Test", out ProjectSession session, out error).UsingIf(session, () =>
            {
                var project = session.Project;
                Assert.IsTrue(session.ShareWith(localUser, newUser, out error), error?.Message);
                Assert.IsTrue(controller.GetProjectSession(newUser, project, out var session2, out error).UsingIf(session2, () =>
                {
                    Assert.AreSame(session, session2);
                }), error?.Message);
            }), "Unable to create project");
Example #13
0
        public void UserPersistance()
        {
            //ensure that a user can survive between different XTMF sessions
            var          runtime        = XTMFRuntime.CreateRuntime();
            var          userController = runtime.UserController;
            CommandError error          = null;
            const string userName       = "******";

            // ensure the user doesn't exist before we start
            userController.Delete(userName);
            Assert.IsTrue(userController.CreateNew(userName, false, out var user, out error));
            // unload XTMF to simulate it shutting down
            runtime.Shutdown();
            // rebuild XTMF
            runtime        = XTMFRuntime.CreateRuntime();
            userController = runtime.UserController;
            Assert.IsNotNull(userController.Users.FirstOrDefault(u => u.UserName == user.UserName));
            // cleanup
            Assert.IsTrue(userController.Delete(userName));
        }
Example #14
0
        public void RenameProject()
        {
            var          runtime    = XTMFRuntime.CreateRuntime();
            var          controller = runtime.ProjectController;
            CommandError error      = null;
            var          localUser  = TestHelper.GetTestUser(runtime);

            // delete the project in case it has survived.
            controller.DeleteProject(localUser, "Test", out error);
            Assert.IsTrue(controller.CreateNewProject(localUser, "Test", out ProjectSession session, out error).UsingIf(session, () =>
            {
                var project = session.Project;
                Assert.AreEqual("Test", project.Name);
                Assert.AreEqual(localUser, project.Owner);
                Assert.IsFalse(controller.RenameProject(localUser, project, "RenamedTestProject", out error),
                               "RenameProject succeeded even through it was currently being edited!");
            }), "Unable to create project");
            Assert.IsTrue(controller.GetProject(localUser, "Test", out var project, out error), error?.Message);
            Assert.IsTrue(controller.RenameProject(localUser, project, "RenamedTestProject", out error), error?.Message);
            Assert.IsTrue(controller.DeleteProject(localUser, project, out error), "Failed to cleanup the project.");
        }
Example #15
0
        /// <summary>
        /// Create a context to edit a model system for testing
        /// </summary>
        /// <param name="name">A unique name for the test</param>
        /// <param name="toExecute">The logic to execute inside of a model system context</param>
        internal static void RunInModelSystemContext(string name, Action <User, ProjectSession, ModelSystemSession> toExecute)
        {
            var          runtime           = XTMFRuntime.CreateRuntime();
            var          userController    = runtime.UserController;
            var          projectController = runtime.ProjectController;
            CommandError error             = null;
            string       userName          = name + "TempUser";
            string       projectName       = "TestProject";
            string       modelSystemName   = "ModelSystem1";

            // clear out the user if possible
            userController.Delete(userName);
            Assert.IsTrue(userController.CreateNew(userName, false, out var user, out error), error?.Message);
            try
            {
                Assert.IsTrue(projectController.CreateNewProject(user, projectName, out var projectSession, out error).UsingIf(projectSession, () =>
                {
                    Assert.IsTrue(projectSession.CreateNewModelSystem(user, modelSystemName, out var modelSystemHeader, out error), error?.Message);
                    Assert.IsTrue(projectSession.EditModelSystem(user, modelSystemHeader, out var modelSystemSession, out error).UsingIf(modelSystemSession, () =>
                    {
                        toExecute(user, projectSession, modelSystemSession);
                    }), error?.Message);
                }), error?.Message);
            }
Example #16
0
 public void CreateRuntime()
 {
     XTMFRuntime runtime = XTMFRuntime.CreateRuntime();
 }
Example #17
0
 public void Setup()
 {
     // hide the startup cost of XTMF
     XTMFRuntime runtime = XTMFRuntime.CreateRuntime();
 }