예제 #1
0
        public void ShouldVerifySuccessfully()
        {
            var client      = new Services.MeshyClient(Generator.RandomString(5), Generator.RandomString(36));
            var authService = new Mock <IAuthenticationService>();
            var passedUserVerificationCheck = default(UserVerificationCheck);

            authService.Setup(x => x.VerifyAsync(It.IsAny <UserVerificationCheck>()))
            .Callback <UserVerificationCheck>((sentUserVerificationCheck) =>
            {
                passedUserVerificationCheck = sentUserVerificationCheck;
            })
            .Returns(() =>
            {
                return(Task.FromResult <object>(null));
            });

            client.AuthenticationService = authService.Object;

            var now = DateTimeOffset.Now;
            var userVerificationCheck = new UserVerificationCheck()
            {
                Expires          = now,
                Hash             = Generator.RandomString(5),
                Hint             = Generator.RandomString(5),
                Username         = Generator.RandomString(5),
                VerificationCode = Generator.RandomString(5)
            };

            client.Verify(userVerificationCheck);
            Assert.Equal(userVerificationCheck.Hash, passedUserVerificationCheck.Hash);
            Assert.Equal(userVerificationCheck.Expires, passedUserVerificationCheck.Expires);
            Assert.Equal(userVerificationCheck.Hint, passedUserVerificationCheck.Hint);
            Assert.Equal(userVerificationCheck.Username, passedUserVerificationCheck.Username);
            Assert.Equal(userVerificationCheck.VerificationCode, passedUserVerificationCheck.VerificationCode);
        }
        /// <summary>
        /// Check user hash to verify user request.
        /// </summary>
        /// <param name="userVerificationCheck">User verification check object to establish authorization.</param>
        /// <returns>Whether or not check was successful.</returns>
        public static Task <Valid> CheckHashAsync(UserVerificationCheck userVerificationCheck)
        {
            if (CurrentClient == null)
            {
                throw new InvalidOperationException("Client has not been established. Please initialize before continuing.");
            }

            return(CurrentClient.CheckHashAsync(userVerificationCheck));
        }
        /// <summary>
        /// Verify user to allow them to log in.
        /// </summary>
        /// <param name="userVerificationCheck">User verification check object to establish authorization.</param>
        public static void Verify(UserVerificationCheck userVerificationCheck)
        {
            if (CurrentClient == null)
            {
                throw new InvalidOperationException("Client has not been established. Please initialize before continuing.");
            }

            CurrentClient.Verify(userVerificationCheck);
        }
        public void ShouldCheckHashSuccessfully()
        {
            var tokenService = new Mock <ITokenService>();

            var requestService = new Mock <IRequestService>();
            var passedPath     = string.Empty;
            var passedModel    = default(UserVerificationCheck);
            var passedFormat   = RequestDataFormat.Json;

            requestService.Setup(x => x.PostRequest <Valid>(It.IsAny <string>(), It.IsAny <object>(), It.IsAny <RequestDataFormat>()))
            .Callback <string, object, RequestDataFormat>((path, model, format) =>
            {
                passedPath   = path;
                passedModel  = model as UserVerificationCheck;
                passedFormat = format;
            })
            .Returns(() =>
            {
                return(Task.FromResult(It.IsAny <Valid>()));
            });

            var service = new AuthenticationService(tokenService.Object, requestService.Object);

            var data = new UserVerificationCheck()
            {
                Expires          = DateTimeOffset.Now,
                Hash             = Generator.RandomString(5),
                Hint             = Generator.RandomString(5),
                Username         = Generator.RandomString(5),
                VerificationCode = Generator.RandomString(5)
            };

            service.CheckHashAsync(data).ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.Equal("users/checkhash", passedPath);
            Assert.Equal(data.Username, passedModel.Username);
            Assert.Equal(data.Expires, passedModel.Expires);
            Assert.Equal(data.Hash, passedModel.Hash);
            Assert.Equal(data.Hint, passedModel.Hint);

            tokenService.VerifyAll();
            requestService.VerifyAll();
        }
예제 #5
0
        public void ShouldCheckHashAsyncSuccessfully()
        {
            var client      = new Services.MeshyClient(Generator.RandomString(5), Generator.RandomString(36));
            var authService = new Mock <IAuthenticationService>();
            var passedUserVerificationCheck = default(UserVerificationCheck);

            authService.Setup(x => x.CheckHashAsync(It.IsAny <UserVerificationCheck>()))
            .Callback <UserVerificationCheck>((sentUserVerificationCheck) =>
            {
                passedUserVerificationCheck = sentUserVerificationCheck;
            })
            .Returns(() =>
            {
                return(Task.FromResult(new Valid {
                    IsValid = true
                }));
            });

            client.AuthenticationService = authService.Object;

            var now = DateTimeOffset.Now;
            var userVerificationCheck = new UserVerificationCheck()
            {
                Expires          = now,
                Hash             = Generator.RandomString(5),
                Hint             = Generator.RandomString(5),
                Username         = Generator.RandomString(5),
                VerificationCode = Generator.RandomString(5)
            };

            var result = client.CheckHashAsync(userVerificationCheck).ConfigureAwait(false).GetAwaiter().GetResult();

            Assert.True(result.IsValid);
            Assert.Equal(userVerificationCheck.Hash, passedUserVerificationCheck.Hash);
            Assert.Equal(userVerificationCheck.Expires, passedUserVerificationCheck.Expires);
            Assert.Equal(userVerificationCheck.Hint, passedUserVerificationCheck.Hint);
            Assert.Equal(userVerificationCheck.Username, passedUserVerificationCheck.Username);
            Assert.Equal(userVerificationCheck.VerificationCode, passedUserVerificationCheck.VerificationCode);
        }
예제 #6
0
 /// <inheritdoc/>
 public Task <Valid> CheckHashAsync(UserVerificationCheck userVerificationCheck)
 {
     return(this.requestService.PostRequest <Valid>("users/checkhash", userVerificationCheck));
 }
예제 #7
0
 /// <inheritdoc/>
 public Task VerifyAsync(UserVerificationCheck userVerificationCheck)
 {
     return(this.requestService.PostRequest <object>("users/verify", userVerificationCheck));
 }
예제 #8
0
 /// <inheritdoc/>
 public Task <Valid> CheckHashAsync(UserVerificationCheck userVerificationCheck)
 {
     return(this.AuthenticationService.CheckHashAsync(userVerificationCheck));
 }
예제 #9
0
        /// <inheritdoc/>
        public Valid CheckHash(UserVerificationCheck userVerificationCheck)
        {
            var t = this.CheckHashAsync(userVerificationCheck).ConfigureAwait(false).GetAwaiter();

            return(t.GetResult());
        }
예제 #10
0
 /// <inheritdoc/>
 public Task VerifyAsync(UserVerificationCheck userVerificationCheck)
 {
     return(this.AuthenticationService.VerifyAsync(userVerificationCheck));
 }
예제 #11
0
        /// <inheritdoc/>
        public void Verify(UserVerificationCheck userVerificationCheck)
        {
            var t = this.VerifyAsync(userVerificationCheck).ConfigureAwait(false).GetAwaiter();

            t.GetResult();
        }