private void btnDeleteUser_Click(object sender, RoutedEventArgs e) { if (!IsTrueDbConfig()) { MessageBox.Show("Need right db configuration on the first tab."); return; } if (SelectedUser == null) { MessageBox.Show("Please select the user to delete."); return; } User userToDelete = SelectedUser; DatabaseConfig config = DbConfig; new Task((Action)(() => { MsSqlDataProvider provider = new MsSqlDataProvider(); DragonflyEntities context = provider.Initizlize(config) as DragonflyEntities; try { provider.DeleteUser(userToDelete.Login); Dispatcher.Invoke((Action)(() => { LoadUsersRunner(config); })); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } })).Start(); }
private static ClientType CreateClientType(IClientsProvider provider, DragonflyEntities context) { decimal id = provider.CreateAClientType("Test client type", 1); var type = (from c in context.Client_Type where c.ID_Client_Type == id select c).FirstOrDefault().ToClientType(); return(type); }
public void Initialize(DbContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } _Context = context as DragonflyEntities; if (_Context == null) { throw new ArgumentException( $"Wrong type of the database context. Expected {typeof(DragonflyEntities)}"); } }
private void btnAddUser_Click(object sender, RoutedEventArgs e) { if (!IsTrueDbConfig()) { MessageBox.Show("Need right db configuration on the first tab."); return; } if (string.IsNullOrWhiteSpace(UserName)) { MessageBox.Show("User name is empty"); return; } if (string.IsNullOrWhiteSpace(UserPassword)) { MessageBox.Show("User password is empty"); return; } if (string.IsNullOrWhiteSpace(UserEMail)) { MessageBox.Show("User e-mail is empty"); return; } User user = new User() { E_mail = UserEMail, Login = UserName, Password = UserPassword }; DatabaseConfig config = DbConfig; new Task((Action)(() => { MsSqlDataProvider provider = new MsSqlDataProvider(); DragonflyEntities context = provider.Initizlize(config) as DragonflyEntities; try { provider.AddUser(user.Login, user.Password, user.E_mail); Dispatcher.Invoke((Action)(() => { UserEMail = string.Empty; UserName = string.Empty; UserPassword = string.Empty; LoadUsersRunner(config); })); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } })).Start(); }
private void DeleteUserFromDB(DbContext context, string login, string eMail) { DragonflyEntities ents = context as DragonflyEntities; if (ents != null) { var foundUsers = (from u in ents.User where u.Login.Equals(login) || u.E_mail.Equals(eMail) select u); foreach (var foundUser in foundUsers) { ents.User.Remove(foundUser); } ents.SaveChanges(); } }
private void DeleteAccessTokenFromDB(DbContext context, decimal id) { if (id > 0) { DragonflyEntities ents = context as DragonflyEntities; if (ents != null) { var foundTokens = (from u in ents.User_Access where u.ID_User_Access == id select u); foreach (var foundUser in foundTokens) { ents.User_Access.Remove(foundUser); } ents.SaveChanges(); } } }
/// <summary>Methor run a loading all users from database.</summary> private void LoadUsersRunner(DatabaseConfig config) { Users.Clear(); new Task(() => { MsSqlDataProvider provider = new MsSqlDataProvider(); DragonflyEntities context = provider.Initizlize(config) as DragonflyEntities; var users = (from u in context.User select u).ToList(); Dispatcher.Invoke((Action)(() => { foreach (User user in users) { Users.Add(user); } })); }).Start(); }
public void CreateAccessTokenTest() { MsSqlFactory factory = new MsSqlFactory(Common.Connectionconfig); MsSqlDataProvider provider = factory.CreateDBProvider() as MsSqlDataProvider; IUserAccessProvider accessProvider = factory.CreateUserAccessProvider(); using (DbContext context = provider.GenerateContext()) { DragonflyEntities ents = context as DragonflyEntities; decimal createdAceessToken = 0; try { decimal userId = provider.AddUser(_UserSignUpData); Assert.IsTrue(userId > 0, "Error occured on the user save."); string token = accessProvider.CreateAccessToken(userId); var accessTokens = (from at in ents.User_Access where at.ID_User == userId select at); if (accessTokens.Count() > 1) { foreach (var foundToken in accessTokens) { DeleteAccessTokenFromDB(context, foundToken.ID_User_Access); } Assert.Fail("Too many access tokens"); } else if (accessTokens.Count() == 1) { createdAceessToken = accessTokens.First().ID_User_Access; Assert.AreEqual(token, accessTokens.First().Access_Token); } else { Assert.Fail("Access tokens not found in the DB."); } } finally { DeleteUserFromDB(context, _UserSignUpData.Login, _UserSignUpData.EMail); DeleteAccessTokenFromDB(context, createdAceessToken); } } }
/// <summary>Method create and open context for database.</summary> /// <param name="accessConfigurations">Parameters to database connect.</param> /// <returns>Created context. null if fail.</returns> public DbContext Initizlize(DatabaseConfig accessConfigurations) { EntityConnectionStringBuilder connection = UpdateConnectionParameters(accessConfigurations); try { _Context = new DragonflyEntities(connection.ToString()); _Context.Database.Connection.Open(); } catch (Exception ex) { if (_Context != null) { _Context.Dispose(); } return(null); } return(_Context); }
/// <summary> /// Method generate a new db context. /// </summary> /// <param name="accessConfigurations">Settings to db access.</param> /// <returns>Db context.</returns> /// <exception cref="DbInitializationException"/> public DragonflyEntities GenerateContext() { DragonflyEntities context = null; EntityConnectionStringBuilder connection = UpdateConnectionParameters(_DbConfig); try { context = new DragonflyEntities(connection.ToString()); context.Database.Connection.Open(); } catch (Exception ex) { if (context != null) { context.Dispose(); } throw new DbInitializationException(ex.Message); } return(context); }
public void AddUserTest() { MsSqlFactory factory = new MsSqlFactory(Common.Connectionconfig); MsSqlDataProvider provider = factory.CreateDBProvider() as MsSqlDataProvider; using (DbContext context = provider.GenerateContext()) { SignUpModel model = new SignUpModel() { Login = "******", Password = "******", EMail = "*****@*****.**" }; try { Assert.IsTrue(provider.AddUser(model) > 0, "User not saved without error."); Assert.IsTrue(provider.CheckUserCredentials(model.Login, model.Password), "Wrong user saved (login)"); Assert.IsTrue(provider.CheckUserCredentials(model.EMail, model.Password), "Wrong user saved (email)"); DragonflyEntities ents = context as DragonflyEntities; if (ents != null) { User foundUser = (from u in ents.User where u.Login.Equals(model.Login) select u).FirstOrDefault(); if (foundUser != null) { Assert.AreEqual(model.EMail, foundUser.E_mail, "Wrong e-mail saved."); //TODO check stored password } } } finally { DeleteUserFromDB(context, model.Login, model.EMail); //TODO delete test user } } }
public void CheckAccessTokenTest() { MsSqlFactory factory = new MsSqlFactory(Common.Connectionconfig); MsSqlDataProvider provider = factory.CreateDBProvider() as MsSqlDataProvider; IUserAccessProvider accessProvider = factory.CreateUserAccessProvider(); using (DbContext context = provider.GenerateContext()) { DragonflyEntities ents = context as DragonflyEntities; try { decimal userId = provider.AddUser(_UserSignUpData); Assert.IsTrue(userId > 0, "Error occured on the user save."); string token = accessProvider.CreateAccessToken(userId); Assert.IsTrue(accessProvider.CheckAccessToken(userId, token)); } finally { DeleteUserFromDB(context, _UserSignUpData.Login, _UserSignUpData.EMail); } } }
public void AccessTokenCascadeDeletionTest() { MsSqlFactory factory = new MsSqlFactory(Common.Connectionconfig); MsSqlDataProvider provider = factory.CreateDBProvider() as MsSqlDataProvider; IUserAccessProvider accessProvider = factory.CreateUserAccessProvider(); using (DbContext context = provider.GenerateContext()) { DragonflyEntities ents = context as DragonflyEntities; decimal createdAceessToken = 0; try { decimal userId = provider.AddUser(_UserSignUpData); Assert.IsTrue(userId > 0, "Error occured on the user save."); string token = accessProvider.CreateAccessToken(userId); var accessTokens = (from at in ents.User_Access where at.ID_User == userId select at); if (accessTokens.Count() == 1) { createdAceessToken = accessTokens.First().ID_User_Access; DeleteUserFromDB(context, _UserSignUpData.Login, _UserSignUpData.EMail); var tokensCount = (from at in ents.User_Access where at.ID_User == userId select at).Count(); Assert.AreEqual(0, tokensCount, "Access tokens for user stay in the DB"); } } finally { DeleteUserFromDB(context, _UserSignUpData.Login, _UserSignUpData.EMail); DeleteAccessTokenFromDB(context, createdAceessToken); } } }
public void CreateProjectTest() { MsSqlFactory factory = new MsSqlFactory(Common.Connectionconfig); MsSqlDataProvider provider = factory.CreateDBProvider() as MsSqlDataProvider; IUserAccessProvider userProvider = factory.CreateUserAccessProvider(); SignUpModel userData = new SignUpModel() { Login = "******", EMail = "*****@*****.**", Password = "******" }; provider.AddUser(userData); EUser userModel = userProvider.GetUserByLoginMail("*****@*****.**"); ProjectModel model = new ProjectModel(provider) { ProjectDetails = new EProject() { Description = "Project description", ProjectName = "Test project name" }, //UserIds = new System.Collections.Generic.List<decimal>() //{ // userModel.Id //} }; try { provider.CreateProject(model); Assert.IsTrue(model.ProjectDetails.Id > 0, "Project id less than 1."); ProjectModel selectedProjectModel = new ProjectModel() { ProjectDetails = provider.GetProjectById(model.ProjectDetails.Id) }; Assert.IsNotNull( selectedProjectModel, $"Unable to retrieve project with id \'{model.ProjectDetails.Id}\'"); Assert.AreEqual( model.ProjectDetails.ProjectName, selectedProjectModel.ProjectDetails.ProjectName); Assert.AreEqual( model.ProjectDetails.Description, selectedProjectModel.ProjectDetails.Description); //Check users //using (DragonflyEntities ents = provider.GenerateContext()) //{ // var projectUsers = (from usr in ents.User_Project // where usr.ID_Project == selectedProjectModel.ProjectId // select usr).ToList(); // Assert.IsTrue(projectUsers.All(pu => model.UserIds.Contains(pu.ID_User)), // "Not all users added to project management."); //} } finally { if (model != null && model.ProjectDetails.Id > 0) { provider.DeleteProject(model.ProjectDetails.Id); } using (DragonflyEntities ents = provider.GenerateContext()) { DeleteUserFromDB(ents, userData.Login, userData.EMail); } } }
private void ClearResources(DragonflyEntities context) { context.Client.RemoveRange(context.Client); context.Client_Type.RemoveRange(context.Client_Type); context.SaveChanges(); }