public async Task Login_Eventbrite_With_The_Existed_Member() { var email = "*****@*****.**"; var newMember = new Member { Email = email }; Context.Members.Add(newMember); Context.SaveChanges(); var meEventbrite = new EventBriteMe { Emails = new Email[2] { new Email { EmailEmail = email }, new Email() }, FirstName = "First", LastName = "LastName", Id = "123123123123" }; var result = await UserService.AuthenticateOrCreateEventbrite(meEventbrite); RefreshContext(); var members = await Context.Members.Where(x => x.EventbriteId == meEventbrite.Id || x.Email == email).ToListAsync(); members.Count.Should().Be(1); members.First().EventbriteId.Should().Be(newMember.EventbriteId); members.First().Email.Should().Be(email); members.First().FirstName.Should().Be(meEventbrite.FirstName); members.First().LastName.Should().Be(meEventbrite.LastName); }
public async Task <AuthenticateUser> AuthenticateOrCreateEventbrite(EventBriteMe me) { var user = await _context.Members.Where(x => x.Email.ToUpper() == me.Emails.First().EmailEmail.ToUpper() || x.EventbriteId == me.Id).FirstOrDefaultAsync(); if (user == null) { user = new Member { Email = me.Emails.First().EmailEmail, FirstName = me.FirstName, LastName = me.LastName, EventbriteId = me.Id, Role = UserRole.Member }; await _context.Members.AddAsync(user); await _context.SaveChangesAsync(); } else if (string.IsNullOrWhiteSpace(user.Email) || string.IsNullOrWhiteSpace(user.EventbriteId)) { user.Email = me.Emails.First().EmailEmail; user.EventbriteId = me.Id; user.FirstName = me.FirstName; user.LastName = me.LastName; await _context.SaveChangesAsync(); } return(new AuthenticateUser(TokenService.Generate(_appSettings.Secret, new List <CustomClaim> { new CustomClaim(EnumClaims.UserId.ToString().LowercaseFirst(), user.Id.ToString()), new CustomClaim(EnumClaims.Email.ToString().LowercaseFirst(), user.Email), new CustomClaim(EnumClaims.Role.ToString().LowercaseFirst(), user.Role.ToString()) }, DateTime.UtcNow.AddDays(30)))); }