public NovellOrganizationContactPerson(OrganizationContactPersonView person) { if (person.FirstName != null && person.LastName != null) { FirstName = TransliterateName(person.FirstName); Surname = TransliterateName(person.LastName); Email = person.Email; Login = ConstructLogin(TransliterateName(person.FirstName), TransliterateName(person.LastName)); Password = RandomPasswordGenerator.GeneratePassword(8); } else { return; } }
public async Task <IHttpActionResult> SimpleRegisterOrganizationContactPerson(int organizationContactPersonId) { if (organizationContactPersonId != 0) { OrganizationContactPersonView person = null; UnitOfWork unitOfWork = new UnitOfWork(factory); person = unitOfWork.OrganizationContactPersonsViewRepository.Get(d => d.Id == organizationContactPersonId) .FirstOrDefault(); if (person == null || person.Deleted == true) { return(BadRequest("Organization contact person doesn't exist")); } if (person.IsRegistered == true) { return(BadRequest("Organization contact person is already registered as an API user")); } if (person.Email == null || person.Email == "") { return(BadRequest("Organization contact person email is empty")); } INovellOrganizationContactPerson novellPerson; try { novellPerson = new NovellOrganizationContactPerson(person); // novellPerson.Login = novell.GenerateLogin(novellPerson.Login); } catch (Exception e) { return(BadRequest(e.Message)); } INovellOrganizationContactPerson personCreated = novell.CreateOrganization(novellPerson); if (personCreated != null) { bool dbResult = context.CreateOrganization(novellPerson.Login, novellPerson.Password); if (dbResult) { ApplicationUser user = new ApplicationUser() { UserName = novellPerson.Login, Email = novellPerson.Email, //TableName = "OrganizationContactPerson", //TableId = organizationContactPersonId }; try { IdentityResult result = await UserManager.CreateAsync(user, novellPerson.Password); if (!result.Succeeded) { return(GetErrorResult(result)); } else { IdentityResult roleResult = await UserManager.AddToRoleAsync(user.Id, "Organization"); if (!roleResult.Succeeded) { return(GetErrorResult(roleResult)); } bool rightsResult = context.GrantRightsToOrganization(user.Id); if (rightsResult) { await SendEmailWithCredentials(novellPerson, user.Id); return(Ok()); } } } catch (Exception e) { string m = e.Message; return(BadRequest("AspNetUser has not been created")); } } else { return(BadRequest("Database login has not been created")); } } else { return(BadRequest("eDirectory login has not been created")); } } return(BadRequest("Wrong organization contact person")); }
public async Task SimpleRegisted_ShouldRegisterAndReturnOK() { //это было самым трудным int organizationContactPersonId = 33; var identityHelper = new Mock <IIdentityHelper>(); identityHelper.Setup(d => d.FindUserById(It.IsAny <string>())) .Returns <string>((userId) => { ApplicationUser user = new ApplicationUser { Id = userId, Email = "*****@*****.**", //TableId = 1, //TableName = "Employee", UserName = "******" }; return(user); }); identityHelper.Setup(d => d.GetUserId(It.IsAny <IPrincipal>())).Returns(Guid.NewGuid().ToString()); var dbContext = new Mock <IAppDbContext>(); dbContext.Setup(d => d.ExecuteStoredProcedure <bool>(It.IsAny <string>(), It.IsAny <object[]>())) .Returns <string, object[]>((query, parameters) => { List <bool> list = new List <bool>(); if (query.Contains("IsEmployeeInformationFilled")) { list.Add(true); } return(list); }); var personsData = new List <OrganizationContactPersonView> { new OrganizationContactPersonView { Id = 33, FirstName = "Тест", SecondName = "Тестович", LastName = "Тестовый", Email = "*****@*****.**" }, new OrganizationContactPersonView { Id = 99, Email = "ddd", FirstName = "ss", SecondName = "ss", LastName = "ssss" } }; var persons = MockHelper.MockDbSet <OrganizationContactPersonView>(personsData); dbContext.Setup(d => d.OrganizationContactPersonViews).Returns(persons.Object); dbContext.Setup(d => d.Set <OrganizationContactPersonView>()).Returns(persons.Object); var dbFactory = new Mock <IDbContextFactory>(); dbFactory.Setup(d => d.CreateDbContext()).Returns(dbContext.Object); var request = new Mock <IRequest>(); request.Setup(d => d.FileCount()).Returns(1); request.Setup(d => d.Collection()).Returns(new List <string> { "one.jpg" }); request.Setup(d => d.AppPath()).Returns("C://Projects//GTIWebAPI//GTIWebAPI//"); var novell = new Mock <INovelleDirectory>(); // novell.Setup(d => d.GenerateLogin(It.IsAny<string>())).Returns<string>((login) => { return login; }); OrganizationContactPersonView contactPerson = new OrganizationContactPersonView() { FirstName = "Sofia", LastName = "Viazovsky", Email = "*****@*****.**" }; novell.Setup(d => d.CreateOrganization(It.IsAny <INovellOrganizationContactPerson>())).Returns(new NovellOrganizationContactPerson(contactPerson)); var context = new Mock <IApplicationDbContext>(); context.Setup(d => d.CreateOrganization(It.IsAny <string>(), It.IsAny <string>())).Returns(true); context.Setup(d => d.GrantRightsToOrganization(It.IsAny <string>())).Returns(true); var mockUS = new Mock <IUserStore <ApplicationUser> >(); var mockUM = new Mock <ApplicationUserManager>(mockUS.Object); mockUM.Setup(d => d.AddToRoleAsync(It.IsAny <string>(), It.IsAny <string>())).Returns <string, string> ((a, b) => { return(Task.FromResult <IdentityResult>(IdentityResult.Success)); }); mockUM.Setup(d => d.CreateAsync(It.IsAny <ApplicationUser>())).Returns <ApplicationUser> ((user) => { return(Task.FromResult <IdentityResult>(IdentityResult.Success)); }); mockUM.Setup(d => d.CreateAsync(It.IsAny <ApplicationUser>(), It.IsAny <string>())).Returns <ApplicationUser, string> ((user, password) => { return(Task.FromResult <IdentityResult>(IdentityResult.Success)); }); mockUM.Setup(d => d.SendEmailAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(Task.FromResult(default(object))); var controller = new AccountController(dbFactory.Object, context.Object, request.Object, identityHelper.Object, novell.Object, mockUM.Object); var result = await controller.SimpleRegisterOrganizationContactPerson(33) as OkResult; Assert.IsNotNull(result); }