public void ThenNewUserIsSuccessfullyCreated() { ScenarioContext.Current.Should().ContainKey("brandId"); var brandId = ScenarioContext.Current.Get <Guid>("brandId"); ScenarioContext.Current.Should().ContainKey("licenseeId"); var licenseeId = ScenarioContext.Current.Get <Guid>("licenseeId"); var data = new AddAdminData { Username = TestDataGenerator.GetRandomString(), FirstName = "User", LastName = "123", Password = "******", Language = "English", IsActive = true, AssignedLicensees = new[] { licenseeId }, AllowedBrands = new[] { brandId }, Currencies = new[] { "CAD" }, RoleId = SecurityTestHelper.CreateRole().Id }; var result = AdminApiProxy.CreateUserInAdminManager(data); result.Should().NotBeNull(); result.StatusCode.ShouldBeEquivalentTo(HttpStatusCode.OK); }
public void Cannot_create_admin_with_invalid_brand() { /*** Arrange ***/ var brandTestHelper = Container.Resolve <BrandTestHelper>(); var securityTestHelper = Container.Resolve <SecurityTestHelper>(); var licensee = brandTestHelper.CreateLicensee(); var brands = new[] { brandTestHelper.CreateBrand(licensee, isActive: true).Id, brandTestHelper.CreateBrand(licensee, isActive: true).Id }; var currencies = new[] { brandTestHelper.CreateCurrency("CAD", "Canadian Dollar").Code }; var role = securityTestHelper.CreateRole(new[] { licensee.Id }); var userData = new AddAdminData { Username = "******", FirstName = "User", LastName = "123", Password = "******", Language = "English", IsActive = true, AssignedLicensees = new[] { licensee.Id }, AllowedBrands = brands, Currencies = currencies, RoleId = role.Id }; LogWithNewAdmin(Modules.AdminManager, Permissions.Create); /*** Act ***/ Assert.Throws <InsufficientPermissionsException>(() => _adminCommands.CreateAdmin(userData)); }
public IHttpActionResult ResetPassword(AddAdminData admin) { VerifyPermission(Permissions.Update, Modules.AdminManager); if (string.Compare(admin.Password, admin.PasswordConfirmation, StringComparison.OrdinalIgnoreCase) != 0) { return(Ok(new { Result = "failure", Data = new RegoException("Passwords does not match") })); } _adminCommands.ChangePassword(admin.Id, admin.Password); return(Ok(new { Result = "success", Data = admin })); }
public async Task <IActionResult> AddAdmin([FromBody] AddAdminData data) { var user = await _userRepository.GetUserByTokenId(data.TokenId); if (user == null || user.Role == "user") { return(Unauthorized()); } if (await _adminRepository.AddAdminRoleByEmail(data.Email)) { return(Created("Email successfully added", "")); } return(StatusCode(500)); }
public IHttpActionResult CreateUser(AddAdminData data) { VerifyPermission(Permissions.Create, Modules.AdminManager); var validationResult = _adminQueries.GetValidationResult(data); if (!validationResult.IsValid) { return(Ok(ValidationExceptionResponse(validationResult.Errors))); } _adminCommands.CreateAdmin(data); return(Ok(new { result = "success" })); }
private AddAdminData CreateAddAdminData(IEnumerable <Guid> licensees = null) { var role = SecurityTestHelper.CreateRole(); var userName = "******" + TestDataGenerator.GetRandomString(5); var addAdminData = new AddAdminData { Username = userName, FirstName = userName, LastName = userName, Password = TestDataGenerator.GetRandomString(), Language = "English", IsActive = true, RoleId = role.Id, AssignedLicensees = licensees != null?licensees.ToList() : null }; return(addAdminData); }
public Admin CreateAdmin(IEnumerable <Guid> licenseeIds = null, IEnumerable <Brand> brands = null, IEnumerable <string> currencies = null, string password = null, Guid?roleId = null, bool isActive = true) { var userName = "******" + TestDataGenerator.GetRandomString(5); if (password == null) { password = TestDataGenerator.GetRandomString(); } licenseeIds = licenseeIds ?? _brandQueries.GetLicensees().Select(l => l.Id); if (roleId == null) { var role = CreateRole(licenseeIds.ToArray()); roleId = role.Id; } brands = brands ?? _brandQueries.GetBrands(); currencies = currencies ?? _brandQueries.GetCurrencies().Select(c => c.Code); var userData = new AddAdminData { Username = userName, FirstName = userName, LastName = userName, Password = password, Language = "English", IsActive = isActive, AssignedLicensees = licenseeIds.ToList(), AllowedBrands = brands.Select(b => b.Id).ToList(), Currencies = currencies.ToList(), RoleId = roleId }; return(_adminCommands.CreateAdmin(userData)); }
public Admin CreateAdmin(AddAdminData data) { var validationResult = new AddAdminValidator(_repository).Validate(data); if (!validationResult.IsValid) { throw new RegoException(validationResult.Errors.First().ErrorMessage); } //todo: KB: not sure how input role id can be null. And if it is validation should trigger var role = _repository.Roles.SingleOrDefault(r => r.Id == (data.RoleId ?? new Guid("00000000-0000-0000-0000-000000000002"))); var admin = Mapper.DynamicMap <Admin>(data); using (var scope = CustomTransactionScope.GetTransactionScope()) { admin.Id = Guid.NewGuid(); admin.Role = role; admin.SetLicensees(data.AssignedLicensees); admin.SetAllowedBrands(data.AllowedBrands); admin.SetCurrencies(data.Currencies); if (data.AllowedBrands != null) { foreach (var allowedBrand in data.AllowedBrands) { admin.BrandFilterSelections.Add(new BrandFilterSelection { AdminId = admin.Id, BrandId = allowedBrand, Admin = admin }); } } _authCommands.CreateActor(new CreateActor { ActorId = admin.Id, Username = admin.Username, Password = data.Password }); _authCommands.AssignRoleToActor(new AssignRole { ActorId = admin.Id, RoleId = role.Id }); _repository.Admins.Add(admin); _repository.SaveChanges(); _eventBus.Publish(new AdminCreated(admin)); scope.Complete(); } return(admin); }
public ValidationResult GetValidationResult(AddAdminData data) { var validator = new AddAdminValidator(_repository); return(validator.Validate(data)); }
public HttpResponseMessage ResetPasswordInAdminManager(AddAdminData request) { return(WebClient.SecurePostAsJson <AddAdminData, HttpResponseMessage>(Token, _url + AdminApiRoutes.ResetPasswordInAdminManager, request)); }