public async Task ReturnsValidWhenModelIsValid() { const string companyName = "company name"; const string companyPhone = "companyPhone"; const string firstName = "First Name"; const string email = "[email protected]"; const string lastName = "Last Name"; const string password = "******"; const string validationToken = "validation token"; var request = new CompanyRegisterRequest { CompanyName = companyName, CompanyPhone = companyPhone, FirstName = firstName, Email = email, LastName = lastName, Password = password, ValidationToken = validationToken, ToSAccepted = true, }; _mock.Mock <ICompanyNameIsTakenProvider>() .Setup(context => context.IsTaken(companyName)) .ReturnsAsync(false); _mock.Mock <IEmailIsTakenProvider>() .Setup(context => context.IsTaken(email)) .ReturnsAsync(false); var validator = _mock.Create <CompanyRegisterRequestValidator>(); var actual = await validator.ValidateAsync(request); ContentAssert.AreEqual(new ValidationResult(), actual); }
public void ReturnsUser() { const string companyName = "company name"; const string email = "[email protected]"; const string firstName = "First Name"; const string lastName = "Last Name"; const string password = "******"; var concurrencyStamp = new Guid("{F031AC41-810E-4A26-B4CE-4DD7E29434DF}"); var request = new CompanyRegisterRequest { CompanyName = companyName, Email = email, FirstName = firstName, LastName = lastName, Password = password }; _mock.Mock <INewGuidProvider>() .Setup(provider => provider.Get()) .Returns(concurrencyStamp); var converter = _mock.Create <CompanyRegisterRequestToUserConverter>(); var actual = converter.Convert(request); var company = new Company { Name = companyName }; var tenant = new Tenant { IsActive = true, Name = request.CompanyName, Company = company, }; var expected = new User { UserName = email, Email = email, SecurityUser = new SecurityUser { IsActive = true, IsInvited = true, IsInvitationAccepted = true, Tenant = tenant, Employee = new Employee { Company = company, FirstName = firstName, LastName = lastName, Tenant = tenant, } }, ConcurrencyStamp = concurrencyStamp.ToString() }; ContentAssert.AreEqual(expected, actual); }
public async Task ReturnsToken() { const string password = "******"; var userId = new Guid("{DBFA17BB-6F85-48AE-B5C1-9B5D7DF1657A}"); var tenantId = Guid.NewGuid(); var request = new CompanyRegisterRequest { Password = password }; var user = new User() { SecurityUser = new SecurityUser() { TenantId = tenantId } }; var roles = new List <Role> { new Role { Id = UserRoles.CompanyAdministrator.RoleId }, new Role { Id = UserRoles.Employee.RoleId } }; _mock.Mock <ICompanyRegisterRequestToUserConverter>() .Setup(converter => converter.Convert(request)) .Returns(user); _mock.Mock <IUserManager>() .Setup(instance => instance.CreateAsync(user, password)) .Callback((User u, string p) => u.Id = userId) .ReturnsAsync(IdentityResult.Success); _mock.Mock <IInventContext>() .Setup(converter => converter.Roles) .ReturnsAsDbSet(roles); _mock.Mock <IInventContext>() .Setup(converter => converter.UserRoles) .ReturnsAsDbSet(new List <UserRole>()); var service = _mock.Create <CompanyRegisterService>(); var actual = await service.Register(request); Assert.AreEqual(userId, actual); _mock.Mock <ICompanyRegisterEmailNotificationService>() .Verify(instance => instance.SendAsync(user)); _mock.Mock <ICompanyRegisterInternalEmailNotificationService>() .Verify(instance => instance.SendAsync(user)); }
/// <summary> /// 企业用户注册 /// </summary> /// <param name="companyRegisterRequest"></param> /// <returns></returns> public CompanyRegisterResponse companyRegister(CompanyRegisterRequest companyRegisterRequest) { SignRequest signRequest = new SignRequest(companyRegisterRequest); signRequest.apiUrl = ApiUrlConstant.Company.Register; CompanyRegisterResponse response = base.Send <CompanyRegisterResponse>(signRequest); return(response); }
public async Task <SignInResponse> Register([FromBody] CompanyRegisterRequest request) { var isTokenValid = await _captchaValidationService.IsValidAsync(request.ValidationToken); if (!isTokenValid) { throw new BadRequestException("CAPTCHA_TOKEN_IS_INVALID"); } var userId = await _companyRegisterService.Register(request); return(await _signInResponseProvider.GetAsync(userId, false)); }
/// <summary> /// 企业用户注册并申请证书 /// </summary> /// <param name="request"></param> /// <returns></returns> public CompanyRegisterResponse companyCertRegister(CompanyRegisterRequest companyRegisterRequest) { //企业用户注册 SignRequest signRequest = new SignRequest(companyRegisterRequest); signRequest.apiUrl = ApiUrlConstant.Company.Register; CompanyRegisterResponse response = base.Send <CompanyRegisterResponse>(signRequest); //证书申请 signRequest = new SignRequest(new CertApplyRequest(response.user_id)); signRequest.apiUrl = ApiUrlConstant.Cert.Apply; CertApplyResponse certApplyResponse = base.Send <CertApplyResponse>(signRequest); return(response); }
public User Convert(CompanyRegisterRequest request) { var company = new Company { Name = request.CompanyName, Phone = request.CompanyPhone, Address = request.Address, City = request.City, Zip = request.Zip, INN = request.Inn, }; var tenant = new Tenant { IsActive = true, Name = request.CompanyName, Company = company, }; return(new User { UserName = request.Email, Email = request.Email, SecurityUser = new SecurityUser { Tenant = tenant, IsActive = true, IsInvited = true, IsInvitationAccepted = true, Employee = new Employee { Company = company, FirstName = request.FirstName, LastName = request.LastName, PatronymicName = request.PatronymicName, Gender = request.Gender, DateOfBirth = request.DateOfBirth, Tenant = tenant, } }, ConcurrencyStamp = _newGuidProvider.Get().ToString() }); }
public void ReturnsFailResponseWhenValidationTokenIsNotValid() { const string email = "[email protected]"; const string validationToken = "validation token"; var request = new CompanyRegisterRequest { Email = email, ValidationToken = validationToken }; _mock.Mock <ICaptchaValidationService>() .Setup(provider => provider.IsValidAsync(validationToken)) .ReturnsAsync(false); var controller = _mock.Create <CompanyRegisterController>(); var expected = new BadRequestException("CAPTCHA_TOKEN_IS_INVALID"); ExceptionAssert.ThrowsAsync(expected, () => controller.Register(request)); }
public async Task ReturnsErrorWhenCompanyNameIsAlreadyTaken() { const string companyName = "Company name"; var request = new CompanyRegisterRequest { CompanyName = companyName }; _mock.Mock <ICompanyNameIsTakenProvider>() .Setup(context => context.IsTaken(companyName)) .ReturnsAsync(true); var validator = _mock.Create <CompanyRegisterRequestValidator>(); var actual = await validator .PropertyContext(request, model => model.CompanyName) .ValidateAsync <AsyncPredicateValidator>(); Assert.AreEqual(nameof(request.CompanyName), actual.Single().PropertyName); }
public async Task ReturnsErrorEmailIsAlreadyTaken() { const string email = "[email protected]"; var request = new CompanyRegisterRequest { Email = email }; _mock.Mock <IEmailIsTakenProvider>() .Setup(context => context.IsTaken(email)) .ReturnsAsync(true); var validator = _mock.Create <CompanyRegisterRequestValidator>(); var actual = await validator .PropertyContext(request, model => model.Email) .ValidateAsync <AsyncPredicateValidator>(); Assert.AreEqual(nameof(request.Email), actual.Single().PropertyName); }
/// <summary> /// 企业用户注册并申请证书 /// </summary> public void companyCertRegister() { CompanyRegisterRequest companyRegisterRequest = new CompanyRegisterRequest(); companyRegisterRequest.user_name = "测试某集团子公司用户"; companyRegisterRequest.area_code = "370000"; companyRegisterRequest.unit_type = CompanyType.Company; companyRegisterRequest.credi_code = "11320111MA3F1JM421"; companyRegisterRequest.legal_name = "李四"; companyRegisterRequest.legal_id_number = "370000111111111112"; companyRegisterRequest.legal_id_type = IdType.IDCARD; companyRegisterRequest.legal_phone = "13711111111"; companyRegisterRequest.legal_email = "*****@*****.**"; companyRegisterRequest.agent_name = "王五"; companyRegisterRequest.agent_id_number = "370000111111111122"; companyRegisterRequest.agent_id_type = IdType.IDCARD; companyRegisterRequest.agent_phone = "13711111111"; companyRegisterRequest.agent_email = "*****@*****.**"; companyRegisterRequest.description = "描述信息:demo code"; try { CompanyRegisterResponse companyRegisterResponse = client.Company.companyCertRegister(companyRegisterRequest); Console.WriteLine("企业客户以及证书注册-响应数据:" + JSONUtil.getJsonStringFromObject(companyRegisterResponse)); } catch (SignApplicationException sae) { // 捕获网关校验数据 Console.WriteLine("企业客户以及证书注册-网关异常状态码为:" + sae.return_code); Console.WriteLine("企业客户以及证书注册-网关异常信息为:" + sae.return_message); } catch (SignServerException sse) { // 捕获网关校验数据 Console.WriteLine("企业客户以及证书注册-业务异常状态码为:" + sse.result_code); Console.WriteLine("企业客户以及证书注册-业务异常信息为:" + sse.result_message); } catch (Exception e) { Console.WriteLine("企业客户以及证书注册-异常为:" + e.Message); } }
public async Task ReturnsSuccessResponse() { var userId = Guid.NewGuid(); const string token = "token"; const string email = "[email protected]"; var validationToken = "validation token"; var request = new CompanyRegisterRequest { Email = email, ValidationToken = validationToken }; var expected = new SignInResponse { Token = token, User = new UserDTO { Email = email } }; _mock.Mock <ICompanyRegisterService>() .Setup(provider => provider.Register(request)) .ReturnsAsync(userId); _mock.Mock <ISignInResponseProvider>() .Setup(provider => provider.GetAsync(userId, false)) .ReturnsAsync(expected); _mock.Mock <ICaptchaValidationService>() .Setup(provider => provider.IsValidAsync(validationToken)) .ReturnsAsync(true); var controller = _mock.Create <CompanyRegisterController>(); var actual = await controller.Register(request); ContentAssert.AreEqual(expected, actual); }
public async Task <CompanyRegisterResponse> CreateAsyncCompany(CompanyRegisterRequest companyRegister) { string passwordvalue = passwordGeneratorFactory.Create().GeneratePassword(); Random randomNumber = new Random(); int r = randomNumber.Next(100000, 1000000); List <MessageContent> messageContent = new List <MessageContent>(); bool IsValidEmail = messageSenderFactory.IsValid(companyRegister.CompanyRegister.Email); var user = new UserRegister { RegType = "company", UserName = companyRegister.CompanyRegister.Email, Email = IsValidEmail == true ? companyRegister.CompanyRegister.Email : null, PhoneNumber = IsValidEmail == false ? companyRegister.CompanyRegister.Email : null, PasswordHash = passwordvalue, CompanyInformation = new CompanyInformation { AddresseeName = companyRegister.CompanyRegister.AddresseeName, Email = companyRegister.CompanyRegister.Email, EconomicCode = companyRegister.CompanyRegister.EconomicCode, NationalId = companyRegister.CompanyRegister.NationalId, VerifyCode = r.ToString() } }; try { List <string> messages = new List <string>(); var result = await userManager.CreateAsync(user, passwordvalue); if (result.Succeeded) { if (IsValidEmail) { string ctoken = await userManager.GenerateEmailConfirmationTokenAsync(user); var request = httpcontextaccessor.HttpContext.Request; var queryparams = new Dictionary <string, string> { { "accepted", ctoken }, { "userId", user.UserName } }; var querystring = QueryHelpers.AddQueryString("https://localhost:44326/api/UserAuth/comfirmedEmail", queryparams); messages.Add($" {user.CompanyInformation.AddresseeName} Company <br>Please confirm your account by<br>your password:{passwordvalue}<br><br> <a href = '{HtmlEncoder.Default.Encode(querystring)}'> clicking here </a>."); BaseMessage baseMessage = new BaseMessage { Email = user.Email, Subject = "pleaseComfirmAccount", Messages = messages }; var data = messageSenderFactory.CreateMessage(baseMessage); messageContent.Add(new MessageContent { Message = data.Message, Code = null }); return(new CompanyRegisterResponse { ReturnObject = mapper.Map <CompanyRegisterViewModel>(user.CompanyInformation), responseMessage = messageContent, Success = true }); } } messageContent.AddRange(result.Errors.Select(a => new MessageContent { Code = a.Code, Message = a.Description })); //var registerResponse = requestResponseFactory.ProcessRequest<RegisterRequest, RegisterResponse>(userRegisterView); return(new CompanyRegisterResponse { ReturnObject = mapper.Map <CompanyRegisterViewModel>(user.CompanyInformation), responseMessage = messageContent, Success = result.Succeeded }); } catch (Exception ex) { return(new CompanyRegisterResponse { responseMessage = new List <MessageContent> { new MessageContent { Message = ex.Message, Code = null } } }); } }
public async Task <CompanyRegisterResponse> CreateCompany([FromBody] CompanyRegisterRequest companyRegister) { var result = await companyRegisterService.CreateAsyncCompany(companyRegister); return(result); }