示例#1
0
        public void ShouldNotRegisterUserIfEmailNotUnique()
        {
            EnsureZeroUsers();

            using (var database = AdminAppIdentityDbContext.Create())
            {
                var user = new AdminAppUser()
                {
                    Email    = "*****@*****.**",
                    UserName = "******"
                };
                database.Users.Add(user);
                database.SaveChanges();
            }

            var newUser = new RegisterViewModel
            {
                Email           = "*****@*****.**",
                Password        = "******",
                ConfirmPassword = "******"
            };

            var validator         = new RegisterViewModelValidator();
            var validationResults = validator.Validate(newUser);

            validationResults.IsValid.ShouldBe(false);
            validationResults.Errors.Select(x => x.ErrorMessage).ShouldContain("A user with the email already exists in the database");
        }
示例#2
0
        public void ShouldNotEditIfUserDoesNotExists()
        {
            var testUserNotInSystem = new AdminAppUser
            {
                Email    = $"testuser{Guid.NewGuid():N}@test.com",
                UserName = $"testuser{Guid.NewGuid():N}@test.com"
            };

            var testInstances = SetupOdsInstanceRegistrations(5).OrderBy(x => x.Name).ToList();

            var updateModel = new EditOdsInstanceRegistrationForUserModel
            {
                UserId = testUserNotInSystem.Id,
                OdsInstanceRegistrations = testInstances.Select(x => new OdsInstanceRegistrationSelection
                {
                    Name = x.Name,
                    OdsInstanceRegistrationId = x.Id,
                    Selected = true
                }).ToList()
            };

            var validator         = new EditOdsInstanceRegistrationForUserModelValidator(SetupContext);
            var validationResults = validator.Validate(updateModel);

            validationResults.IsValid.ShouldBe(false);
            validationResults.Errors.Select(x => x.ErrorMessage).ShouldContain("The user you are trying to edit does not exist in the database.");
        }
示例#3
0
 public static void SaveAdminAppUser(AdminAppUser user)
 {
     using (var database = AdminAppIdentityDbContext.Create())
     {
         database.Set <AdminAppUser>().Add(user);
         database.SaveChanges();
     }
 }
示例#4
0
 public static void SaveAdminAppUser(AdminAppUser user)
 {
     Scoped <AdminAppIdentityDbContext>(database =>
     {
         database.Set <AdminAppUser>().Add(user);
         database.SaveChanges();
     });
 }
示例#5
0
        public async Task <(AdminAppUser user, IdentityResult result)> Execute(IRegisterModel userModel, UserManager <AdminAppUser> userManager)
        {
            var user = new AdminAppUser {
                UserName = userModel.Email, Email = userModel.Email
            };
            var result = await userManager.CreateAsync(user, userModel.Password);

            return(user : user, result : result);
        }
示例#6
0
        public async Task <(string userId, IdentityResult result)> Execute(IAddUserModel userModel, UserManager <AdminAppUser> userManager)
        {
            var user = new AdminAppUser {
                UserName = userModel.Email, Email = userModel.Email, RequirePasswordChange = true
            };
            var result = await userManager.CreateAsync(user, userModel.Password);

            return(userId : user.Id, result : result);
        }
示例#7
0
        public static AdminAppUserContext GetMockUserContext(AdminAppUser user = null, Role userRole = null)
        {
            var userContext = new AdminAppUserContext();

            if (user != null)
            {
                userContext.User = user;
            }
            if (userRole != null)
            {
                userContext.Permissions = RolePermission.GetPermissions(userRole.Value.ToString());
            }

            return(userContext);
        }
        private static bool TryQueryUser(string userId, out AdminAppUser user)
        {
            AdminAppUser userLookup;

            using (var dbContext = AdminAppIdentityDbContext.Create())
            {
                userLookup = dbContext.Users.Include(x => x.Roles).SingleOrDefault(x => x.Id == userId);
            }

            if (userLookup != null)
            {
                user = userLookup;
                return(true);
            }

            user = null;
            return(false);
        }
        public async Task NotifyWhenEnabled(AdminAppUser user)
        {
            try
            {
                var productImprovementEnabled       = _applicationConfigurationService.IsProductImprovementEnabled(out var productRegistrationId);
                var productRegistrationUrlAvailable = !string.IsNullOrEmpty(_productRegistrationUrl);
                var productRegistrationIdAvailable  = !string.IsNullOrEmpty(productRegistrationId);

                if (productImprovementEnabled && productRegistrationUrlAvailable && productRegistrationIdAvailable)
                {
                    await Notify(await BuildProductRegistrationModel(productRegistrationId, user));
                }
            }
            catch (Exception exception)
            {
                _logger.Warn("Could not submit product registration. This notice is merely diagnostic " +
                             "and does not limit Admin App functionality.", exception);
            }
        }
        public void ShouldNotDeleteIfUserDoesNotExists()
        {
            var superAdminUser = SetupUsers(1, Role.SuperAdmin).Single();

            var testUserNotInSystem = new AdminAppUser
            {
                Email    = $"testuser{Guid.NewGuid():N}@test.com",
                UserName = $"testuser{Guid.NewGuid():N}@test.com"
            };

            var deleteModel = new DeleteUserModel
            {
                Email  = testUserNotInSystem.Email,
                UserId = testUserNotInSystem.Id
            };

            var validator = new DeleteUserModelValidator(GetMockUserContext(superAdminUser, Role.SuperAdmin));

            validator.ShouldNotValidate(deleteModel,
                                        "The user you are trying to delete does not exist in the database.");
        }
示例#11
0
        public void ShouldNotEditRoleIfUserDoesNotExists()
        {
            var testUserNotInSystem = new AdminAppUser
            {
                Email    = $"testuser{Guid.NewGuid():N}@test.com",
                UserName = $"testuser{Guid.NewGuid():N}@test.com"
            };

            var updateModel = new EditUserRoleModel
            {
                UserId = testUserNotInSystem.Id,
                RoleId = Role.Admin.Value.ToString(),
                Email  = testUserNotInSystem.Email
            };

            var validator         = new EditUserRoleModelValidator(GetMockUserContext(testUserNotInSystem, Role.Admin));
            var validationResults = validator.Validate(updateModel);

            validationResults.IsValid.ShouldBe(false);
            validationResults.Errors.Select(x => x.ErrorMessage).ShouldContain("The user you are trying to edit does not exist in the database.");
        }
        private async Task <ProductRegistrationModel> BuildProductRegistrationModel(string productRegistrationId, AdminAppUser user)
        {
            var singleOdsApiConnection = new ProductRegistrationModel.OdsApiConnection
            {
                OdsApiVersion = await OdsApiVersion(),
                OdsApiMode    = _odsApiMode,
                InstanceCount = InstanceCount()
            };

            return(new ProductRegistrationModel
            {
                ProductRegistrationId = productRegistrationId,

                // Naturally Admin App always has 1 connection. This property supports an array
                // in case other Ed-Fi applications need to report multiple connections using the
                // same JSON model.
                OdsApiConnections = new[] { singleOdsApiConnection },

                ProductVersion = ProductVersion(),
                OsVersion = OsVersion(),
                DatabaseVersion = DatabaseVersion(),
                HostName = HostName(),
                UserId = user?.Id ?? "",
                UserName = user?.UserName ?? "",
                UtcTimeStamp = DateTime.UtcNow
            });
        }