public async void HandleAsync_WithOrderByRoleAscending_ReturnsSortedResults()
        {
            // Arrage
            var filter = fixture.Create <UserFilter>();
            IFindMatchingUsersDataAccess dataAccess    = CreateFakeDataAccess(filter);
            IWeeeAuthorization           authorization = AuthorizationBuilder.CreateUserWithAllRights();

            FindMatchingUsersHandler handler = new FindMatchingUsersHandler(authorization, dataAccess);

            FindMatchingUsers request = new FindMatchingUsers(1, 1000, FindMatchingUsers.OrderBy.RoleAscending, filter);

            // Act
            UserSearchDataResult response = await handler.HandleAsync(request);

            // Check the first and last results have the correct roles.
            Assert.NotNull(response);
            Assert.Equal(10, response.Results.Count);

            Assert.Collection(response.Results,
                              u => Assert.Equal("User 3", u.Id),
                              u => Assert.Equal("User 5", u.Id),
                              u => Assert.Equal("User 4", u.Id),
                              u => Assert.Equal("User 2", u.Id),
                              u => Assert.Equal("User 1", u.Id),
                              u => Assert.Equal("User 6", u.Id),
                              u => Assert.Equal("User 8", u.Id),
                              u => Assert.Equal("User 10", u.Id),
                              u => Assert.Equal("User 7", u.Id),
                              u => Assert.Equal("User 9", u.Id));
        }
        /// <summary>
        /// Creates a fake data access that returns 5 organisation users and 5 competent authority users.
        /// </summary>
        /// <returns></returns>
        private IFindMatchingUsersDataAccess CreateFakeDataAccess(UserFilter filter)
        {
            IFindMatchingUsersDataAccess dataAccess = A.Fake <IFindMatchingUsersDataAccess>();

            List <UserSearchData> organisationUsers = new List <UserSearchData>()
            {
                new UserSearchData()
                {
                    Id = "User 1", FirstName = "XGF", LastName = "RYH", Role = "N/A"
                },
                new UserSearchData()
                {
                    Id = "User 2", FirstName = "RHY", LastName = "EGJ", Role = "N/A"
                },
                new UserSearchData()
                {
                    Id = "User 3", FirstName = "GDR", LastName = "FDV", Role = "N/A"
                },
                new UserSearchData()
                {
                    Id = "User 4", FirstName = "JUK", LastName = "EEE", Role = "N/A"
                },
                new UserSearchData()
                {
                    Id = "User 5", FirstName = "HBN", LastName = "UTL", Role = "N/A"
                },
            };

            A.CallTo(() => dataAccess.GetOrganisationUsers(filter)).Returns(organisationUsers.ToArray());

            List <UserSearchData> competentAuthorityUsers = new List <UserSearchData>()
            {
                new UserSearchData()
                {
                    Id = "User 6", FirstName = "AGF", LastName = "GUI", Role = "Standard"
                },
                new UserSearchData()
                {
                    Id = "User 7", FirstName = "HTF", LastName = "HBG", Role = "Administrator"
                },
                new UserSearchData()
                {
                    Id = "User 8", FirstName = "VFE", LastName = "RDE", Role = "Standard"
                },
                new UserSearchData()
                {
                    Id = "User 9", FirstName = "TED", LastName = "SWR", Role = "Administrator"
                },
                new UserSearchData()
                {
                    Id = "User 10", FirstName = "YGR", LastName = "FTW", Role = "Standard"
                },
            };

            A.CallTo(() => dataAccess.GetCompetentAuthorityUsers(filter)).Returns(competentAuthorityUsers.ToArray());

            return(dataAccess);
        }
        public async void FindMatchingUsersHandler_WithFullNameAscendingOrdering_ReturnsResultsSortedByFullName()
        {
            // Arrage
            var filter = fixture.Create <UserFilter>();
            IFindMatchingUsersDataAccess dataAccess    = CreateFakeDataAccess(filter);
            IWeeeAuthorization           authorization = AuthorizationBuilder.CreateUserWithAllRights();

            FindMatchingUsersHandler handler = new FindMatchingUsersHandler(authorization, dataAccess);

            FindMatchingUsers request = new FindMatchingUsers(1, 1000, FindMatchingUsers.OrderBy.FullNameAscending, filter);

            // Act
            var response = await handler.HandleAsync(request);

            // Check the first and last results have the correct IDs.
            Assert.NotNull(response);
            Assert.Equal("AGF GUI", response.Results.First().FullName);
            Assert.Equal("YGR FTW", response.Results.Last().FullName);
        }
        public async void FindMatchingUsersHandler_WithInternalUser_DoesntThrowException()
        {
            // Arrage
            var filter = fixture.Create <UserFilter>();
            IFindMatchingUsersDataAccess dataAccess = CreateFakeDataAccess(filter);

            IWeeeAuthorization authorization = new AuthorizationBuilder()
                                               .AllowInternalAreaAccess()
                                               .Build();

            FindMatchingUsersHandler handler = new FindMatchingUsersHandler(authorization, dataAccess);

            FindMatchingUsers request = new FindMatchingUsers(1, 1, FindMatchingUsers.OrderBy.FullNameAscending, filter);

            // Act
            await handler.HandleAsync(request);

            // Assert
            // no exception
        }
        public async void FindMatchingUsersHandler_WithNonInternalUser_ThrowSecurityException(AuthorizationBuilder.UserType userType)
        {
            // Arrage
            IFindMatchingUsersDataAccess dataAccess = A.Fake <IFindMatchingUsersDataAccess>();
            var filter = fixture.Create <UserFilter>();

            A.CallTo(() => dataAccess.GetOrganisationUsers(filter)).Returns(new UserSearchData[5]);
            A.CallTo(() => dataAccess.GetCompetentAuthorityUsers(filter)).Returns(new UserSearchData[5]);

            IWeeeAuthorization authorization = AuthorizationBuilder.CreateFromUserType(userType);

            FindMatchingUsersHandler handler = new FindMatchingUsersHandler(authorization, dataAccess);

            FindMatchingUsers request = new FindMatchingUsers(1, 1, FindMatchingUsers.OrderBy.FullNameAscending, filter);

            // Act
            Func <Task <UserSearchDataResult> > action = () => handler.HandleAsync(request);

            // Assert
            await Assert.ThrowsAsync <SecurityException>(action);
        }
        public async void FindMatchingUsersHandler_RequestingSpecificPage_ReturnsCorrectNumberOfResults()
        {
            // Arrage
            var filter = fixture.Create <UserFilter>();
            IFindMatchingUsersDataAccess dataAccess    = CreateFakeDataAccess(filter);
            IWeeeAuthorization           authorization = AuthorizationBuilder.CreateUserWithAllRights();

            FindMatchingUsersHandler handler = new FindMatchingUsersHandler(authorization, dataAccess);

            // Page 2, where each page has 3 results.
            FindMatchingUsers request = new FindMatchingUsers(2, 3, FindMatchingUsers.OrderBy.FullNameAscending, filter);

            // Act
            var response = await handler.HandleAsync(request);

            // Assert - Check that there are 10 users in total.
            Assert.NotNull(response);
            Assert.Equal(10, response.UsersCount);

            // Assert - We asked for page 2 with 3 results, so check that only 3 results are returned.
            Assert.NotNull(response.Results);
            Assert.Equal(3, response.Results.Count);
        }
示例#7
0
 public FindMatchingUsersHandler(IWeeeAuthorization authorization, IFindMatchingUsersDataAccess dataAccess)
 {
     this.authorization = authorization;
     this.dataAccess    = dataAccess;
 }