Beispiel #1
0
        public void TestRequirementMissing()
        {
            var request = new LoginRequest14sp4();
            var results = Validator.Validate(request);

            Assert.False(results.Success);
            Assert.IsType <FieldNotSetError>(results.Errors.Single());
        }
Beispiel #2
0
        public void TestMaxLengthSuccess()
        {
            var request = new LoginRequest14sp4()
            {
                UserId = new String('a', 161)
            };

            var results = Validator.Validate(request);

            Assert.True(results.Success);
        }
Beispiel #3
0
        public void TestMinLengthSuccess()
        {
            var request = new LoginRequest14sp4()
            {
                UserId = "a"
            };

            var results = Validator.Validate(request);

            Assert.True(results.Success);
        }
Beispiel #4
0
        public void TestRequirementMet()
        {
            var request = new LoginRequest14sp4()
            {
                UserId = "test"
            };

            var results = Validator.Validate(request);

            Assert.True(results.Success);
        }
Beispiel #5
0
        public void TestMaxLengthFailure()
        {
            var request = new LoginRequest14sp4()
            {
                UserId = new String('a', 162)
            };

            var results = Validator.Validate(request);

            Assert.False(results.Success);
            Assert.IsType <MaxLengthError>(results.Errors.Single());
        }
        /// <summary>
        /// Perform login via V14 method
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        private async Task <UserDetails> Login14Async(CancellationToken cancellationToken = default)
        {
            var authRequest = new AuthenticationRequest
            {
                UserId = _username
            };

            var authResponse = (await ExecuteCommandsAsync(new AuthenticationRequest[] { authRequest }, cancellationToken).ConfigureAwait(false)).First() as AuthenticationResponse;

            string signedPassword = null;

            if (authResponse.PasswordAlgorithm == DigitalSignatureAlgorithm.MD5)
            {
                signedPassword = Md5($"{authResponse.Nonce}:{Sha1(_password)}");
            }
            else
            {
                throw new LoginException("Only MD5 supported for signing");
            }

            var loginRequest = new LoginRequest14sp4
            {
                UserId         = _username,
                SignedPassword = signedPassword
            };

            var loginResponse = (await ExecuteCommandsAsync(new LoginRequest14sp4[] { loginRequest }, cancellationToken).ConfigureAwait(false)).First() as LoginResponse14sp4;

            return(new UserDetails
            {
                LoginType = loginResponse.LoginType.ToString(),
                Locale = loginResponse.Locale,
                Encoding = loginResponse.Encoding,
                GroupId = loginResponse.GroupId,
                ServiceProviderId = loginResponse.ServiceProviderId,
                IsEnterprise = loginResponse.IsEnterprise,
                PasswordExpiresDays = loginResponse.PasswordExpiresDays,
                UserDomain = loginResponse.UserDomain
            });
        }