Esempio n. 1
0
        public async Task ValidateAsyncMethod(string userUuid, string authorization, bool tryGetValueResult, bool expected)
        {
            // preparation
            var cosmos   = new Mock <ICosmos>();
            var cryption = new Mock <ICryptionService>();

            cryption.Setup(_ => _.ValidateSecret(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(true);
            var logger   = new Mock <ILogger <ValidationUserService> >();
            var instance = new ValidationUserService(cosmos.Object, cryption.Object, logger.Object);
            var request  = new Mock <HttpRequest>();
            var outValue = new StringValues(authorization);

            if (authorization == null)
            {
                outValue = new StringValues();
            }
            request.Setup(_ => _.Headers.TryGetValue(It.IsAny <string>(), out outValue))
            .Returns(tryGetValueResult);
            var user = new Mock <IUser>();

            user.Setup(_ => _.UserUuid)
            .Returns(userUuid);
            // action
            var actual = await instance.ValidateAsync(request.Object, user.Object);

            // assert
            Assert.AreEqual(expected, actual.IsValid);
            if (!expected)
            {
                Assert.AreEqual(IValidationUserService.ValidateResult.Error, actual);
            }
        }
Esempio n. 2
0
        public async Task ValidateAsyncMethodIncludeQueryError(HttpStatusCode statusCode, int resultStatusCode, System.Type resultType)
        {
            // preparation
            var cosmos    = new Mock <ICosmos>();
            var exception = new CosmosException("", statusCode, 0, "", 1.0);

            cosmos.Setup(_ => _.User.ReadItemAsync <UserModel>(It.IsAny <string>(),
                                                               It.IsAny <PartitionKey>(),
                                                               It.IsAny <ItemRequestOptions>(),
                                                               It.IsAny <CancellationToken>()))
            .ThrowsAsync(exception);
            var cryption = new Mock <ICryptionService>();

            cryption.Setup(_ => _.ValidateSecret(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(false);
            var logger   = new Mock <ILogger <ValidationUserService> >();
            var instance = new ValidationUserService(cosmos.Object, cryption.Object, logger.Object);
            var request  = new Mock <HttpRequest>();
            var outValue = new StringValues($"Bearer Value");

            request.Setup(_ => _.Headers.TryGetValue(It.IsAny <string>(), out outValue))
            .Returns(true);
            var user = new Mock <IUser>();

            user.Setup(_ => _.UserUuid)
            .Returns("XXXX");
            // action
            var actual = await instance.ValidateAsync(request.Object, user.Object);

            // assert
            Assert.AreEqual(false, actual.IsValid);
            Assert.IsNull(actual.User);
            Assert.IsInstanceOfType(actual.ErrorActionResult, resultType);
            Assert.AreEqual(resultStatusCode, ((StatusCodeResult)actual.ErrorActionResult).StatusCode);
        }
Esempio n. 3
0
 public void CreateMethod()
 {
     // preparation
     var cosmos   = new Mock <ICosmos>();
     var cryption = new Mock <ICryptionService>();
     var logger   = new Mock <ILogger <ValidationUserService> >();
     // action
     var instance = new ValidationUserService(cosmos.Object, cryption.Object, logger.Object);
 }
Esempio n. 4
0
        public async Task ValidateAsyncMethodIncludeQuery(bool expected, HttpStatusCode statusCode, string authorizationCode)
        {
            // preparation
            var auth        = "Value";
            var isMatchAuth = auth == authorizationCode;
            var cosmos      = new Mock <ICosmos>();
            var model       = new UserModel();
            var response    = new Mock <ItemResponse <UserModel> >();

            response.Setup(_ => _.StatusCode)
            .Returns(statusCode);
            response.Setup(_ => _.Resource)
            .Returns(model);
            cosmos.Setup(_ => _.User.ReadItemAsync <UserModel>(It.IsAny <string>(),
                                                               It.IsAny <PartitionKey>(),
                                                               It.IsAny <ItemRequestOptions>(),
                                                               It.IsAny <CancellationToken>()))
            .ReturnsAsync(response.Object);
            var cryption = new Mock <ICryptionService>();

            cryption.Setup(_ => _.ValidateSecret(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(false);
            cryption.Setup(_ => _.Unprotect(It.IsAny <string>()))
            .Returns(authorizationCode);
            var logger   = new Mock <ILogger <ValidationUserService> >();
            var instance = new ValidationUserService(cosmos.Object, cryption.Object, logger.Object);
            var request  = new Mock <HttpRequest>();
            var outValue = new StringValues($"Bearer {auth}");

            request.Setup(_ => _.Headers.TryGetValue(It.IsAny <string>(), out outValue))
            .Returns(true);
            var user = new Mock <IUser>();

            user.Setup(_ => _.UserUuid)
            .Returns("XXXX");
            // action
            var actual = await instance.ValidateAsync(request.Object, user.Object);

            // assert
            Assert.AreEqual(expected, actual.IsValid);
            if (isMatchAuth)
            {
                Assert.AreEqual(model, actual.User);
                Assert.IsNull(actual.ErrorActionResult);
            }
            else
            {
                Assert.IsNull(actual.User);
                Assert.IsInstanceOfType(actual.ErrorActionResult, typeof(BadRequestResult));
            }
        }