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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 4
0
        /// <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));
        }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
        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()
            });
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 11
0
        /// <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);
            }
        }
Ejemplo n.º 12
0
        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);
        }