public string AddDashboardItems(DashboardItem dashItem, ModelStateDictionary ModelState) { Exception accessorError = null; if (ModelState.IsValid) { if (dashItem.DashboardItemID == 0) // creating new item { accessorError = accessor.InsertDashItem(dashItem); } else // editing pre-existing item { accessorError = accessor.UpdateDashItem(dashItem); } if (accessorError == null) { return("/DashManager"); } else { ModelState.AddModelError(string.Empty, "DB Error: " + accessorError.Message); } } return(JsonConvert.SerializeObject(ToolEngine.GetErrorMessages(ModelState))); }
public string addDashboard(Dashboard dash, ModelStateDictionary ModelState) { try { if (ModelState.IsValid) { if (dash.DashboardID == 0) { accessor.InsertDashboard(dash); // if any error from insert, add to error list } else { accessor.UpdateDashboard(dash); // if any error from insert, add to error list } } } catch (Exception e) { ModelState.AddModelError(string.Empty, e.Message); } if (ModelState.ErrorCount == 0) { return("/DashManager"); } else { var messages = ToolEngine.GetErrorMessages(ModelState); return(JsonConvert.SerializeObject(messages)); // returns string list of errors for page to display, errors based on model specifications } }
public void UpgradeCommand_ShouldUseConnectionTimeoutForLongrunningQueries() { var engine = new ToolEngine(Env, Logger); var r = engine.Run("upgrade", "--ensure", GetConfigPath("dbup.yml", "Timeout")); r.Should().Be(1); }
public void StatusCommand_ShouldPrintScriptName_IfThereAreTheScriptsToExecute() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("status", GetConfigPath("onescript.yml"), "-n"); Logger.InfoMessages.Last().Should().EndWith("c001.sql"); }
public void MarkAsExecutedCommand_WhenCalled_ShouldNotMakeAnyChangesInDb() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("mark-as-executed", GetConfigPath("mark-as-executed.yml")); result.Should().Be(0); Logger.Log.Should().NotContain("print 'You should not see this message'"); }
public void StatusCommand_ShouldUseSpecifiedEnvFiles() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("status", GetConfigPath("Status/status.yml"), "-n", "--env", GetConfigPath("Status/file1.env"), GetConfigPath("Status/file2.env")); Logger.InfoMessages.Last().Should().EndWith("c001.sql"); }
public void ToolEngine_ShouldRespectScriptFiltersAndNotMatchFiles(string filename) { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("upgrade", GetConfigPath("filter.yml")); result.Should().Be(0); Logger.Log.Should().NotContain(filename); }
public void StatusCommand_ShouldPrintGeneralInformation_IfNoScriptsToExecute() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { return(File.Exists(x.Arguments[0] as string)); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("status", GetConfigPath("noscripts.yml")); result.Should().Be(0); Logger.InfoMessages.Last().Should().StartWith("Database is up-to-date"); }
public void InitCommand_ShouldReturn1AndNotCreateConfig_IfItIsPresent() { var saved = false; var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists(@"c:\test\dbup.yml")).Returns(true); A.CallTo(() => env.WriteFile("", "")).WithAnyArguments().ReturnsLazily(x => { saved = true; return(true.Some <bool, Error>()); }); var engine = new ToolEngine(env, A.Fake <IUpgradeLog>()); engine.Run("init").Should().Be(1); saved.Should().BeFalse(); }
public void Drop_DropADb() { var engine = new ToolEngine(Env, Logger); engine.Run("upgrade", "--ensure", GetConfigPath()); var result = engine.Run("drop", GetConfigPath()); result.Should().Be(0); using (var connection = new SqlConnection(Environment.GetEnvironmentVariable("CONNSTR"))) using (var command = new SqlCommand("select count(*) from SchemaVersions where scriptname = '001.sql'", connection)) { Action a = () => connection.Open(); a.Should().Throw <SqlException>("Database DbUp should not exist"); } }
public void Ensure_CreateANewDb() { var engine = new ToolEngine(Env, Logger); var result = engine.Run("upgrade", "--ensure", GetConfigPath()); result.Should().Be(0); using (var connection = new SqlConnection(Environment.GetEnvironmentVariable("CONNSTR"))) using (var command = new SqlCommand("select count(*) from SchemaVersions where scriptname = '001.sql'", connection)) { connection.Open(); var count = command.ExecuteScalar(); count.Should().Be(1); } }
public void LoadMigration_ShouldSubstituteVariablesToScript() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists(A <string> .Ignored)).ReturnsLazily(x => File.Exists(x.Arguments[0] as string)); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("upgrade", GetConfigPath("vars.yml")); result.Should().Be(0); Logger.Log.Should().Contain("print 'Var1Value'"); Logger.Log.Should().Contain("print 'Var2Value'"); Logger.Log.Should().Contain("print 'Var3 Value'"); }
public string AddDashboardWithPriv(Dashboard dash, ModelStateDictionary ModelState, List <string> usersWhoCanEdit) { try { if (ModelState.IsValid) { if (dash.DashboardID == 0) { var insertedDashID = accessor.InsertDashboard(dash); // if any error from insert, add to error list foreach (var userID in usersWhoCanEdit) { accessor.AddDashPrivilege(insertedDashID, userID); } } else { accessor.RemoveAllPrivilegesOnDashboard(dash.DashboardID.ToString()); // gives us a clean slate to add new privileges foreach (var userID in usersWhoCanEdit) { accessor.AddDashPrivilege(dash.DashboardID.ToString(), userID); // adds privileges } accessor.UpdateDashboard(dash); // if any error from insert, add to error list } } } catch (Exception e) { ModelState.AddModelError(string.Empty, e.Message); } if (ModelState.ErrorCount == 0) { return("/DashManager"); // no errors, redirect user } else { // if errors, convert them to a list to display var messages = ToolEngine.GetErrorMessages(ModelState); return(JsonConvert.SerializeObject(messages)); // returns string list of errors for page to display, errors based on model specifications } }
public void LoadMigration_ShouldRespectScriptEncoding() { var env = A.Fake <IEnvironment>(); A.CallTo(() => env.GetCurrentDirectory()).Returns(@"c:\test"); A.CallTo(() => env.FileExists("")).WithAnyArguments().ReturnsLazily(x => { var res = File.Exists(x.Arguments[0] as string); return(res); }); var engine = new ToolEngine(env, Logger, (testConnectionFactory as IConnectionFactory).Some()); var result = engine.Run("upgrade", GetConfigPath("encoding.yml")); result.Should().Be(0); Logger.Log.Should().Contain("print 'Превед, медвед'"); }
public async Task <string> AddUser(AddUser newUser, ModelStateDictionary ModelState) { if (ModelState.IsValid) { User user = new User { UserName = newUser.Email, Email = newUser.Email }; var result = await _userManager.CreateAsync(user, newUser.Password); if (result.Succeeded && newUser.DashPrivileges != null) // add dash privileges { string userID = _userManager.Users.Where(x => x.Email == user.Email).ToList()[0].Id; // get the id of the user we just created todo: cleaner var errorMessage = AddDashPrivileges(userID, newUser.DashPrivileges); if (errorMessage != "") { ModelState.AddModelError(string.Empty, errorMessage); } } else { foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); // add errors to our list that we will send our UI } } } if (ModelState.ErrorCount == 0) { return("/UserManager"); // sending back a url will notify UI to change pages } var messages = ToolEngine.GetErrorMessages(ModelState); return(JsonConvert.SerializeObject(messages)); // returns string list of errors for page to display, errors based on model specifications }
public void LoadMigration_WhenLoadADefaultConfigFile_ShouldLoadItWithoutErrors() { var configFile = ToolEngine.GetDefaultConfigFile(); var configFilePath = Path.GetTempFileName(); File.WriteAllText(configFilePath, configFile); try { var migration = ConfigLoader.LoadMigration(configFilePath.Some <string, Error>()); migration.MatchNone(err => { Assert.Fail(err.Message); }); } finally { File.Delete(configFilePath); } }
public async Task <string> Login([FromForm] Login info) { if (ModelState.IsValid) { var result = await _signInManager.PasswordSignInAsync(info.Email, info.Password, info.RememberMe, lockoutOnFailure : false); if (result.Succeeded) { return("/DashManager"); } else { ModelState.AddModelError(string.Empty, "Login Failed"); } } return(JsonConvert.SerializeObject(ToolEngine.GetErrorMessages(ModelState))); // returns string list of errors for page to display, errors based on model specifications }