Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }
Beispiel #5
0
        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" }));
        }
Beispiel #6
0
        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));
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        public ValidationResult GetValidationResult(AddAdminData data)
        {
            var validator = new AddAdminValidator(_repository);

            return(validator.Validate(data));
        }
Beispiel #10
0
 public HttpResponseMessage ResetPasswordInAdminManager(AddAdminData request)
 {
     return(WebClient.SecurePostAsJson <AddAdminData, HttpResponseMessage>(Token, _url + AdminApiRoutes.ResetPasswordInAdminManager, request));
 }