public async Task Delete_ForInvalidUser_ShouldThrow() { int validPermissionId = (int)(Permission.VerifyToken); long invalidUserId = -1; await Assert.ThrowsAsync <InvalidOperationException>(async() => await UserPermissionsDAO.Delete(DbConnection, invalidUserId, validPermissionId)); }
public async Task Delete_ForInvalidPermission_ShouldThrow() { int invalidPermissionId = -1; long validUserId = (await UserDAOTests.CreateRandomUser(DbConnection)).Id; await Assert.ThrowsAsync <InvalidOperationException>(async() => await UserPermissionsDAO.Delete(DbConnection, validUserId, invalidPermissionId)); }
public async Task GetByUserId_ForUserWithoutPermissions_ShouldSucceed() { var user = await UserDAOTests.CreateRandomUser(DbConnection); List <UserPermission> userPermsOriginal = await UserPermissionsDAO.GetByUserId(DbConnection, user.Id); Assert.Equal(userPermsOriginal.Count, 0); }
public async Task DeactivateUser(long userId) { Log.Info($"Deactivating user {userId}"); using (var transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { await UserDAO.Deactivate(DbConnection, userId); await UserPermissionsDAO.DeleteByUser(DbConnection, userId); transactionScope.Complete(); } }
public async Task GetByUserId_ShouldSucceed() { var user = await UserDAOTests.CreateRandomUser(DbConnection); List <UserPermission> userPermsOriginal = await UserPermissionsDAO.GetByUserId(DbConnection, user.Id); Assert.Equal(userPermsOriginal.Count, 0); await UserPermissionsDAO.Create(DbConnection, user.Id, (int)(Permission.VerifyToken)); var userPermsUpdated = await UserPermissionsDAO.GetByUserId(DbConnection, user.Id); Assert.Equal(userPermsUpdated.First().UserId, user.Id); }
public async Task EnsurePermissionsForUser(long userId, HashSet <Permission> permissions) { Log.Info($"Insuring user {userId} for permissions: [{permissions}]"); using (var transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { var currentPermissions = await UserPermissionsDAO.GetByUserId(DbConnection, userId); var toAdd = permissions.Except(currentPermissions.Select(x => x.Permission)); foreach (var permission in toAdd) { await UserPermissionsDAO.Create(DbConnection, userId, (int)permission); } } }
public async Task RevokePermissionsForUser(long userId, HashSet <Permission> permissions) { Log.Info($"Remvoing permissions for user {userId} : [{permissions}]"); using (var transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { var currentPermissions = await UserPermissionsDAO.GetByUserId(DbConnection, userId); var toRemove = currentPermissions.Select(x => x.Permission).Intersect(permissions); foreach (var permission in toRemove) { await UserPermissionsDAO.Create(DbConnection, userId, (int)permission); } transactionScope.Complete(); } }
public async Task GetUserEmailsWithPermission_ShouldSucceed() { Permission testPermission = Permission.ManageAnyUser; var userA = await UserDAOTests.CreateRandomUser(DbConnection); var userB = await UserDAOTests.CreateRandomUser(DbConnection); var userC = await UserDAOTests.CreateRandomUser(DbConnection); var userD = await UserDAOTests.CreateRandomUser(DbConnection); await UserPermissionsDAO.Create(DbConnection, userA.Id, (int)testPermission); await UserPermissionsDAO.Create(DbConnection, userB.Id, (int)testPermission); await UserPermissionsDAO.Create(DbConnection, userC.Id, (int)testPermission); await UserPermissionsDAO.Create(DbConnection, userD.Id, (int)Permission.ManageSelfUser); var firstPage = await UserPermissionsDAO.GetUserEmailsWithPermission(DbConnection, new List <Permission> { testPermission }, 0, 2); Assert.Equal(firstPage.Count, 2); Assert.Equal(firstPage[0].Item1, userA.Id); Assert.Equal(firstPage[0].Item2, userA.Email); Assert.Equal(firstPage[1].Item1, userB.Id); Assert.Equal(firstPage[1].Item2, userB.Email); var nextPage = await UserPermissionsDAO.GetUserEmailsWithPermission( DbConnection, new List <Permission> { testPermission }, firstPage[1].Item1, 2); Assert.Equal(nextPage.Count, 1); Assert.Equal(nextPage[0].Item1, userC.Id); Assert.Equal(nextPage[0].Item2, userC.Email); }
public async Task <UserPermissions> GetPermissionsForUser(long userId) { var permissions = await UserPermissionsDAO.GetByUserId(DbConnection, userId); return(new UserPermissions(userId, permissions.Select(userPermission => userPermission.Permission).ToList())); }