public async Task PostTest(int expectedStatus)
        {
            var strongPassword = true;
            Mock <IRepository <UserData> >       mockRepoistory = new Mock <IRepository <UserData> >();
            Mock <IPasswordStrengthValidator>    mockValidator  = new Mock <IPasswordStrengthValidator>();
            Mock <ILogger <UserDataController> > mockLogger     = new Mock <ILogger <UserDataController> >();
            var controller   = new UserDataController(mockLogger.Object, mockRepoistory.Object, mockValidator.Object);
            var email        = "*****@*****.**";
            var password     = "******";
            var passwordHash = "";
            var request      = new AddUserRequest {
                Email = email, Password = password
            };

            switch (expectedStatus)
            {
            case StatusCodes.Status201Created:
                var userData = new UserData {
                    Email = email, PasswordHash = passwordHash
                };
                mockRepoistory.Setup(repository => repository.Insert(It.IsAny <UserData>())).Verifiable();
                break;

            case StatusCodes.Status400BadRequest:
                strongPassword = false;
                break;

            case StatusCodes.Status500InternalServerError:
                mockRepoistory.Setup(repository => repository.Insert(It.IsAny <UserData>())).Throws(new Exception("Already exists"));
                break;
            }

            mockValidator.Setup(validator => validator.IsStrongPassword(password)).Returns(strongPassword).Verifiable();

            var result = await controller.Post(request);

            Assert.IsAssignableFrom <ActionResult <PostResponse> >(result);
            var objectResult = result.Result as ObjectResult;
            var postResponse = objectResult.Value as PostResponse;

            Assert.Equal(expectedStatus, objectResult.StatusCode);

            switch (expectedStatus)
            {
            case StatusCodes.Status201Created:
                Assert.True(postResponse.Success);
                Assert.Equal($"User {email} added", postResponse.Message);
                break;

            case StatusCodes.Status400BadRequest:
                Assert.False(postResponse.Success);
                Assert.Equal("Invalid Password", postResponse.Message);
                break;

            case StatusCodes.Status500InternalServerError:
                Assert.False(postResponse.Success);
                Assert.Equal("Already exists", postResponse.Message);
                break;
            }
        }