Exemplo n.º 1
0
        public async Task AuthenticateSamlUserAsync_UserIsEnabled_ReturnsUser()
        {
            // Arrange
            var userLicense = 2;

            _sqlUserRepositoryMock.Setup(ur => ur.GetEffectiveUserLicenseAsync(It.IsAny <int>())).ReturnsAsync(userLicense);

            _instanceSettings.IsSamlEnabled = true;
            const string samlEncodedResponse = "fakeSamlResponce";

            var xml             = SerializationHelper.Serialize(new FederatedAuthenticationSettings.FASettings());
            var fedAuthSettings = new FederatedAuthenticationSettings(xml, null);

            _sqlSettingsRepositoryMock.Setup(m => m.GetFederatedAuthenticationSettingsAsync())
            .ReturnsAsync(fedAuthSettings);
            var identityMock = new Mock <IIdentity>();

            identityMock.SetupGet(p => p.Name).Returns(Login);
            var principalMock = new Mock <IPrincipal>();

            principalMock.SetupGet(p => p.Identity).Returns(identityMock.Object);

            _samlRepositoryMock.Setup(m => m.ProcessEncodedResponse(samlEncodedResponse, fedAuthSettings)).Returns(principalMock.Object);

            // Act
            var result = await _authenticationRepository.AuthenticateSamlUserAsync(samlEncodedResponse);

            // Assert
            Assert.AreEqual(_loginUser, result);
            Assert.AreEqual(userLicense, result.LicenseType);
        }
Exemplo n.º 2
0
        public async Task AuthenticateSamlUserAsync_UserIsNull_AuthenticationException()
        {
            // Arrange
            _instanceSettings.IsSamlEnabled = true;
            const string samlEncodedResponse = "fakeSamlResponce";

            var xml             = SerializationHelper.Serialize(new FederatedAuthenticationSettings.FASettings());
            var fedAuthSettings = new FederatedAuthenticationSettings(xml, null);

            _sqlSettingsRepositoryMock.Setup(m => m.GetFederatedAuthenticationSettingsAsync())
            .ReturnsAsync(fedAuthSettings);
            var identityMock = new Mock <IIdentity>();

            identityMock.SetupGet(p => p.Name).Returns("Unknown");
            var principalMock = new Mock <IPrincipal>();

            principalMock.SetupGet(p => p.Identity).Returns(identityMock.Object);

            _samlRepositoryMock.Setup(m => m.ProcessEncodedResponse(samlEncodedResponse, fedAuthSettings)).Returns(principalMock.Object);

            // Act
            await _authenticationRepository.AuthenticateSamlUserAsync(samlEncodedResponse);

            // Assert
        }
Exemplo n.º 3
0
        public async Task AuthenticateSamlUserAsync_NoDomain_ReturnsUser()
        {
            // Arrange
            var userLicense = 2;

            _sqlUserRepositoryMock.Setup(ur => ur.GetEffectiveUserLicenseAsync(It.IsAny <int>())).ReturnsAsync(userLicense);

            _instanceSettings.IsSamlEnabled = true;
            const string samlEncodedResponse = "fakeSamlResponce";
            const string customDomainName    = "TEST";

            var xml = SerializationHelper.Serialize(new FederatedAuthenticationSettings.FASettings
            {
                DomainList = new List <FederatedAuthenticationSettings.FAAllowedDomian>
                {
                    new FederatedAuthenticationSettings.FAAllowedDomian {
                        Name = customDomainName, OrderIndex = 0
                    }
                },
                IsAllowingNoDomain = true
            });
            var fedAuthSettings = new FederatedAuthenticationSettings(xml, null);

            _sqlSettingsRepositoryMock.Setup(m => m.GetFederatedAuthenticationSettingsAsync())
            .ReturnsAsync(fedAuthSettings);
            var identityMock = new Mock <IIdentity>();

            identityMock.SetupGet(p => p.Name).Returns(Login);
            var principalMock = new Mock <IPrincipal>();

            principalMock.SetupGet(p => p.Identity).Returns(identityMock.Object);
            _sqlUserRepositoryMock
            .Setup(m => m.GetUserByLoginAsync($"{customDomainName}\\{Login}"))
            .ReturnsAsync(_loginUser);

            _samlRepositoryMock.Setup(m => m.ProcessEncodedResponse(samlEncodedResponse, fedAuthSettings)).Returns(principalMock.Object);

            // Act
            var result = await _authenticationRepository.AuthenticateSamlUserAsync(samlEncodedResponse);

            // Assert
            Assert.AreEqual(_loginUser, result);
            Assert.AreEqual(userLicense, result.LicenseType);
        }
        public async Task GetFederatedAuthentication_QueryReturnsSettings_ReturnsFirst()
        {
            // Arrange
            var     cxn        = new SqlConnectionWrapperMock();
            var     repository = new SqlSettingsRepository(cxn.Object);
            var     xml        = SerializationHelper.Serialize(new FederatedAuthenticationSettings.FASettings());
            dynamic dbObject   = new ExpandoObject();

            dbObject.Settings    = xml;
            dbObject.Certificate = null;
            var expectedFedAuthSettings = new FederatedAuthenticationSettings(xml, null);
            var result = new[] { dbObject };

            cxn.SetupQueryAsync("GetFederatedAuthentications", null, result);

            // Act
            var settings = await repository.GetFederatedAuthenticationSettingsAsync();

            // Assert
            cxn.Verify();
            Assert.IsTrue(Equals(expectedFedAuthSettings, settings));
        }