public void SaveUserTest() { var sut = new UserPersister(); var user = new User { Email = "*****@*****.**", FirstName = "Louis", LastName = "Salin", Password = "******" }; sut.Save(user); using (var connection = new SqliteConnection("URI=file:Users.db3")) { var query = "SELECT * FROM Users WHERE Email='*****@*****.**';"; using (var cmd = connection.CreateCommand()) { connection.Open(); cmd.CommandText = query; using (var reader = cmd.ExecuteReader()) { reader.Read(); reader["FirstName"].ShouldEqual("Louis"); reader["LastName"].ShouldEqual("Salin"); reader["Email"].ShouldEqual("*****@*****.**"); reader["Password"].ShouldEqual("pass123"); reader.Close(); } connection.Close(); } } }
public void Users_can_be_persisted_and_retrieved() { //Arrange var sutProvider = new DataProvider <User>(_config, User.ToDomainConverter); var columns = sutProvider.LoadAllColumns(); var sutPersister = new UserPersister(columns, _config); //Act ErrorMessage error; var persistResult = sutPersister.TryPersist(ref TestData.Users.NewMeJulie, out error); //Assert Assert.IsTrue(persistResult); Assert.IsNull(error); //The new row id is assigned to ref of the object Assert.IsNotNull(TestData.Users.MeJulie.UserId); Assert.IsInstanceOf <int>(TestData.Users.MeJulie.UserId); var readResult = sutProvider.LoadAll().First(); Assert.AreEqual(TestData.Users.MeJulie.Email, readResult.Email); Assert.AreEqual(TestData.Users.MeJulie.Username, readResult.Username); Assert.AreEqual(TestData.Users.MeJulie.FirstName, readResult.FirstName); Assert.AreEqual(TestData.Users.MeJulie.LastName, readResult.LastName); Assert.AreNotEqual(TestData.Users.MeJulie.Password, readResult.Password); Assert.AreEqual(_encrypter.Encrypt(TestData.Users.MeJulie.Password), readResult.Password); Assert.AreEqual(TestData.Users.MeJulie.Password, _encrypter.Decrypt(readResult.Password)); }
private DataManager() { // TODO [CKP] inicijalizuj perzistere userPersister = new UserPersister(); addressPersister = new AddressPersister(); vehiclePersister = new VehiclePersister(); locationPersister = new LocationPersister(); driverPersister = new DriverPersister(); farePersister = new FarePersister(); commentPersister = new CommentPersister(); cache.Add(EntityType.USER, userPersister.Collection); cache.Add(EntityType.ADDRESS, addressPersister.Collection); cache.Add(EntityType.VEHICLE, vehiclePersister.Collection); cache.Add(EntityType.LOCATION, locationPersister.Collection); cache.Add(EntityType.DRIVER, driverPersister.Collection); cache.Add(EntityType.COMMENT, commentPersister.Collection); cache.Add(EntityType.FARE, farePersister.Collection); persisterMap.Add((userPersister as IPersister).PersisterType, userPersister as IPersister); persisterMap.Add((addressPersister as IPersister).PersisterType, addressPersister as IPersister); persisterMap.Add((vehiclePersister as IPersister).PersisterType, vehiclePersister as IPersister); persisterMap.Add((locationPersister as IPersister).PersisterType, locationPersister as IPersister); persisterMap.Add((driverPersister as IPersister).PersisterType, driverPersister as IPersister); persisterMap.Add((commentPersister as IPersister).PersisterType, commentPersister as IPersister); persisterMap.Add((farePersister as IPersister).PersisterType, farePersister as IPersister); }
public HttpResponseMessage RegisterUser(RegisterUserModel model) { return(this.ExecuteOperationAndHandleExceptions(() => { var context = new GameContext(); var dbUser = UserPersister.GetUserByUsernameAndDisplayName(model.Username, model.Nickname, context); if (dbUser != null) { throw new InvalidOperationException("This user already exists in the database"); } dbUser = new User() { Username = model.Username.ToLower(), Nickname = model.Nickname, AuthCode = model.AuthCode, Role = context.Roles.Where(r => r.Name == "user").FirstOrDefault() }; context.Users.Add(dbUser); dbUser.SessionKey = UserPersister.GenerateSessionKey(dbUser.Id); context.SaveChanges(); var responseModel = new UserResponseModel() { Nickname = dbUser.Nickname, SesionKey = dbUser.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, responseModel); return response; })); }
public HttpResponseMessage UserDetails( [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string sessionKey) { return(this.ExecuteOperationAndHandleExceptions(() => { var context = new GameContext(); var user = UserPersister.GetUserBySessionKey(sessionKey, context); var model = new UserDetails { Nickname = user.Nickname, Username = user.Username, Heroes = ( from h in user.Heroes select new ViewHeroModel { Id = h.Id, Name = h.Name }), Avatar = user.Avatar }; var response = this.Request.CreateResponse(HttpStatusCode.OK, model); return response; })); }
private bool PersistUser(out ErrorMessage error, ref User persistedUser) { var provider = new DataProvider <User>(_config, User.ToDomainConverter); var columns = provider.LoadAllColumns(); var persister = new UserPersister(columns, _config); return(persister.TryPersist(ref persistedUser, out error)); }
public HttpResponseMessage LogoutUser( [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string sessionKey) { return(this.ExecuteOperationAndHandleExceptions(() => { var context = new GameContext(); var user = UserPersister.GetUserBySessionKey(sessionKey, context); user.SessionKey = null; context.SaveChanges(); var response = this.Request.CreateResponse(HttpStatusCode.NoContent); return response; })); }
public HttpResponseMessage UploadAvatar() { return(this.ExecuteOperationAndHandleExceptions(() => { var httpRequest = HttpContext.Current.Request; var context = new GameContext(); var dbUser = UserPersister.GetUserByUsernameAndDisplayName(httpRequest.Form["username"], httpRequest.Form["nickname"], context); if (dbUser == null) { throw new InvalidOperationException("This user already exists in the database"); } if (httpRequest.Files.Count > 0) { foreach (string file in httpRequest.Files) { var postedFile = httpRequest.Files[file]; var configuration = new AccountConfiguration("djlwcsyiz", "781383948985498", "Vh5BQmeTxvSKvTGTg-wRDYKqPz4"); var uploader = new Uploader(configuration); string publicId = Path.GetFileNameWithoutExtension(postedFile.FileName); var uploadResult = uploader.Upload(new UploadInformation(postedFile.FileName, postedFile.InputStream) { PublicId = publicId, Format = postedFile.FileName.Substring(postedFile.FileName.Length - 3), }); dbUser.Avatar = uploadResult.Url; } } context.SaveChanges(); var response = this.Request.CreateResponse(HttpStatusCode.NoContent); return response; })); }
public HttpResponseMessage LoginUser(LoginUserModel model) { return(this.ExecuteOperationAndHandleExceptions(() => { if (model == null) { throw new FormatException("invalid username and/or password"); } UserPersister.ValidateLoginUser(model); var context = new GameContext(); var user = context.Users.FirstOrDefault(u => u.Username == model.Username.ToLower() && u.AuthCode == model.AuthCode); if (user == null) { throw new InvalidOperationException("Invalid username or password"); } if (user.SessionKey == null) { user.SessionKey = UserPersister.GenerateSessionKey(user.Id); context.SaveChanges(); } var responseModel = new UserResponseModel() { Nickname = user.Nickname, SesionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.OK, responseModel); return response; })); }