public async Task PermissionsService_GetUserPermissionsAsync_ReturnsMultipleRolesAndPermissionsForUser() { var permissionsDataProviderLogger = new Moq.Mock <ILogger <PermissionsDataProvider> >().Object; var permissionsServiceLogger = new Moq.Mock <ILogger <PermissionsService> >().Object; var groupDataProvider = new Moq.Mock <IGroupDataProvider>().Object; var cts = new CancellationTokenSource(); var cancellationToken = cts.Token; var userId = Guid.NewGuid(); var rolesDataProvider = new Mock <IRolesDataProvider>(); IPermissionsDataProvider permissionsDataProvider = new PermissionsDataProvider(permissionsDataProviderLogger); var userRolesResponse = new List <string> { "Standard Members", "Admin" }; rolesDataProvider.Setup(x => x.GetUserRolesAsync(userId, cancellationToken)) .ReturnsAsync(userRolesResponse); var permissionsService = new PermissionsService(rolesDataProvider.Object, permissionsDataProvider, permissionsServiceLogger, groupDataProvider); var permissions = await permissionsService.GetUserPermissionsAsync(userId, cancellationToken); Assert.IsTrue(permissions.Any(x => x == "https://schema.collaborate.future.nhs.uk/admin/v1/view")); }
public async Task PermissionsService_GetUserPermissionsAsync_ReturnsGuestRoleIfUserNotFound() { var permissionsDataProviderLogger = new Moq.Mock <ILogger <PermissionsDataProvider> >().Object; var permissionsServiceLogger = new Moq.Mock <ILogger <PermissionsService> >().Object; var groupDataProvider = new Moq.Mock <IGroupDataProvider>().Object; var cts = new CancellationTokenSource(); var cancellationToken = cts.Token; var userId = Guid.NewGuid(); var rolesDataProvider = new Mock <IRolesDataProvider>(); IPermissionsDataProvider permissionsDataProvider = new PermissionsDataProvider(permissionsDataProviderLogger); List <string>?userRolesResponse = null; rolesDataProvider.Setup(x => x.GetUserRolesAsync(userId, cancellationToken)) .ReturnsAsync(userRolesResponse); var permissionsService = new PermissionsService(rolesDataProvider.Object, permissionsDataProvider, permissionsServiceLogger, groupDataProvider); var permissions = await permissionsService.GetUserPermissionsAsync(userId, cancellationToken); Assert.IsTrue(permissions is null); }
public async Task PermissionsService_GetUserPermissionsForGroupAsync_ReturnsGuestIfUserNotMemberOfGroup() { var permissionsDataProviderLogger = new Moq.Mock <ILogger <PermissionsDataProvider> >().Object; var permissionsServiceLogger = new Moq.Mock <ILogger <PermissionsService> >().Object; var groupDataProvider = new Moq.Mock <IGroupDataProvider>().Object; var cts = new CancellationTokenSource(); var cancellationToken = cts.Token; var userId = Guid.NewGuid(); var groupId = Guid.NewGuid(); var rolesDataProvider = new Mock <IRolesDataProvider>(); IPermissionsDataProvider permissionsDataProvider = new PermissionsDataProvider(permissionsDataProviderLogger); List <string>?userRolesResponse = new List <string> { "Admin" }; List <GroupUserRole>?groupRolesResponse = new List <GroupUserRole>(); rolesDataProvider.Setup(x => x.GetUserAndGroupUserRolesAsync(userId, groupId, cancellationToken)) .ReturnsAsync(new UserAndGroupRoles(userRolesResponse, groupRolesResponse)); var permissionsService = new PermissionsService(rolesDataProvider.Object, permissionsDataProvider, permissionsServiceLogger, groupDataProvider); var userGroupPermissions = await permissionsService.GetUserPermissionsForGroupAsync(userId, groupId, string.Empty, cancellationToken); Assert.IsTrue(userGroupPermissions.Permissions.Any(x => x == "https://schema.collaborate.future.nhs.uk/groups/v1/members/add")); }
public void PermissionsService_GetUserPermissionsForGroupAsync_ThrowsIfRolesProviderNull() { var permissionsDataProviderLogger = new Moq.Mock <ILogger <PermissionsDataProvider> >().Object; var permissionsServiceLogger = new Moq.Mock <ILogger <PermissionsService> >().Object; var groupDataProvider = new Moq.Mock <IGroupDataProvider>().Object; IPermissionsDataProvider permissionsDataProvider = new PermissionsDataProvider(permissionsDataProviderLogger); _ = new PermissionsService(null, permissionsDataProvider, permissionsServiceLogger, groupDataProvider); }
public async Task PermissionsService_GetUserPermissionsForGroupAsync_ThrowsIfGroupIdEmpty() { var permissionsDataProviderLogger = new Moq.Mock <ILogger <PermissionsDataProvider> >().Object; var permissionsServiceLogger = new Moq.Mock <ILogger <PermissionsService> >().Object; var groupDataProvider = new Moq.Mock <IGroupDataProvider>().Object; var cancellationToken = CancellationToken.None; var rolesDataProvider = new Mock <IRolesDataProvider>().Object; IPermissionsDataProvider permissionsDataProvider = new PermissionsDataProvider(permissionsDataProviderLogger); var permissionsService = new PermissionsService(rolesDataProvider, permissionsDataProvider, permissionsServiceLogger, groupDataProvider); var userId = Guid.NewGuid(); var groupId = Guid.Empty; _ = await permissionsService.GetUserPermissionsForGroupAsync(userId, groupId, string.Empty, cancellationToken); }
public async Task PermissionsService_GetUserPermissionsAsync_ThrowsIfCancelled() { var permissionsDataProviderLogger = new Moq.Mock <ILogger <PermissionsDataProvider> >().Object; var permissionsServiceLogger = new Moq.Mock <ILogger <PermissionsService> >().Object; var groupDataProvider = new Moq.Mock <IGroupDataProvider>().Object; var cts = new CancellationTokenSource(); var cancellationToken = cts.Token; var rolesDataProvider = new Mock <IRolesDataProvider>().Object; IPermissionsDataProvider permissionsDataProvider = new PermissionsDataProvider(permissionsDataProviderLogger); cts.Cancel(); var permissionsService = new PermissionsService(rolesDataProvider, permissionsDataProvider, permissionsServiceLogger, groupDataProvider); var userId = Guid.NewGuid(); _ = await permissionsService.GetUserPermissionsAsync(userId, cancellationToken); }