public void GetProjectController() { XTMFRuntime runtime = XTMFRuntime.CreateRuntime(); var controller = runtime.ProjectController; Assert.IsNotNull(controller); }
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); }
/// <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); } }
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)); }
public void GetUserData() { XTMFRuntime runtime = XTMFRuntime.CreateRuntime(); var users = runtime.UserController.Users; Assert.IsTrue(users.Count > 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(); }
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(); }
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)); }
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)); }
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);
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)); }
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");
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)); }
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."); }
/// <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); }
public void CreateRuntime() { XTMFRuntime runtime = XTMFRuntime.CreateRuntime(); }
public void Setup() { // hide the startup cost of XTMF XTMFRuntime runtime = XTMFRuntime.CreateRuntime(); }