Exemplo n.º 1
0
        public void AcquireTokenShouldReturnAuthenticated()
        {
            // arrange
            var projectRepositoryMock = new Mock <IProjectRepository>();

            projectRepositoryMock.Setup(repo => repo.FindBy(It.IsAny <Expression <Func <Project, bool> > >()))
            .Returns(new[] { new Project {
                                 ProjectGuid = _sampleGuid, Status = ProjectStatus.Active
                             } });

            projectRepositoryMock.Setup(repo => repo.GetByGuid(It.IsAny <Guid>()))
            .Returns(new Project {
                ProjectGuid = _sampleGuid, Status = ProjectStatus.Active, Id = 1
            });

            var userRepositoryMock = new Mock <IUserRepository>();

            userRepositoryMock.Setup(repo => repo.FindBy(It.IsAny <Expression <Func <User, bool> > >()))
            .Returns(new[] { new User {
                                 Login = "******", Password = "******", Status = UserStatus.Active
                             } });

            var getPoliciesFromProjectActionMock  = new Mock <IGetPoliciesFromProject>();
            var getPoliciesFromProjectFactoryMock = new Mock <IGetPoliciesFromProjectFactory>();

            getPoliciesFromProjectFactoryMock.Setup(fac => fac.Create()).Returns(getPoliciesFromProjectActionMock.Object);
            getPoliciesFromProjectActionMock.Setup(ac => ac.Invoke(It.IsAny <int>()))
            .Returns(new List <Tuple <Policy, PolicyConfiguration> >());

            var hashingServiceMock = new Mock <IHashingService>();

            hashingServiceMock.Setup(hs => hs.HashWithDatabaseSalt(It.IsAny <string>(), It.IsAny <string>()))
            .Returns("password");

            var getUserCustomDataFactoryMock = new Mock <IGetUserCustomDataListFromProjectFactory>();
            var getUserCustomDataActionMock  = new Mock <IGetUserCustomDataListFromProject>();

            getUserCustomDataFactoryMock.Setup(fac => fac.Create()).Returns(getUserCustomDataActionMock.Object);
            getUserCustomDataActionMock.Setup(ac => ac.Invoke(It.IsAny <Guid>(), It.IsAny <string>()))
            .Returns(new List <Tuple <string, string> >());

            var getUserPolicyConfigurationMock = new Mock <IGetUserPolicyConfigurationOrDefaultFromProjectFactory>();

            var jwtLibraryWrapperMock = new Mock <IJwtLibraryWrapperService>();

            jwtLibraryWrapperMock.Setup(lib => lib.Encode(It.IsAny <Dictionary <string, object> >(), It.IsAny <string>()))
            .Returns("a.b.c");

            var tokenService = new TokenService(userRepositoryMock.Object, projectRepositoryMock.Object,
                                                jwtLibraryWrapperMock.Object, _logger, getPoliciesFromProjectFactoryMock.Object,
                                                hashingServiceMock.Object, getUserCustomDataFactoryMock.Object, getUserPolicyConfigurationMock.Object);

            // act
            string jsonResult   = tokenService.AcquireToken("login", "password", _sampleGuid);
            var    deserialized = JsonConvert.DeserializeObject <JsonObject>(jsonResult);

            // assert
            Assert.Equal(JsonValues.Authenticated, deserialized.Result);
            Assert.NotNull(deserialized.Jwt);
            Assert.Null(deserialized.ErrorDetails);
        }