public TM_FileStorage(bool loadData) { Server = new TM_Server(); TMXmlDatabase = new TM_Xml_Database(); UserData = new TM_UserData(); GuidanceExplorers_Paths = new Dictionary <guidanceExplorer, string>(); GuidanceItems_FileMappings = new Dictionary <Guid, string>(); if (loadData) { Current = this; this.set_WebRoot() // defines where the web root will exist .set_Path_XmlDatabase() // the WebRoot is used to calculate the root of the XML Database .tmServer_Load() // the TM_Server is loaded from the root of the Path_XmlDatabase .set_Path_UserData() // the Path_UserData are Path_SiteData are both .set_Path_SiteData() // set based on info from TM_Server and Path_XmlDatabase .tmConfig_Load() // tm TM_Config is loaded from the root of the UserData .set_Path_XmlLibraries() // the Path_XmlLibraries is set based on info from TM_Config and Path_XmlDatabase .load_UserData() // after all is configured we can load the users .load_Libraries(); // and libraries this.hook_Events_TM_UserData() // hook events to FileStorage handlers so that actions on TeamMentor.Database .hook_Events_TM_Xml_Database(); // and TeamMentor.UserData are saved or deleted from disk } }
/*[Admin] public static TM_FileStorage load_TMServer(this TM_FileStorage tmFileStorage) * { * return tmFileStorage.tmServer_Load(); * }*/ [Admin] public static TM_FileStorage tmServer_Load(this TM_FileStorage tmFileStorage) { UserRole.Admin.demand(); if (tmFileStorage.isNull()) { return(tmFileStorage); } var tmServer = new TM_Server(); tmServer.setDefaultData(); var location = tmFileStorage.tmServer_Location(); if (location.valid()) { if (location.fileExists().isFalse()) { "[TM_Xml_Database][load_TMServer_Config] expected TM_Server file didn't exist, so creating it: {0}".info(location); tmServer.saveAs(location); } var loadedTmServer = location.load <TM_Server>(); if (loadedTmServer.isNull()) { "[TM_Xml_Database][load_TMServer_Config] Failed to load tmServer file: {0} Default values will be used".error(location); } else { tmServer = loadedTmServer; } } //tmDatabase.Events.After_TmServer_Load.raise(); tmFileStorage.Server = tmServer; return(tmFileStorage); }
[SetUp] public void setup() { this.tmProxy_Refresh(); tmFileStorage = tmProxy.TmFileStorage.assert_Not_Null(); tmServer = tmProxy.TmServer.assert_Not_Null(); path_SiteData = tmFileStorage.path_SiteData(); }
[Test] public void add_UserData_Repo() { var tmServer = new TM_Server().setDefaultData(); var userData_Config1a = new TM_Server.Config { Name = 10.randomLetters() }; var userData_Config1b = new TM_Server.Config { Name = userData_Config1a.Name }; var userData_Config2 = new TM_Server.Config { Name = 10.randomLetters() }; Assert.IsNotEmpty(tmServer.UserData_Configs); // there should be at least one default UserData config tmServer.UserData_Configs.clear(); tmServer.add_UserData(userData_Config1a); Assert.AreEqual(tmServer.UserData_Configs.size(), 1); Assert.AreEqual(tmServer.UserData_Configs.first(), userData_Config1a); tmServer.add_UserData(userData_Config2); // should add userData_Config2 Assert.AreEqual(tmServer.UserData_Configs.size(), 2); Assert.AreEqual(tmServer.UserData_Configs.first(), userData_Config1a); Assert.AreEqual(tmServer.UserData_Configs.second(), userData_Config2); tmServer.add_UserData(userData_Config1b); // should reaplce userData_GitRepo1a with userData_GitRepo1b Assert.AreEqual(tmServer.UserData_Configs.size(), 2); Assert.AreEqual(tmServer.UserData_Configs.first(), userData_Config2); Assert.AreEqual(tmServer.UserData_Configs.second(), userData_Config1b); }
[Test] public void tm_Server_Load__In_Memory() { var tmFileStorage = new TM_FileStorage(false); var tmServer_defaultData = new TM_Server(); //.setDefaultData(); Assert.NotNull(tmFileStorage.Server); Assert.AreEqual(tmFileStorage.Server.toXml(), tmServer_defaultData.toXml()); // check if the value matches a new object of type TM_Server }
[Test] public void tm_Server_Load_UsingFileStorage() { var tmFileStorage = new TM_FileStorage(false); var baseReadOnlyDir = "_tmp_webRoot".tempDir(); var webRootVirualPath = @"site\wwwroot"; // simulates use of AppData tmFileStorage.WebRoot = baseReadOnlyDir.pathCombine(webRootVirualPath).createDir(); tmFileStorage.set_Path_XmlDatabase() .set_Path_UserData() .tmServer_Load(); var tmServerFile = tmFileStorage.tmServer_Location(); var expectedLocation = tmFileStorage.Path_XmlDatabase.pathCombine(TMConsts.TM_SERVER_FILENAME); Assert.IsNotNull(tmFileStorage.path_XmlDatabase()); Assert.IsTrue(TM_Status.Current.TM_Database_Location_Using_AppData); Assert.NotNull(tmFileStorage.Server); Assert.IsTrue(tmServerFile.fileExists()); Assert.AreEqual(tmServerFile, expectedLocation); // Assert.Ignore("TO FIX (Refactor Side Effect"); // Assert.Ignore("TO FIX (Refactor Side Effect"); var tmServer_withDefaultData = new TM_Server().setDefaultData(); Assert.AreEqual(tmFileStorage.Server.toXml(), tmServer_withDefaultData.toXml()); //make a change, saved it and ensure it gets loaded ok var tmpName1 = 10.randomLetters(); var tmpName2 = 10.randomLetters(); tmFileStorage.Server.UserData_Configs.first().Name = tmpName1; tmFileStorage.tmServer_Save(); tmFileStorage.Server.UserData_Configs.first().Name = tmpName2; tmFileStorage.tmServer_Load(); Assert.AreEqual(tmFileStorage.Server.UserData_Configs.first().Name, tmpName1); Assert.AreNotEqual(tmFileStorage.Server.toXml(), tmServer_withDefaultData.toXml()); //Try loading up an corrupted tmServer (whcih will default to load a default TM_Server "aaaa".saveAs(tmServerFile); tmFileStorage.tmServer_Load(); Assert.AreNotEqual(tmFileStorage.Server.UserData_Configs.first().Name, tmpName1); Assert.AreEqual(tmFileStorage.Server.toXml(), tmServer_withDefaultData.toXml()); Files.deleteFolder(baseReadOnlyDir, true); Assert.IsFalse(baseReadOnlyDir.dirExists()); //tmXmlDatabase.delete_Database(); }
//TM_Server Extension methods [Test] public void setDefaultValues() { var tmServer = new TM_Server(); Assert.NotNull(tmServer); Assert.IsEmpty(tmServer.UserData_Configs); Assert.IsEmpty(tmServer.SiteData_Configs); tmServer.assert_Equals(TM_Server.Current); // Assert.IsTrue (tmServer.Users_Create_Default_Admin); //Assert.IsFalse(tmServer.TM_Database_Use_AppData_Folder); Assert.IsFalse(tmServer.UserActivities_Disable_Logging); }
public TM_XmlDatabase_FileStorage() { SendEmails.Disable_EmailEngine = true; UserGroup.Admin.assert(); tmFileStorage = new TM_FileStorage(); tmXmlDatabase = tmFileStorage.TMXmlDatabase; //new TM_Xml_Database().setup(); userData = tmFileStorage.UserData; tmServer = tmFileStorage.Server; tmConfig = TMConfig.Current; CheckDatabaseSetup(); UserGroup.None.assert(); }
[Test] public void tm_Server_Save() { var tmFileStorage = new TM_FileStorage(); Assert.NotNull(tmFileStorage.path_XmlDatabase()); var tmServerLocation = tmFileStorage.tmServer_Location(); var tmServer_withDefaultData = new TM_Server().setDefaultData(); Assert.IsTrue(tmServerLocation.fileExists()); // Assert.Ignore("TO FIX (Refactor Side Effect"); Assert.AreEqual(tmFileStorage.Server.toXml(), tmServer_withDefaultData.toXml()); var tmpName1 = 10.randomLetters(); tmFileStorage.Server.UserData_Configs.first().Name = tmpName1; Assert.IsTrue(tmFileStorage.tmServer_Save()); Assert.AreEqual(tmServerLocation.load <TM_Server>().UserData_Configs.first().Name, tmpName1); //check that it was saved /* * // this works but makes the test run in 10s (and the test being done is if there is no exception) * * var tmpName2 = 10.randomLetters(); * tmServerLocation.fileInfo() * .setAccessControl("Users", FileSystemRights.Write, AccessControlType.Deny); * * tmXmlDatabase.Server.UserData_Configs.first().Name = tmpName2; * * Assert.IsFalse(tmXmlDatabase.tmServer_Save()); * * Assert.AreEqual(tmServerLocation.load<TM_Server>().UserData_Configs.first().Name, tmpName1); //check that it was not saved * * Assert.IsTrue(tmServerLocation.delete_File()); * Assert.IsFalse(tmServerLocation.fileExists()); */ tmFileStorage.delete_Database(); Assert.IsFalse(tmServerLocation.fileExists()); Assert.IsFalse(tmFileStorage.path_XmlDatabase().dirExists()); //check when not UsingFileStorage //check for nulls tmFileStorage.Path_XmlDatabase = null; Assert.IsFalse(tmFileStorage.tmServer_Save()); Assert.IsFalse(new TM_FileStorage(false).tmServer_Save()); }
[Test] public void getActive_UserData_Repo_Remote_GitPath() { var tmServer = new TM_Server(); var userData_Config = new TM_Server.Config { Name = 10.randomLetters(), Remote_GitPath = 10.randomLetters() }; tmServer.add_UserData(userData_Config); tmServer.active_UserData(userData_Config); var active_GitConfig = tmServer.userData_Config(); var remote_GitPath = tmServer.userData_Config().Remote_GitPath; Assert.NotNull(active_GitConfig); Assert.AreEqual(userData_Config, active_GitConfig); Assert.AreEqual(userData_Config.Remote_GitPath, remote_GitPath);; }
[SetUp][Admin] public void setUp() { UserGroup.Admin.assert(); //create TM_FileStorage on temp Custom_WebRoot for this TestFixture TM_FileStorage.Custom_WebRoot = "custom_WebRoot".tempDir(); tmFileStorage = new TM_FileStorage(false); tmFileStorage.set_WebRoot() .set_Path_XmlDatabase() .tmServer_Load() .set_Path_UserData() .load_UserData(); tmFileStorage.hook_Events_TM_UserData(); tmXmlDatabase = tmFileStorage.TMXmlDatabase.assert_Not_Null(); userData = tmFileStorage.UserData.assert_Not_Null(); tmServer = tmFileStorage.Server.assert_Not_Null(); tmFileStorage.Path_XmlDatabase.assert_Folder_Exists(); tmFileStorage.Path_UserData.assert_Folder_Exists(); userDataGit = tmFileStorage.setup_UserData_Git_Support(); // adds Git Support for UserData repos tmFileStorage.Path_UserData.isGitRepository().assert_True(); Assert.NotNull(tmFileStorage.Server.userData_Config()); userData.createDefaultAdminUser(); userDataGit.triggerGitCommit(); nGit = userDataGit.NGit; nGit.commits().assert_Size_Is(2, "there should be two commits here"); UserGroup.None.assert(); }
[Test] public void setDefaultData() { var tmServer = new TM_Server(); tmServer.setDefaultData(); Assert.IsNotEmpty(tmServer.UserData_Configs); Assert.IsNotEmpty(tmServer.SiteData_Configs); Assert.AreEqual(1, tmServer.UserData_Configs.size()); Assert.AreEqual(1, tmServer.SiteData_Configs.size()); var userData = tmServer.userData_Config(); Assert.AreEqual(userData.Name, TMConsts.TM_SERVER_DEFAULT_NAME_USERDATA); Assert.AreEqual(userData.Active, true); // Assert.AreEqual(userData.Use_FileSystem , false); // Assert.AreEqual(userData.Enable_Git_Support , false); var siteData = tmServer.siteData_Config(); Assert.AreEqual(siteData.Name, TMConsts.TM_SERVER_DEFAULT_NAME_SITEDATA); Assert.AreEqual(siteData.Active, true); // Assert.AreEqual(siteData.Use_FileSystem , false); // Assert.AreEqual(siteData.Enable_Git_Support , false); }
[Admin] public static TM_FileStorage tmServer(this TM_FileStorage tmFileStorage, TM_Server tmServer) { UserRole.Admin.demand(); tmFileStorage.Server = tmServer; return(tmFileStorage); }
[Admin] public static bool tmServer_Save(this TM_FileStorage tmFileStorage, TM_Server tmServer) { UserRole.Admin.demand(); if (tmFileStorage.isNull() || tmServer.isNull()) { return(false); } var location = tmFileStorage.tmServer_Location(); return((location.valid()) && tmServer.saveAs(location)); }